diff --git a/.gitattributes b/.gitattributes index 441bdfe1eb..472a0b2d1f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,3 +5,8 @@ # with CRLF line endings: it fails on the first line. Windows checkouts default # to core.autocrlf=true, so keep these LF whatever the platform. *.sh text eol=lf + +# Batch files are read by cmd.exe, which tracks a byte offset into the file to +# resume after `call :label`. With LF endings that offset can land wrong and the +# label lookup fails, so keep these CRLF whatever the platform. +*.bat text eol=crlf diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 3de2a9184b..0ab9cfe41d 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -33,6 +33,8 @@ on: - 'build_linux.sh' - 'build_release_vs.bat' - 'build_release_vs2022.bat' + - 'build_win.bat' + - 'scripts/test_build_win.ps1' - 'build_release_macos.sh' - 'scripts/build_preset_cache.*' - 'scripts/flatpak/**' @@ -56,6 +58,22 @@ concurrency: jobs: + # build_win.bat ships a test suite. Run it before the Windows builds. + check_build_script: + name: Windows build script tests + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + lfs: 'false' + + # Windows PowerShell rather than pwsh: the suite drives build_win.bat + # through cmd, and the two differ in how they quote native arguments. + - name: Run the build script test suite + shell: powershell + run: .\scripts\test_build_win.ps1 + build_linux: strategy: fail-fast: false @@ -81,14 +99,16 @@ jobs: # SELF_HOSTED skips arm64 (the self-hosted Windows server is x64-only). matrix: include: ${{ fromJSON(vars.SELF_HOSTED - && '[{"arch":"x64","os":"orca-win-server"}]' - || '[{"arch":"x64","os":"windows-latest"},{"arch":"arm64","os":"windows-11-arm"}]') }} + && '[{"arch":"x64","os":"orca-win-server","compiler":"clang"}]' + || '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-arm","compiler":"clang"}]') }} + needs: check_build_script # Don't run scheduled builds on forks: - if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + if: ${{ !cancelled() && needs.check_build_script.result == 'success' && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} uses: ./.github/workflows/build_check_cache.yml with: os: ${{ matrix.os }} arch: ${{ matrix.arch }} + compiler: ${{ matrix.compiler }} build-deps-only: ${{ inputs.build-deps-only || false }} force-build: ${{ github.event_name == 'schedule' }} secrets: inherit @@ -259,20 +279,24 @@ jobs: echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV shell: bash + - name: Compute the flatpak-builder cache key + id: fp_cache_key + run: echo "key=flatpak-builder-${{ matrix.variant.arch }}-${{ hashFiles('deps/**', 'scripts/flatpak/com.orcaslicer.OrcaSlicer.yml', 'scripts/flatpak/make_deps_tar.sh') }}" >> "$GITHUB_OUTPUT" + shell: bash # Manage flatpak-builder cache externally so PRs restore but never upload - name: Restore flatpak-builder cache if: github.event_name == 'pull_request' uses: actions/cache/restore@v6 with: path: .flatpak-builder - key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }} + key: ${{ steps.fp_cache_key.outputs.key }} restore-keys: flatpak-builder-${{ matrix.variant.arch }}- - name: Save/restore flatpak-builder cache if: github.event_name != 'pull_request' uses: actions/cache@v6 with: path: .flatpak-builder - key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }} + key: ${{ steps.fp_cache_key.outputs.key }} restore-keys: flatpak-builder-${{ matrix.variant.arch }}- - name: Disable debug info for faster CI builds run: | @@ -284,6 +308,12 @@ jobs: sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \ scripts/flatpak/com.orcaslicer.OrcaSlicer.yml shell: bash + - name: Check the manifest keeps orca_deps cacheable + run: ./scripts/flatpak/check_manifest_cacheable.sh + shell: bash + - name: Pack deps/ for the Flatpak manifest + run: ./scripts/flatpak/make_deps_tar.sh + shell: bash - uses: flatpak/flatpak-github-actions/flatpak-builder@master with: bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak diff --git a/.github/workflows/build_check_cache.yml b/.github/workflows/build_check_cache.yml index b5c5b28b95..91ea51ac60 100644 --- a/.github/workflows/build_check_cache.yml +++ b/.github/workflows/build_check_cache.yml @@ -9,6 +9,10 @@ on: arch: required: false type: string + compiler: + required: false + type: string + default: msvc build-deps-only: required: false type: boolean @@ -33,10 +37,10 @@ jobs: - name: set outputs id: set_outputs env: - # Keep macOS/Windows cache keys architecture-specific. amd64 Linux passes - # no arch (key stays 'linux-clang', preserving the existing cache); - # aarch64 gets its own 'linux-clang-aarch64' key. - cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}', inputs.arch) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }} + # Anything that changes how the tree is built belongs in the key, or a job + # restores one it cannot use. Linux amd64 passes no arch deliberately, so + # 'linux-clang' keeps the cache it already has. + cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}-{1}', inputs.arch, inputs.compiler) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }} # ARM64 builds use the build-arm64 tree (see build_release_vs.bat); x64/other use build. dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || (runner.os == 'Windows' && inputs.arch == 'arm64') && '-arm64/OrcaSlicer_dep' || '/OrcaSlicer_dep' }} output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} @@ -62,6 +66,7 @@ jobs: valid-cache: ${{ needs.check_cache.outputs.valid-cache == 'true' }} os: ${{ inputs.os }} arch: ${{ inputs.arch }} + compiler: ${{ inputs.compiler }} build-deps-only: ${{ inputs.build-deps-only }} force-build: ${{ inputs.force-build }} secrets: inherit diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index f9e5c57c34..f7082a8a06 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -16,6 +16,10 @@ on: arch: required: false type: string + compiler: + required: false + type: string + default: msvc build-deps-only: required: false type: boolean @@ -135,11 +139,22 @@ jobs: choco install strawberryperl } $arch = "${{ inputs.arch }}" + # -l selects clang-cl and -x Ninja; together they build the deps with clang. + $clang = "${{ inputs.compiler }}" -eq "clang" + $flags = if ($clang) { "-l", "-x" } else { @() } + if ($clang) { + # OpenSSL builds with nmake, which needs a VC environment. + $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $vs = & $vswhere -latest -property installationPath + $devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" } + Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch" + } if ($arch -eq "arm64") { - .\build_release_vs.bat deps arm64 + .\build_release_vs.bat deps arm64 @flags .\build_release_vs.bat pack arm64 } else { - .\build_release_vs.bat deps + .\build_release_vs.bat deps @flags .\build_release_vs.bat pack } shell: pwsh @@ -204,4 +219,5 @@ jobs: cache-path: ${{ inputs.cache-path }} os: ${{ inputs.os }} arch: ${{ inputs.arch }} + compiler: ${{ inputs.compiler }} secrets: inherit diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index a9efaa7561..8e1e28db13 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -13,6 +13,10 @@ on: arch: required: false type: string + compiler: + required: false + type: string + default: msvc macos-combine-only: required: false type: boolean @@ -395,7 +399,18 @@ jobs: # "tests" builds the unit tests too; the unit_tests_windows_* jobs run them. run: | $arch = "${{ inputs.arch }}" - if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 tests } else { .\build_release_vs.bat slicer tests } + # -l selects clang-cl and -x Ninja; together they build the slicer with clang. + $clang = "${{ inputs.compiler }}" -eq "clang" + $flags = if ($clang) { "-l", "-x" } else { @() } + if ($clang) { + # Build against the same VC toolchain and SDK as the dependencies. + $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $vs = & $vswhere -latest -property installationPath + $devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" } + Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch" + } + if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 @flags tests } else { .\build_release_vs.bat slicer @flags tests } shell: pwsh - name: Build system preset cache (Windows) diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index db3ae6c4e8..b855d09da7 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -9,6 +9,10 @@ on: - release/* paths: - 'resources/profiles/**' + # The extra JSON check also validates resources/printers/bambu_filament_ids.json, + # and lives in scripts/, so a PR touching only those must still run this workflow. + - 'resources/printers/**' + - 'scripts/**' - ".github/workflows/check_profiles.yml" workflow_dispatch: @@ -64,13 +68,14 @@ jobs: set +e ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -s -l 2 2>&1 | tee ${{ runner.temp }}/validate_slice.log exit ${PIPESTATUS[0]} - # For now run filament subtype check only for BBL profiles until we fix other vendors' profiles. - - name: validate filament subtype check for BBL profiles + # All vendors' filament_id collisions were fixed (see scripts/filament_id_snapshot.json), + # so the duplicate-filament-subtype check runs tree-wide. + - name: validate filament subtype check id: validate_filament_subtypes continue-on-error: true run: | set +e - ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -v BBL -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log + ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log exit ${PIPESTATUS[0]} - name: validate custom presets @@ -217,7 +222,7 @@ jobs: fi if [ "${{ steps.validate_filament_subtypes.outcome }}" = "failure" ]; then - echo "### BBL Filament Subtype Validation Failed" + echo "### Filament Subtype Validation Failed" echo "" echo '```' head -c 30000 ${{ runner.temp }}/validate_filament_subtypes.log || echo "No output captured" diff --git a/.github/workflows/pr-label-bot.yml b/.github/workflows/pr-label-bot.yml index 1214db0776..fe74841831 100644 --- a/.github/workflows/pr-label-bot.yml +++ b/.github/workflows/pr-label-bot.yml @@ -32,13 +32,21 @@ jobs: } const allowedLabels = [ + // kind of change + 'crash', 'bug-fix', 'enhancement', - 'Localization', - 'profile', 'QoL', + 'optimization', + // area 'UI/UX', - 'dependencies' + 'profile', + 'Localization', + // infrastructure + 'build', + 'test', + 'dependencies', + 'documentation' ]; const pr = context.payload.pull_request; const labelsList = `${allowedLabels @@ -182,13 +190,21 @@ jobs: } const allowedLabels = [ + // kind of change + 'crash', 'bug-fix', 'enhancement', - 'Localization', - 'profile', 'QoL', + 'optimization', + // area 'UI/UX', - 'dependencies' + 'profile', + 'Localization', + // infrastructure + 'build', + 'test', + 'dependencies', + 'documentation' ]; const issue = context.payload.issue; diff --git a/.gitignore b/.gitignore index cdcd1c90b4..a2a1520fd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ Build Build.bat /build*/ +/out/ CMakeLists.txt.user CMakeUserPresets.json **/CMakeLists.txt.autosave @@ -51,3 +52,5 @@ internal_docs/ __pycache__/ *.pyc *.opc +/.test/ +docs/superpowers/ \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 236aa54c05..4be195b40d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,6 +25,13 @@ ctest --test-dir ./tests/libslic3r # individual suite ctest --test-dir ./tests/fff_print ``` +## Documentation + +- Docs live in `docs/`; the high-level design of a subsystem goes in `docs/HLSD/.md`. +- Describe the design as it stands — what the subsystem does, why it exists, and the constraints that shape it. Not the route that got there: no phases, task lists, status markers, or "before/after this PR" framing. +- Planning and investigation output (brainstorms, superpowers design and plan docs) stays in `docs/superpowers/`, which is gitignored. Never commit it. +- Write a doc only when the design is not evident from the code, and when a change invalidates an existing one, update it in the same PR. + ## Code Style - C++17, selective C++20. PascalCase classes, snake_case functions/variables diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f5ccbeb44..5620875d4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,33 +95,6 @@ else () add_compile_definitions("$<$:WXINSPECTOR_DISABLE>") endif () -find_package(Git) -if(DEFINED ENV{git_commit_hash} AND NOT "$ENV{git_commit_hash}" STREQUAL "") - message(STATUS "Specified git commit hash: $ENV{git_commit_hash}") - if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") - # Convert the given hash to short hash - execute_process( - COMMAND ${GIT_EXECUTABLE} rev-parse --short "$ENV{git_commit_hash}" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - else() - # No .git directory (e.g., Flatpak sandbox) — truncate directly - string(SUBSTRING "$ENV{git_commit_hash}" 0 7 GIT_COMMIT_HASH) - endif() - add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"") -elseif(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") - # Check current Git commit hash - execute_process( - COMMAND ${GIT_EXECUTABLE} log -1 --format=%h - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"") -endif() - if(DEFINED ENV{SLIC3R_STATIC}) set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC}) else() @@ -137,6 +110,7 @@ option(SLIC3R_WARNINGS "Emit compiler warnings for OrcaSlicer sources" option(SLIC3R_BUNDLED_WARNINGS "Emit compiler warnings for bundled third-party sources" 0) option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) +option(SLIC3R_RELATIVE_DEBUG_PATHS "Record a relative compilation directory in debug info (clang-cl)" 0) option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0) # Python stubgen module @@ -362,12 +336,31 @@ if (MSVC) if (SLIC3R_MSVC_COMPILE_PARALLEL AND CMAKE_GENERATOR MATCHES "Visual Studio") add_compile_options(/MP) endif () + + # Parse lambdas the way the standard says, as clang and GCC already do. Without it + # MSVC keeps its legacy lambda processor under /std:c++17 and rejects reading a + # constexpr constant inside a lambda that does not capture it (C3493), which no + # other compiler requires. Implied by /std:c++20 and /permissive-, so it is only + # needed while we are on C++17. clang-cl is conforming already and does not take + # the flag. Requires VS2019 16.8 or newer. + if (NOT IS_CLANG_CL) + # cl.exe only warns (D9002) about an unknown /Zc: option, so without this the + # flag would be dropped and the first lambda reading a constexpr constant would + # fail with C3493 far from the cause. + if (MSVC_VERSION LESS 1928) + message(FATAL_ERROR "Visual Studio 2019 16.8 (MSVC 19.28) or newer is required; detected MSVC ${MSVC_VERSION}.") + endif () + add_compile_options(/Zc:lambda) + endif () # /bigobj (Increase Number of Sections in .Obj file) + add_compile_options(-bigobj) # error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm90' or greater # Generate symbols at every build target, even for the release. # -Zm520 fixes error C3859 but forces the compiler to pre-allocate that memory for every translation unit regardless # combining /Zi with /FS frees up a significant amount of memory pressure across all parallel compile jobs and makes /MP faster overall. - add_compile_options(-bigobj /Zi /FS) + if (SLIC3R_MSVC_PDB) + add_compile_options(/Zi /FS) + endif () # Disable STL4007: Many result_type typedefs and all argument_type, first_argument_type, and second_argument_type typedefs are deprecated in C++17. #FIXME Remove this line after eigen library adapts to the new C++17 adaptor rules. add_compile_options(-D_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING) @@ -385,6 +378,16 @@ if (MSVC) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG") endif () +# Without this every object names its build directory and two worktrees never +# share cache entries. The linker still writes absolute paths into the PDB. +if (SLIC3R_RELATIVE_DEBUG_PATHS) + if (IS_CLANG_CL) + add_compile_options(-ffile-compilation-dir=.) + else () + message(WARNING "SLIC3R_RELATIVE_DEBUG_PATHS is only implemented for clang-cl") + endif () +endif () + if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15) add_compile_definitions(BOOST_NO_CXX98_FUNCTION_BASE _HAS_AUTO_PTR_ETC=0) endif() diff --git a/build_flatpak.sh b/build_flatpak.sh index b805bb3422..12ccac372b 100755 --- a/build_flatpak.sh +++ b/build_flatpak.sh @@ -260,6 +260,9 @@ if [[ ! -f "./scripts/flatpak/com.orcaslicer.OrcaSlicer.yml" ]]; then exit 1 fi +echo -e "${YELLOW}Packing deps/ for the manifest...${NC}" +./scripts/flatpak/make_deps_tar.sh + # Build the Flatpak echo -e "${YELLOW}Building Flatpak package...${NC}" echo -e "This may take a while (30+ minutes depending on your system)..." diff --git a/build_release_vs.bat b/build_release_vs.bat index a52d940455..3842f1d198 100644 --- a/build_release_vs.bat +++ b/build_release_vs.bat @@ -86,7 +86,7 @@ if "%VS_MAJOR%"=="16" ( set CMAKE_GENERATOR="Visual Studio 18 2026" ) else ( echo Error: Unsupported Visual Studio version: %VS_MAJOR% - echo Supported versions: VS2019 (16.x^), VS2022 (17.x^), VS2026 (18.x^) + echo Supported versions: VS2019 (16.8+^), VS2022 (17.x^), VS2026 (18.x^) exit /b 1 ) diff --git a/build_win.bat b/build_win.bat new file mode 100644 index 0000000000..dfb30e313b --- /dev/null +++ b/build_win.bat @@ -0,0 +1,1396 @@ +@echo off + +REM OrcaSlicer build script for Windows. Run with -h for the options. + +REM =========================================================================== +REM Script setup +REM =========================================================================== + +setlocal enableDelayedExpansion + +REM A manually set errorlevel shadows the real one, and cmd then stops +REM updating it after each command. Clear it, inside the scope above so +REM the caller keeps whatever it had. +set errorlevel= + +REM Everything here is relative to the repository root: deps/, build/ and +REM the 7z in tools/. Work from there whatever directory this was called +REM from. setlocal above restores the caller directory on exit. +cd /d "%~dp0" +set "WP=%CD%" +set "script_name=%~nx0" + +set argdefn=0 + +REM Both macros stop on a non-zero errorlevel; error_check also says so. +REM +REM error_check jumps to :die rather than calling exit /b where it stands. +REM Every use of it is inside a parenthesised block, and an exit /b there +REM ends the script but leaves the process exit code at zero, so a failed +REM build reported success. goto unwinds the block first. +set "repeat_error=if not ^!errorlevel^! == 0 exit /b ^!errorlevel^!" +set "error_check=if not ^!errorlevel^! == 0 (set rc=^!errorlevel^!& goto :die)" + +set VSWHERE="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + +REM =========================================================================== +REM Command line options +REM =========================================================================== + +call :add_section "Actions" +call :add_arg build_deps bool d deps "Download and build the dependencies, needed before -s" +call :add_arg build_slicer bool s slicer "Build OrcaSlicer" +call :add_arg build_tests bool "" tests "Build the unit tests" +call :add_arg run_tests bool "" run-tests "Build the unit tests and run them" +call :add_arg pack_deps bool p pack "Bundle the built dependencies into a zip file" +call :add_arg install_deps bool u install-deps "Install or update CMake, Perl and Git with WinGet" +call :add_arg install_vs string "" install-vs "Also install Visual Studio: buildtools or ide" +call :add_arg kill_jobs bool k kill-jobs "Kill any running build and compiler processes" +call :add_arg print_help bool h help "Print this help message" + +call :add_section "Build configuration" +call :add_arg config string "" config "release, debug, relwithdebinfo or minsizerel (default: release)" +call :add_arg target_arch string "" arch "x64 or arm64 (default: the host architecture)" +call :add_arg slicer_asan bool a asan "Build the slicer with ASAN enabled" +call :add_arg no_pch bool "" no-pch "Build without the precompiled header, implied by --cache" + +call :add_section "Toolchain" +call :add_arg use_clang_cl bool l clang-cl "Use clang-cl as the compiler" +call :add_arg use_msvc bool "" msvc "Use cl as the compiler (default)" +call :add_arg use_ninja bool x ninja "Use the Ninja Multi-Config generator" +call :add_arg use_msbuild bool "" msbuild "Use the Visual Studio generator (default)" +call :add_arg vs_version string "" vs "Visual Studio release: 2019, 2022 or 2026 (default: autodetect)" +call :add_arg clang_path string "" clang-path "Path to clang-cl.exe, requires -x (default: the one from Visual Studio)" +call :add_arg cache string "" cache "Compiler cache: ccache, sccache or off, requires -l -x (default: off)" + +call :add_section "How much gets rebuilt" +call :add_arg slicer_target string "" slicer-target "Build one slicer target instead of all, e.g. libslic3r" +call :add_arg deps_target string t deps-target "Build one dependency instead of all, e.g. dep_Boost" +call :add_arg no_configure bool "" no-configure "Build the existing tree without configuring" +call :add_arg no_gettext bool "" no-gettext "Skip regenerating the translations" +call :add_arg install_slicer bool i install "Install into the build tree's OrcaSlicer folder" +call :add_arg jobs string j jobs "Limit the build to N parallel jobs" +call :add_arg clean bool c clean "Remove the trees this run builds, deps with -d, slicer with -s" + +call :add_section "Paths and extra arguments" +call :add_arg deps_dir string "" deps-dir "Dependency tree to build in or use, instead of the one named for this build" +call :add_arg slicer_dir string "" build-dir "Slicer build directory, instead of the one named for this build" +call :add_arg deps_args rawstring "" deps-args "Extra arguments for the deps configure, quoted" +call :add_arg slicer_args rawstring "" slicer-args "Extra arguments for the slicer configure, quoted" + +call :add_section "Diagnostics" +call :add_arg verbose bool v verbose "Show the compiler command lines" +call :add_arg dry_run bool D dry-run "Print the commands instead of running them" + +REM =========================================================================== +REM Lookup tables +REM =========================================================================== + +REM Known build configurations: the CMake build type, the directory to build +REM in, and the dependency tree to build against. Adding one means adding all +REM three entries in its group. The name is matched case-insensitively because +REM batch variable names are, so --config Debug finds cfg_type_debug. +REM +REM Release, RelWithDebInfo and MinSizeRel all link the /MD dependencies, so +REM they share one tree rather than each paying for its own. Debug needs /MDd +REM and cannot. deps/CMakeLists.txt makes the same split: only Debug turns on +REM DEP_DEBUG, while RelWithDebInfo just adds debug info to a release build. +set "cfg_type_release=Release" +set "cfg_dir_release=build" +set "cfg_dep_release=build" + +set "cfg_type_debug=Debug" +set "cfg_dir_debug=build-dbg" +set "cfg_dep_debug=build-dbg" + +set "cfg_type_relwithdebinfo=RelWithDebInfo" +set "cfg_dir_relwithdebinfo=build-dbginfo" +set "cfg_dep_relwithdebinfo=build" + +set "cfg_type_minsizerel=MinSizeRel" +set "cfg_dir_minsizerel=build-minsize" +set "cfg_dep_minsizerel=build" + +set "cfg_default=release" + +REM Known Visual Studio releases: the generator name, the suffix in the +REM WinGet id, and the major version vswhere and msbuild report. Adding a +REM release means adding all three entries in its group. +set "vs_gen_2019=Visual Studio 16 2019" +set "vs_winget_2019=.2019" +set "vs_year_16=2019" + +set "vs_gen_2022=Visual Studio 17 2022" +set "vs_winget_2022=.2022" +set "vs_year_17=2022" + +REM 2026 is the unversioned WinGet id: there is no Microsoft.VisualStudio.2026. +set "vs_gen_2026=Visual Studio 18 2026" +set "vs_winget_2026=" +set "vs_year_18=2026" + +set "vs_default=2026" + +REM What --install-vs asks WinGet for. +set "vs_edition_buildtools=BuildTools" +set "vs_edition_ide=Community" + +REM =========================================================================== +REM Command line handling +REM =========================================================================== + +call :handle_args %* +%error_check% + +if "%debugscript%" == "ON" ( + set /A range_end = %argdefn% - 1 + for /L %%i in (0, 1, !range_end!) do ( + call :echo_var !argdefs[%%i].VARIABLE_NAME! + ) +) + +if "%~1" == "" ( + set print_help=ON + goto :before_print_help +) + +set "all_args=%*" +if "%all_args:"=%" == "" ( + set print_help=ON +) + +:before_print_help + +if "%print_help%" == "ON" ( + call :print_help_msg + exit /b 0 +) + +REM Say so before the first + line scrolls past. +if "%dry_run%" == "ON" echo Dry run: printing commands without running them. + +if "%kill_jobs%" == "ON" ( + echo Stopping build processes. + call :kill_image MSBuild.exe + call :kill_image ninja.exe + call :kill_image cl.exe + call :kill_image clang-cl.exe + exit /b 0 +) + +REM Neither test option can happen without building the slicer, so asking for +REM one asks for that, unless another action was already named. +if "%build_deps%%build_slicer%%pack_deps%%install_deps%%install_vs%" == "" ( + if "%build_tests%" == "ON" set "build_slicer=ON" + if "%run_tests%" == "ON" set "build_slicer=ON" +) + +REM Options like --config or -j only shape a build. Without one of the actions +REM there is nothing for them to shape, so say so rather than resolving a whole +REM build and reporting it took no time. The block above may have added one. +if "%build_deps%%build_slicer%%pack_deps%%install_deps%%install_vs%" == "" ( + echo Nothing to do. Pick an action: -d, -s, -p or -u. Run -h for the full list. + exit /b 1 +) + +REM =========================================================================== +REM Visual Studio and target architecture +REM =========================================================================== + +REM Asking for Visual Studio is asking to install prerequisites. Resolve the +REM edition here rather than testing whether the name is defined: `if defined` +REM stops at the first space, so "ide " would pass and then expand to nothing. +set "vs_edition=" +if not "%install_vs%" == "" ( + set "install_deps=ON" + set "vs_edition=!vs_edition_%install_vs%!" + if "!vs_edition!" == "" ( + echo Unknown Visual Studio edition "%install_vs%". Known editions: buildtools, ide. + exit /b 1 + ) +) +REM Autodetection overwrites vs_version, so snapshot whether it was pinned. +set "vs_pinned=%vs_version%" + +if not "%vs_version%" == "" if "%use_ninja%" == "ON" ( + echo --vs and --ninja select different generators. + exit /b 1 +) +REM install(TARGETS OrcaSlicer) carries no OPTIONAL, so installing a tree +REM whose executable was never built fails. Say so before the build starts. +if "%build_slicer%" == "ON" if "%install_slicer%" == "ON" if not "%slicer_target%" == "" if /I not "%slicer_target%" == "OrcaSlicer" ( + echo --install needs the executable, but --slicer-target names "%slicer_target%". + exit /b 1 +) +if not "%vs_version%" == "" if "!vs_gen_%vs_version%!" == "" ( + echo Unknown Visual Studio release "%vs_version%". Known releases: 2019, 2022, 2026. + exit /b 1 +) + +call :autodetect_vs +%error_check% + +REM autodetect leaves this empty when it finds nothing usable. +if "%vs_version%" == "" set "vs_version=%vs_default%" + +REM Default to the host CPU. PROCESSOR_ARCHITEW6432 covers a 32-bit shell on +REM a 64-bit OS, where PROCESSOR_ARCHITECTURE reads x86. +set arch=x64 +if /I "%PROCESSOR_ARCHITECTURE%" == "ARM64" set arch=ARM64 +if /I "%PROCESSOR_ARCHITEW6432%" == "ARM64" set arch=ARM64 +if not "%target_arch%" == "" ( + if /I "%target_arch%" == "arm64" ( + set arch=ARM64 + ) else ( + if /I "%target_arch%" == "x64" ( + set arch=x64 + ) else ( + echo Unknown architecture "%target_arch%". Expected x64 or arm64. + exit /b 1 + ) + ) +) + +REM =========================================================================== +REM Installing prerequisites +REM =========================================================================== + +if "%install_deps%" == "ON" ( + where winget >nul 2>nul + if not !errorlevel! == 0 ( + echo WinGet was not found + exit /b 1 + ) + REM Keep going after one failure so the rest still get installed, then + REM name the ones that did not rather than claiming they all did. + set "install_failed=" + set "winget_args=-e --source=winget" + if not "%install_vs%" == "" ( + set "vs_year=!vs_winget_%vs_version%!" + set "ide_component_flag=" + if /I "%install_vs%" == "ide" set "ide_component_flag=Microsoft.VisualStudio.Component.VC.CoreIde" + REM Two components: the clang-cl compiler itself, and the MSBuild + REM toolset that lets the Visual Studio generator drive it. One + REM install covers both x64 and ARM64. + set "clang_cl_flag=" + if "%use_clang_cl%" == "ON" set "clang_cl_flag=Microsoft.VisualStudio.Component.VC.Llvm.Clang Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset" + REM The x64 tools build the host tooling either way; targeting ARM64 + REM needs its own toolset on top of them. + set "arm64_tools_flag=" + if /I "%arch%" == "ARM64" set "arm64_tools_flag=Microsoft.VisualStudio.Component.VC.Tools.ARM64" + call :print_and_run winget install !winget_args! --id=Microsoft.VisualStudio!vs_year!.!vs_edition! --force --custom "--add !ide_component_flag! Microsoft.VisualStudio.Component.VC.Tools.x86.x64 !arm64_tools_flag! Microsoft.VisualStudio.Component.VC.CMake.Project Microsoft.VisualStudio.Component.Windows11SDK.22621 !clang_cl_flag!" + call :note_failed "Visual Studio" !errorlevel! + ) + + REM CMake 4 dropped pre-3.5 policy support and ships incomplete ASM_ARMASM + REM linker modules, which breaks Boost.Context on ARM64. CI pins the same way. + set "cmake_version_flag=" + if /I "%arch%" == "ARM64" set "cmake_version_flag=--version 3.31.8" + call :print_and_run winget install !winget_args! --id=Kitware.CMake !cmake_version_flag! + call :note_failed CMake !errorlevel! + call :print_and_run winget install !winget_args! --id=StrawberryPerl.StrawberryPerl + call :note_failed Perl !errorlevel! + call :print_and_run winget install !winget_args! --id=Git.Git + call :note_failed Git !errorlevel! + + if defined install_failed ( + set "die_reason=Failed to install:!install_failed!" + set rc=1 + goto :die + ) + + REM Flags to repeat back in the deferred build command. + set "next_flags=" + if "%use_clang_cl%" == "ON" set "next_flags=!next_flags! -l" + if "%use_ninja%" == "ON" set "next_flags=!next_flags! -x" + if not "%target_arch%" == "" set "next_flags=!next_flags! --arch %target_arch%" + + REM Name the build that was deferred, not a fuller one. + set "next_actions=" + if "%build_deps%" == "ON" set "next_actions=!next_actions!d" + if "%build_slicer%" == "ON" set "next_actions=!next_actions!s" + if "%pack_deps%" == "ON" set "next_actions=!next_actions!p" + if "!next_actions!" == "" set "next_actions=ds" + + echo. + echo ------------------------------------------------------------- + REM A dry run installed nothing, so do not report that it did. + if "%dry_run%" == "ON" ( + echo Dry run: nothing was installed. + ) else ( + echo Installed the prerequisites. + ) + echo. + echo Next + REM The new PATH cannot reach this shell, so the build runs in the next one. + echo Restart this shell so the new PATH takes effect, then + echo build_win.bat -!next_actions!!next_flags! + echo ------------------------------------------------------------- + exit /b 0 +) + +REM =========================================================================== +REM Resolving the build +REM =========================================================================== + +REM A value ending in a backslash escapes the closing quote when it is +REM spliced into a command line: -B "D:\tree\" reaches cmake as D:\tree" +REM and swallows the argument after it. No path here needs one. +call :trim_slash deps_dir +call :trim_slash slicer_dir +call :trim_slash clang_path + +REM Naming a specific clang-cl is naming clang-cl. Doing it before the +REM conflict check below means --clang-path with --msvc is caught there. +if not "%clang_path%" == "" set "use_clang_cl=ON" +if not "%clang_path%" == "" if not exist "%clang_path%" ( + echo No clang-cl at "%clang_path%". + exit /b 1 +) +REM A trailing backslash matches directories only, and a directory would +REM otherwise reach CMake as the compiler. +if not "%clang_path%" == "" if exist "%clang_path%\" ( + echo "%clang_path%" is a directory. Name clang-cl.exe itself. + exit /b 1 +) + +REM Naming a default explicitly is fine; naming both sides is not. +if "%use_clang_cl%" == "ON" if "%use_msvc%" == "ON" ( + echo --clang-cl and --msvc select different compilers. + exit /b 1 +) +if "%use_ninja%" == "ON" if "%use_msbuild%" == "ON" ( + echo --ninja and --msbuild select different generators. + exit /b 1 +) + +set "generator=!vs_gen_%vs_version%!" +if "%use_ninja%" == "ON" ( + set "generator=Ninja Multi-Config" + call :setup_dev_env + %error_check% + set "using_ninja=ON" +) + +call :resolve_clang_cl +%repeat_error% + +if "%using_ninja%" == "ON" ( + if "%use_clang_cl%" == "ON" ( + REM Quoted, because the resolved path has spaces in it. + set "gen_args=-DCMAKE_C_COMPILER="!clang_exe!" -DCMAKE_CXX_COMPILER="!clang_exe!"" + ) +) else ( + set "gen_args=-A !arch!" + if "%use_clang_cl%" == "ON" ( + set "gen_args=!gen_args! -T ClangCL" + ) +) + +if not "%clang_path%" == "" if not "%using_ninja%" == "ON" ( + echo --clang-path needs the Ninja generator; add -x. The Visual Studio + echo generator builds clang-cl through its own ClangCL toolset. + exit /b 1 +) + +set "cache_args=" +if "%cache%" == "" goto :cache_ready +if /I "%cache%" == "off" goto :cache_ready +if /I "%cache%" == "ccache" goto :cache_named +if /I "%cache%" == "sccache" goto :cache_named +echo Unknown --cache value "%cache%". Expected ccache, sccache or off. +exit /b 1 + +REM CMake accepts a compiler launcher under any generator but only runs it +REM under Makefile and Ninja. ccache also refuses cl.exe because the build +REM passes /Zi. +:cache_named +REM Only a configure records the launcher, so --no-configure needs none. +if "%no_configure%" == "ON" goto :cache_ready +if "%build_deps%%build_slicer%" == "" goto :cache_ready +if not "%using_ninja%" == "ON" goto :cache_needs_clang +if not "%use_clang_cl%" == "ON" goto :cache_needs_clang +goto :cache_tool + +:cache_needs_clang +echo --cache needs clang-cl and Ninja; add -l -x. +exit /b 1 + +REM Name a full path, so the recorded launcher does not depend on PATH. +:cache_tool +set "cache_exe=" +for /f "tokens=*" %%i in ('where %cache% 2^>nul') do ( + if not defined cache_exe set "cache_exe=%%i" +) +if not defined cache_exe ( + echo %cache% is not on PATH. Install it, or leave --cache off. + exit /b 1 +) +REM Forward slashes, so CMake does not read a backslash as an escape. +set "cache_exe=%cache_exe:\=/%" +set "cache_args=-DCMAKE_C_COMPILER_LAUNCHER="%cache_exe%" -DCMAKE_CXX_COMPILER_LAUNCHER="%cache_exe%"" +REM Neither cache stores a compile that uses a precompiled header. sccache +REM refuses /Fp outright. ccache does too unless its sloppiness is loosened, +REM and even then most hits fall back to the slower preprocessed mode. +set "no_pch=ON" + +:cache_ready + +REM Ninja prints [123/456] by default, which says nothing about how far +REM along it is or how long is left. %p is a percentage, %w and %W are +REM elapsed and remaining, but those two arrived in ninja 1.12 and an +REM unknown placeholder is fatal rather than a warning, so an older ninja +REM would abort the build instead of degrading. Ask which one is on PATH. +REM Keep %p first inside the brackets: VS Code reads the first digits% +REM it finds there to drive its progress bar. +if "%using_ninja%" == "ON" if not defined NINJA_STATUS ( + set "nj_major=0" + set "nj_minor=0" + for /f "tokens=1,2 delims=." %%a in ('ninja --version 2^>nul') do ( + set "nj_major=%%a" + set "nj_minor=%%b" + ) + set "NINJA_STATUS=[%%s/%%t %%p :: %%e] " + if !nj_major! GTR 1 set "NINJA_STATUS=[%%f/%%t %%p :: %%w / %%W] " + if !nj_major! EQU 1 if !nj_minor! GEQ 12 set "NINJA_STATUS=[%%f/%%t %%p :: %%w / %%W] " +) +if "%verbose%" == "ON" if defined NINJA_STATUS echo Ninja progress format: !NINJA_STATUS! + +if "%deps_target%" == "" ( + set "deps_target=deps" +) + +REM Only the builds need CMake. -p zips an existing tree with 7z. +if "%build_deps%%build_slicer%" == "" goto :cmake_ready + +cmake --version >nul 2>nul +if not !errorlevel! == 0 ( + echo CMake was not found. Have you installed the system dependencies? + exit /b 1 +) + +REM Strawberry Perl ships a c/bin full of GNU tools, and the top-level +REM CMakeLists refuses to configure when it precedes CMake on PATH. Put a +REM real CMake first, skipping any hit from Strawberry's own cmake.exe, or +REM this pins exactly the order it is meant to undo. The findstr needle +REM must not end in a backslash, which escapes the quote and matches nothing. +set "cmake_bin=" +for /f "delims=" %%i in ('where cmake 2^>nul') do ( + if not defined cmake_bin ( + echo %%~dpi| findstr /i /c:"\Strawberry\c\bin" >nul || set "cmake_bin=%%~dpi" + ) +) +if defined cmake_bin set "PATH=%cmake_bin%;%PATH%" +:cmake_ready + +if "%config%" == "" set "config=%cfg_default%" + +REM Judge what the lookup returned rather than whether the name is defined. +REM "release " passed `if defined` and then expanded to nothing, leaving an +REM empty build directory for --clean to remove. +set "build_type=!cfg_type_%config%!" +set "tree_name=!cfg_dir_%config%!" +set "dep_name=!cfg_dep_%config%!" +set "bad_config=" +if "!build_type!" == "" set "bad_config=ON" +if "!tree_name!" == "" set "bad_config=ON" +if "!dep_name!" == "" set "bad_config=ON" +if defined bad_config ( + echo Unknown configuration "%config%". Known configurations: release, debug, relwithdebinfo, minsizerel. + exit /b 1 +) + +REM A tree is only good for the configuration, compiler and architecture it +REM was made with. Change one underneath it and CMake resets its cache and +REM carries on, leaving ExternalProject stamps from the old toolchain and +REM sub-builds that fail scattershot on things that build fine from scratch. +REM So name the tree for all three. MSVC x64 keeps the historical names. +if "%use_clang_cl%" == "ON" set "tree_name=!tree_name!-clang" +if /I "%arch%" == "ARM64" set "tree_name=!tree_name!-arm64" +if "%use_clang_cl%" == "ON" set "dep_name=!dep_name!-clang" +if /I "%arch%" == "ARM64" set "dep_name=!dep_name!-arm64" + +set "build_dir=!tree_name!" +if not "%slicer_dir%" == "" set "build_dir=%slicer_dir%" + +REM Resolve it once. --build-dir may arrive absolute, relative, or with +REM forward slashes, and anything that prints the directory has to show a +REM real path rather than one glued onto the repository root. +for %%p in ("!build_dir!") do set "build_full=%%~fp" +echo Configuration: %build_type%, %arch% +if not "%clang_exe%" == "" echo Compiler: %clang_exe% +if "%no_pch%" == "ON" echo Precompiled header: off +if not "%cache_args%" == "" echo Compiler cache: %cache_exe% + +set "SIG_FLAG=" +if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%" + +set "TESTS_FLAG=-DBUILD_TESTS=OFF" +if "%build_tests%" == "ON" set "TESTS_FLAG=-DBUILD_TESTS=ON" +if "%run_tests%" == "ON" set "TESTS_FLAG=-DBUILD_TESTS=ON" + +set "SLICER_TARGET_FLAG=" +if not "%slicer_target%" == "" set "SLICER_TARGET_FLAG=--target %slicer_target%" + +set "DEP_TREE=deps/!dep_name!" +set "DEP_TREE_PACK=%WP%\deps\!dep_name!" +set "DEP_TREE_FLAG=" +if not "%deps_dir%" == "" ( + set "DEP_TREE=%deps_dir%" + set "DEP_TREE_PACK=%deps_dir%" + set "DEP_TREE_FLAG=-DDEP_BUILD_DIR="%deps_dir%"" +) + +REM CMakeLists derives DEP_BUILD_DIR from the build directory NAME, which is +REM wrong whenever the build tree and the dependency tree are named +REM differently, as they are for every configuration that shares the release +REM dependencies. Name it outright once the two stop matching. +if "!DEP_TREE_FLAG!" == "" if not "%build_dir%" == "!dep_name!" ( + set "DEP_TREE_FLAG=-DDEP_BUILD_DIR="%WP%\deps\!dep_name!"" +) + +set "VERBOSE_FLAG=" +if "%verbose%" == "ON" set "VERBOSE_FLAG=--verbose" + +REM The two generators count differently. +REM +REM Ninja counts compilers, so -j is exact. The deps superbuild reads +REM CMAKE_BUILD_PARALLEL_LEVEL for the sub-builds it drives. +REM +REM MSBuild turns -j into /m, which counts projects, not compilers: /MP still +REM runs one cl per core inside each one, so -j 1 would not give one +REM compiler. CL_MPCount sets the /MP degree instead, and MSBuild reads +REM properties from the environment, so nested deps builds inherit it. /m +REM stays at its default of one project at a time. +set "JOBS_FLAG=" +if "%jobs%" == "" goto :jobs_ready +echo %jobs%| findstr /r /c:"^[1-9][0-9]*$" >nul +if errorlevel 1 ( + echo Invalid --jobs value "%jobs%". Expected a positive integer. + exit /b 1 +) +if "%using_ninja%" == "ON" ( + set "JOBS_FLAG=-j %jobs%" + set "CMAKE_BUILD_PARALLEL_LEVEL=%jobs%" +) else ( + set "CL_MPCount=%jobs%" +) +echo Parallel jobs: %jobs% +:jobs_ready + +REM The flags that reproduce this run, for the commands the summary suggests. +REM Kept in three parts because they are not all relevant everywhere: a deps +REM retry has no use for --build-dir, and the bundle line names its own tree. +set "recall_tc=" +if "%use_clang_cl%" == "ON" set "recall_tc=!recall_tc! -l" +if "%using_ninja%" == "ON" set "recall_tc=!recall_tc! -x" +if /I not "%config%" == "%cfg_default%" set "recall_tc=!recall_tc! --config %config%" +if not "%target_arch%" == "" set "recall_tc=!recall_tc! --arch %target_arch%" +if not "%vs_pinned%" == "" set "recall_tc=!recall_tc! --vs %vs_pinned%" +if not "%clang_path%" == "" set "recall_tc=!recall_tc! --clang-path "%clang_path%"" + +set "recall_i=" +if "%install_slicer%" == "ON" set "recall_i= -i" +set "recall_dd=" +if not "%deps_dir%" == "" set "recall_dd= --deps-dir "%deps_dir%"" +set "recall_bd=" +if not "%slicer_dir%" == "" set "recall_bd= --build-dir "%slicer_dir%"" +set "recall=!recall_tc!!recall_i!!recall_dd!!recall_bd!" + +REM =========================================================================== +REM Running the build +REM =========================================================================== + +REM CMake 4 refuses a pre-3.5 policy version; several deps still ask for one. +set CMAKE_POLICY_VERSION_MINIMUM=3.5 + +set _START_TIME=%TIME% + +if "%build_deps%" == "ON" ( + REM Which stage is running, so a failure can name it and suggest a + REM retry scoped to it rather than to the whole run. + set "stage=d" + echo Building the dependencies... + + if "%clean%" == "ON" ( + call :clean_tree "!DEP_TREE!" + %error_check% + ) + + if not "!cache_args!" == "" ( + set "deps_args=!deps_args! !cache_args!" + ) + + if not "%no_configure%" == "ON" ( + call :print_and_run cmake -S deps -B "!DEP_TREE!" -G "%generator%" %gen_args% -DCMAKE_BUILD_TYPE=%build_type% !deps_args! %ORCA_DEPS_CMAKE_ARGS% + %error_check% + ) + + call :print_and_run cmake --build "!DEP_TREE!" --config %build_type% --target %deps_target% %JOBS_FLAG% %VERBOSE_FLAG% + %error_check% +) + +if "%pack_deps%" == "ON" ( + set "stage=p" + setlocal ENABLEDELAYEDEXPANSION + call :print_and_run cd /d "!DEP_TREE_PACK!" + %error_check% + REM date /t prints in the machine locale and its field order varies by + REM region, which is how the inherited parse produced YYYYDDMM. Ask for + REM an unambiguous stamp instead. powershell.exe lives under + REM System32\WindowsPowerShell rather than System32, so a trimmed PATH + REM cannot find it and the stamp comes back empty. + set "ps=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" + set "build_date=" + for /f %%d in ('!ps! -NoProfile -Command "Get-Date -Format yyyyMMdd"') do set "build_date=%%d" + if "!build_date!" == "" ( + set "die_reason=Could not read the date from !ps!." + set rc=1 + goto :die + ) + + REM A bundle is only good for what built it, so it carries the same parts + REM as the dependency tree. Release x64 on cl keeps the plain name. + set "dep_flavour=!cfg_dep_%config%!" + set "dep_flavour=!dep_flavour:build=!" + set "dep_variant=%arch%" + if "%use_clang_cl%" == "ON" set "dep_variant=!dep_variant!-clang" + set "dep_variant=!dep_variant!!dep_flavour!" + echo Packing the dependencies: OrcaSlicer_dep_win-!dep_variant!_!build_date!.zip + + REM tools\7z.exe loads its codecs from a 7z.dll, and the repo does not + REM carry one, so it can only archive on a machine that has 7-Zip + REM installed. Windows has shipped bsdtar in System32 since 10 1803 and + REM it writes an ordinary deflate zip, so fall back to that rather than + REM failing on a machine that has everything it needs. + set "zipper=" + if exist "%WP%\tools\7z.dll" set "zipper=%WP%/tools/7z.exe a" + if not defined zipper if exist "%SystemRoot%\System32\tar.exe" set "zipper=%SystemRoot%\System32\tar.exe -a -c -f" + if not defined zipper ( + set "die_reason=No archiver. tools\7z.exe needs a 7z.dll, and this Windows has no System32\tar.exe." + set "die_hint=Install 7-Zip, or copy its 7z.dll into tools\." + set rc=1 + goto :die + ) + + call :print_and_run !zipper! OrcaSlicer_dep_win-!dep_variant!_!build_date!.zip OrcaSlicer_dep + %error_check% + REM endlocal is about to discard the name, so carry the path out with it. + for %%z in ("!DEP_TREE_PACK!\OrcaSlicer_dep_win-!dep_variant!_!build_date!.zip") do endlocal & set "bundle=%%~fz" +) + +if "%build_slicer%" == "ON" ( + set "stage=s" + echo Building OrcaSlicer... + + if "%clean%" == "ON" ( + call :clean_tree "%build_dir%" + %error_check% + ) + + if "%slicer_asan%" == "ON" ( + set "slicer_args=!slicer_args! -DSLIC3R_ASAN=ON" + ) + + REM A later -DSLIC3R_PCH=ON in ORCA_SLICER_CMAKE_ARGS still wins, because + REM CMake takes the last definition on the command line. + if "%no_pch%" == "ON" ( + set "slicer_args=!slicer_args! -DSLIC3R_PCH=OFF" + ) + + if not "!cache_args!" == "" ( + REM Relative debug paths as well, so another tree can reuse the objects. + set "slicer_args=!slicer_args! !cache_args! -DSLIC3R_RELATIVE_DEBUG_PATHS=ON" + ) + + REM Configuring against a tree that was never built fails deep inside + REM package resolution. Name it here instead. Skipped when -d is about to + REM build it in this same run, and under a dry run, which configures + REM nothing and must not depend on what happens to be on the machine. + if not "%dry_run%" == "ON" if not "%no_configure%" == "ON" if not "%build_deps%" == "ON" if not exist "!DEP_TREE!\OrcaSlicer_dep\usr\local\" ( + for %%p in ("!DEP_TREE!") do set "die_reason=Dependencies not found at %%~fp" + set "die_hint=Build them with build_win.bat -d!recall!." + REM Only worth suggesting to someone who did not name a tree. + if "%deps_dir%" == "" set "die_hint=Build them with build_win.bat -d!recall!, or point --deps-dir at an existing tree." + set rc=1 + goto :die + ) + + if not "%no_configure%" == "ON" ( + call :print_and_run cmake -B "%build_dir%" -G "%generator%" %gen_args% -DORCA_TOOLS=ON %SIG_FLAG% %TESTS_FLAG% %DEP_TREE_FLAG% -DCMAKE_BUILD_TYPE=%build_type% !slicer_args! %ORCA_SLICER_CMAKE_ARGS% + %error_check% + ) + + call :print_and_run cmake --build "%build_dir%" --config %build_type% %SLICER_TARGET_FLAG% %JOBS_FLAG% %VERBOSE_FLAG% + %error_check% + + if "%run_tests%" == "ON" ( + call :print_and_run ctest --test-dir "%build_dir%/tests" -C %build_type% --output-on-failure + %error_check% + ) + + if not "%no_gettext%" == "ON" ( + call :print_and_run call scripts/run_gettext.bat + %error_check% + ) + + if "%install_slicer%" == "ON" ( + call :print_and_run cmake --build "%build_dir%" --target install --config %build_type% + %error_check% + ) +) + +REM Elapsed wall clock. The 1%%a-100 trick strips a leading zero, which set /A +REM would otherwise read as octal, and a negative total means the build ran +REM past midnight. +for /f "tokens=1-3 delims=:.," %%a in ("%_START_TIME: =0%") do set /a "_start_s=(1%%a-100)*3600+(1%%b-100)*60+(1%%c-100)" +for /f "tokens=1-3 delims=:.," %%a in ("%TIME: =0%") do set /a "_end_s=(1%%a-100)*3600+(1%%b-100)*60+(1%%c-100)" +set /a "_elapsed=_end_s - _start_s" +if %_elapsed% lss 0 set /a "_elapsed+=86400" +set /a "_hours=_elapsed / 3600" +set /a "_remainder=_elapsed - _hours * 3600" +set /a "_mins=_remainder / 60" +set /a "_secs=_remainder - _mins * 60" +call :summary +exit /b 0 + +REM Reached only by error_check, from the top level, where exit /b works. +REM The hash block is what CMakeLists already uses for a build that cannot +REM continue, so it means the same thing here. +:die +echo. +echo ############################################################# +REM The paths that set die_reason had no command fail, so last_cmd there +REM names one that succeeded. +if defined die_reason echo !die_reason! +if not defined die_reason if defined last_cmd echo Failed: !last_cmd! +if defined die_hint echo !die_hint! +echo Exit code %rc%. +REM -v only makes the build verbose, so it has nothing to offer a configure +REM that failed before any compiler ran. +set "failed_configure=" +if "!last_cmd:~0,9!" == "cmake -B " set "failed_configure=ON" +if "!last_cmd:~0,9!" == "cmake -S " set "failed_configure=ON" +REM Scoped to the stage that failed. Offering -c for the whole run would +REM discard a dependency tree that was not at fault, and neither flag does +REM anything for a failed pack. A named reason already carries its own advice. +if "!stage!" == "d" set "recall=!recall_tc!!recall_dd!" +if not defined die_reason if defined stage if not "!stage!" == "p" ( + echo. + echo Try + if not defined failed_configure echo build_win.bat -!stage!!recall! -v show the failing compiler command line + echo build_win.bat -!stage!!recall! -c discard that tree and configure from scratch +) +echo ############################################################# +exit /b %rc% + +REM =========================================================================== +REM Function definitions +REM =========================================================================== + +REM summary - what was produced, and what to do with it next. A dry run says +REM so rather than claiming the files exist, but every line below that is +REM worked out the same way in either run. +:summary + for %%p in ("!DEP_TREE!") do set "dep_full=%%~fp" + REM The binary only leaves the build tree when it is installed. + set "slicer_exe=%build_dir%\src\%build_type%\orca-slicer.exe" + if "%install_slicer%" == "ON" set "slicer_exe=%build_dir%\OrcaSlicer\orca-slicer.exe" + for %%p in ("!slicer_exe!") do set "slicer_full=%%~fp" + REM The 2026 generator writes OrcaSlicer.slnx, the releases before it + REM OrcaSlicer.sln. A file already there wins, in case an older CMake + REM configured the build. + set "solution=OrcaSlicer.sln" + if "%vs_version%" == "2026" set "solution=OrcaSlicer.slnx" + if exist "!build_full!\OrcaSlicer.sln" set "solution=OrcaSlicer.sln" + if exist "!build_full!\OrcaSlicer.slnx" set "solution=OrcaSlicer.slnx" + + REM Naming a target builds it and its dependencies, not its dependents, + REM so only a full build or the executable's own target relinks. + set "linked=ON" + if not "%slicer_target%" == "" set "linked=" + if /I "%slicer_target%" == "OrcaSlicer" set "linked=ON" + + echo. + echo ------------------------------------------------------------- + if "%dry_run%" == "ON" ( + echo Dry run: nothing was built. A real run would report: + ) else ( + echo Build completed in %_hours%h %_mins%m %_secs%s + ) + + if "%build_deps%" == "ON" echo Dependencies !dep_full! + if "%build_slicer%" == "ON" if "%linked%" == "ON" echo OrcaSlicer !slicer_full! + if "%build_slicer%" == "ON" if not "%linked%" == "ON" echo Target %slicer_target% + if "%build_slicer%" == "ON" if not "%using_ninja%" == "ON" echo Solution %build_full%\!solution! + if "%pack_deps%" == "ON" if defined bundle echo Bundle !bundle! + + echo. + echo Next + if "%build_slicer%" == "ON" ( + if "%linked%" == "ON" echo Run it !slicer_exe! + if not "%using_ninja%" == "ON" echo Open in Visual Studio %build_dir%\!solution! + if "%linked%" == "ON" echo Rebuild after edits build_win.bat -s!recall! --no-configure + if not "%linked%" == "ON" echo Relink the binary build_win.bat -s!recall! --no-configure + if "%linked%" == "ON" if "%using_ninja%" == "ON" echo Rebuild one target build_win.bat -s!recall! --no-configure --slicer-target libslic3r + if "%run_tests%" == "ON" echo Re-run the tests ctest --test-dir %build_dir%/tests -C %build_type% --output-on-failure + ) else ( + if "%build_deps%" == "ON" echo Build the slicer build_win.bat -s!recall! + ) + if "%pack_deps%" == "ON" echo Share the bundle unzip it elsewhere, then build_win.bat -s!recall_tc! --deps-dir ^ + echo ------------------------------------------------------------- + exit /b 0 + +:debug_msg + if "%debugscript%" == "ON" echo %* + exit /b 0 + +REM get_str_len -> length in %ret% +:get_str_len + setlocal + set "in=%~1" + for /L %%i in (0, 1, 100) do ( + if "!in:~%%i,1!" == "" ( + set out=%%i + goto :break_str_len + ) + ) + + echo error in get_str_len: string is too long + endlocal + exit /b 1 + + :break_str_len + endlocal & set ret=%out% + exit /b 0 + +:print_help_msg + setlocal + + REM Measure the widest flag column. Section headers have no flags and + REM must not widen it. + set flags= + set max_len=0 + set /A range_end = %argdefn% - 1 + for /L %%i in (0, 1, %range_end%) do ( + if "!argdefs[%%i].TYPE!" == "section" ( + set "flags[%%i]=" + ) else ( + set str_placeholder= + if not "!argdefs[%%i].TYPE!" == "bool" ( + set "str_placeholder= " + ) + + REM The placeholder goes on the long form only. Repeating it on + REM the short one says nothing extra and costs eight columns. + set "flag_str=" + if not "!argdefs[%%i].SHORT_FLAG!" == "" ( + set "flag_str=-!argdefs[%%i].SHORT_FLAG!" + ) + + if not "!argdefs[%%i].LONG_FLAG!" == "" ( + if "!flag_str!" == "" ( + REM No short flag: pad so the long one lines up with the others. + set "flag_str= " + ) else ( + set "flag_str=!flag_str!, " + ) + set "flag_str=!flag_str!--!argdefs[%%i].LONG_FLAG!!str_placeholder!" + ) else ( + set "flag_str=!flag_str!!str_placeholder!" + ) + set "flag_str=!flag_str! " + set "flags[%%i]=!flag_str!" + call :get_str_len "!flag_str!" + if !ret! GTR !max_len! ( + set max_len=!ret! + ) + ) + ) + + set padding= + for /L %%i in (0, 1, %max_len%) do set "padding=!padding! " + + echo Builds OrcaSlicer and its dependencies on Windows. + echo. + echo Usage: %script_name% [options] + set /A range_end = %argdefn% - 1 + for /L %%i in (0, 1, !range_end!) do ( + if "!argdefs[%%i].TYPE!" == "section" ( + echo. + echo !argdefs[%%i].HELP_TEXT!: + ) else ( + set "flag=!flags[%%i]!%padding%" + echo !flag:~0,%max_len%!!argdefs[%%i].HELP_TEXT! + ) + ) + echo. + echo Examples: + echo %script_name% --install-vs ide Set up a new machine, then restart the shell + echo %script_name% -ds Build the dependencies, then the slicer + echo %script_name% -s -l -x Rebuild the slicer with clang-cl and Ninja + echo %script_name% -s --no-configure -j 8 Rebuild quickly while iterating + echo %script_name% -s --slicer-target glad Compile one target to check the toolchain + echo %script_name% -l -x --run-tests Test that toolchain's build, not the default one + echo %script_name% -s -l -x --cache ccache Rebuild through a compiler cache + echo. + echo Environment: + echo ORCA_DEPS_CMAKE_ARGS Extra arguments for the deps configure + echo ORCA_SLICER_CMAKE_ARGS Extra arguments for the slicer configure + echo ORCA_UPDATER_SIG_KEY Update signing key baked into the slicer + echo git_commit_hash Revision to stamp into the build, as CI does + echo NINJA_STATUS Ninja progress format, if you want your own + echo debugscript Set to ON to trace this script + echo. + echo set ORCA_SLICER_CMAKE_ARGS=-DSLIC3R_BUILD_SANDBOXES=ON -DSLIC3R_WARNINGS=OFF + echo $env:ORCA_SLICER_CMAKE_ARGS = '-DSLIC3R_BUILD_SANDBOXES=ON' (PowerShell) + echo. + echo --deps-args and --slicer-args cannot carry a value with spaces; use + echo these instead. Neither form supports a value containing an ampersand. + endlocal + exit /b 0 + +REM add_section +:add_section + set argdefs[%argdefn%].VARIABLE_NAME= + set argdefs[%argdefn%].TYPE=section + set argdefs[%argdefn%].SHORT_FLAG= + set argdefs[%argdefn%].LONG_FLAG= + set argdefs[%argdefn%].HELP_TEXT=%~1 + set /A argdefn+=1 + exit /b 0 + +REM add_arg <variable> <type:bool,string,rawstring> <short> <long> <help> +:add_arg + set argdefs[%argdefn%].VARIABLE_NAME=%~1 + set argdefs[%argdefn%].TYPE=%~2 + set argdefs[%argdefn%].SHORT_FLAG=%~3 + set argdefs[%argdefn%].LONG_FLAG=%~4 + set argdefs[%argdefn%].HELP_TEXT=%~5 + + REM Start every option unset, so "defined" means the user gave it. + set %~1= + + if "%debugscript%" == "ON" ( + echo add_arg VARIABLE_NAME: !argdefs[%argdefn%].VARIABLE_NAME! + echo add_arg TYPE: !argdefs[%argdefn%].TYPE! + echo add_arg SHORT_FLAG: !argdefs[%argdefn%].SHORT_FLAG! + echo add_arg LONG_FLAG: !argdefs[%argdefn%].LONG_FLAG! + echo add_arg HELP_TEXT: !argdefs[%argdefn%].HELP_TEXT! + ) + + set /A argdefn+=1 + + exit /b 0 + +REM find_arg <type:short,long> <flag> -> index in %ret% +:find_arg + setlocal + call :debug_msg starting function: find_arg "%~1" "%~2" + + set type= + if /I "%~1" == "short" set type=SHORT + if /I "%~1" == "long" set type=LONG + if not defined type ( + endlocal + set ret= + exit /b 1 + ) + + call :debug_msg find_arg type=%type% + set /A range_end = %argdefn% - 1 + for /L %%i in (0, 1, %range_end%) do ( + if "!argdefs[%%i].%type%_FLAG!" == "%~2" ( + set idx=%%i + goto :find_arg_cont + ) + ) + + echo Error in find_arg: Failed to find arg "%~2" + call :print_help_msg + + endlocal + set ret= + exit /b 1 + + :find_arg_cont + call :debug_msg find_arg: found at %idx% + endlocal & ( + set ret=%idx% + ) + exit /b 0 + +REM set_arg <index> [<value>] +:set_arg + call :debug_msg starting function: set_arg "%~1" "%~2" + + if "%~1" == "" ( + echo Error in set_arg: no index provided + exit /b 1 + ) + + setlocal + if /I "!argdefs[%~1].TYPE!" == "bool" ( + call :debug_msg set_arg: setting bool type to ON + set val=ON + ) else ( + set "val=%~2" + set quote_char=" + REM Delayed expansion throughout: %val% here would be the value from the + REM previous call, since the whole block is parsed before it runs. + if "!val:~0,1!" == "!quote_char!" ( + if "!val:~-1,1!" == "!quote_char!" ( + set "val=!val:~1,-1!" + ) + ) + + call :debug_msg set_arg: setting string type to %~2 + ) + set var_name=!argdefs[%~1].VARIABLE_NAME! + + endlocal & ( + REM Set variable in parent scope + set "%var_name%=%val%" + + REM Add variable to finalize command + set "finalize_cmd=%finalize_cmd% & set "%var_name%=%val%"" + ) + + exit /b 0 + +REM get_arg_type <index> -> type in %ret% +:get_arg_type + call :debug_msg starting function get_arg_type "%~1" + setlocal + set type=!argdefs[%~1].TYPE! + endlocal & set ret=%type% + exit /b 0 + +REM echo_var <variable> +:echo_var + echo %~1=!%~1! + exit /b 0 + +:autodetect_vs + REM Nothing to detect once the release is pinned, or under Ninja. + if not "%vs_version%" == "" exit /b 0 + if "%use_ninja%" == "ON" exit /b 0 + + setlocal + + %VSWHERE% -nologo >nul 2>nul + if not !errorlevel! == 0 ( + REM vswhere is not in its usual place; try msbuild instead. + goto :msbuild_check + ) + + echo Detecting Visual Studio version using vswhere... + for /f "tokens=1 delims=." %%i in ('%VSWHERE% -nologo -products * -latest -property catalog_productDisplayVersion') do ( + set "VS_MAJOR=%%i" + goto :version_found + ) + + :msbuild_check + where msbuild >nul 2>nul + if not !errorlevel! == 0 ( + REM No msbuild either; leave the release empty and let the default apply. + endlocal + exit /b 0 + ) + + echo Detecting Visual Studio version using msbuild... + + REM The version line varies by release, so try two patterns for it. + set VS_MAJOR= + for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do ( + for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a + set MSBUILD_OUTPUT=%%i + goto :version_found + ) + + REM The same pattern unanchored, for releases that print a banner first. + if "%VS_MAJOR%"=="" ( + for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do ( + for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a + set MSBUILD_OUTPUT=%%i + goto :version_found + ) + ) + + :version_found + set "detected=!vs_year_%VS_MAJOR%!" + if not defined detected ( + echo Error: Unsupported Visual Studio major version: %VS_MAJOR% + endlocal + exit /b 1 + ) + echo Detected Visual Studio %VS_MAJOR% ^(!detected!^) + endlocal & set "vs_version=%detected%" + + exit /b 0 + +:setup_dev_env + REM A dry run runs nothing, and VsDevCmd costs seconds. + if "%dry_run%" == "ON" exit /b 0 + set "dev_arch=x64" + if /I "!arch!" == "ARM64" set "dev_arch=arm64" + %VSWHERE% -nologo >nul 2>nul + if not !errorlevel! == 0 ( + REM vswhere is not in its usual place; use the environment as it stands. + exit /b 0 + ) + + for /f "tokens=*" %%i in ('%VSWHERE% -nologo -products * -latest -property resolvedInstallationPath') do ( + set "VS_PATH=%%i" + goto :vs_path_found + ) + exit /b 0 + + :vs_path_found + call "%VS_PATH%\Common7\Tools\VsDevCmd.bat" -arch=!dev_arch! >nul 2>nul + set "VS_PATH=" + + exit /b 0 + +REM resolve_clang_cl - set clang_exe to the clang-cl a Ninja build uses. +REM VsDevCmd appends the Visual Studio LLVM directory to the end of PATH, +REM so a standalone LLVM already there shadows it. Name a full path. +:resolve_clang_cl + set "clang_exe=" + if not "%using_ninja%" == "ON" exit /b 0 + if not "%use_clang_cl%" == "ON" exit /b 0 + REM Only a configure uses it, so -p and --no-configure need none. + if "%no_configure%" == "ON" exit /b 0 + if "%build_deps%%build_slicer%" == "" exit /b 0 + + REM --clang-path wins. Forward slashes either way, so CMake does not + REM read a backslash as an escape. + if not "%clang_path%" == "" ( + set "clang_exe=%clang_path:\=/%" + exit /b 0 + ) + + setlocal + + REM Keyed on the host, not %arch%, because the x64 compiler + REM cross-compiles to ARM64. + set "llvm_host=x64" + if /I "%PROCESSOR_ARCHITECTURE%" == "ARM64" set "llvm_host=ARM64" + + set "found=" + %VSWHERE% -nologo >nul 2>nul + if !errorlevel! == 0 ( + for /f "tokens=*" %%i in ('%VSWHERE% -nologo -products * -latest -property resolvedInstallationPath') do ( + if exist "%%i\VC\Tools\Llvm\!llvm_host!\bin\clang-cl.exe" ( + set "found=%%i\VC\Tools\Llvm\!llvm_host!\bin\clang-cl.exe" + ) + ) + ) + + REM No clang toolset in Visual Studio. where lists every match, and the + REM first is the one PATH would resolve. + if "!found!" == "" ( + for /f "tokens=*" %%i in ('where clang-cl.exe 2^>nul') do ( + if "!found!" == "" set "found=%%i" + ) + if not "!found!" == "" echo Visual Studio has no clang-cl; using !found! from PATH. + ) + + if "!found!" == "" ( + echo No clang-cl found. Add the C++ Clang Compiler component with + echo %script_name% --install-vs ide -l + echo or name a standalone one with --clang-path. + endlocal + exit /b 1 + ) + + endlocal & set "clang_exe=%found:\=/%" + + exit /b 0 + +REM clean_tree <path> - remove a build tree, refusing anything that is not +REM one. Nothing here should ever fire; it is a floor under a bug that +REM produced a path far shorter than it looks. +:clean_tree + setlocal + set "target=%~1" + if not defined target ( + echo Refusing to clean: no directory to remove. + exit /b 1 + ) + + REM Resolve first, because "." and "deps/.." are shorter than they read. + for %%p in ("!target!") do set "full=%%~fp" + if "!full:~1!" == ":\" ( + echo Refusing to clean "!full!": that is a drive root. + exit /b 1 + ) + if /I "!full!" == "%WP%" ( + echo Refusing to clean "!full!": that is the repository itself. + exit /b 1 + ) + + call :print_and_run rmdir /S /Q "!full!" + exit /b !errorlevel! + +REM note_failed <name> <code> - record a failed install. Two winget codes +REM mean the tool is already there, which is what -u is for: +REM -1978335135 (0x8A150061) winget declined: a version is already there +REM -1978335189 (0x8A15002B) installed and already the newest version +:note_failed + if "%~2" == "0" exit /b 0 + if "%~2" == "-1978335135" exit /b 0 + if "%~2" == "-1978335189" exit /b 0 + set "install_failed=%install_failed% %~1" + exit /b 0 + +REM trim_slash <variable> - drop a trailing backslash from a path value. +REM A drive root keeps its own: "C:\" is not the same place as "C:". +:trim_slash + set "trim_value=!%~1!" + if not defined trim_value exit /b 0 + if not "!trim_value:~-1!" == "\" exit /b 0 + if "!trim_value:~-2!" == ":\" exit /b 0 + set "%~1=!trim_value:~0,-1!" + exit /b 0 + +REM kill_image <name> - stop every process of one image. The count is printed +REM first because taskkill can take a while and says nothing until it returns. +REM Never fails, so one stubborn image cannot stop the rest. +:kill_image + setlocal + REM A dry run does not count, so it prints the same on every machine. + if "%dry_run%" == "ON" ( + call :print_and_run taskkill /F /IM %~1 + endlocal + exit /b 0 + ) + set "img_count=0" + for /f "tokens=1" %%a in ('tasklist /nh /fi "IMAGENAME eq %~1" 2^>nul') do ( + if /I "%%a" == "%~1" set /a img_count+=1 + ) + if "!img_count!" == "0" ( + echo %~1: none running + endlocal + exit /b 0 + ) + echo %~1: stopping !img_count! + call :print_and_run taskkill /F /IM %~1 + endlocal + exit /b 0 + +REM print_and_run <command...> +:print_and_run + echo + %* + REM Recorded before the command runs. A set afterwards would clear the + REM errorlevel the next line returns, reporting every failure as a pass. + set "last_cmd=%*" + if not "%dry_run%" == "ON" ( + %* + exit /b !errorlevel! + ) + exit /b 0 + +REM handle_args <args...> +:handle_args + call :debug_msg starting function handle_args "%*" + if "%~1" == "" exit /b 0 + + setlocal + set arg=%~1 + set finalize_cmd= + + call :debug_msg Begin handling arg "%arg%" + + if not "%arg:~0,2%" == "--" goto :HAL_check_short + + call :debug_msg Processing long arg + + call :find_arg long %arg:~2% + %repeat_error% + set idx=%ret% + + call :get_arg_type %idx% + %repeat_error% + set type=%ret% + + if /I not "%type%" == "bool" ( + set "string_val=%~2" + if not defined string_val ( + echo Error in handle_args_loop: The option "%arg:~2%" requires a value + exit /b 1 + ) + + REM rawstring options carry cmake arguments, which start with a dash, so + REM only plain string options reject a value that looks like an option. + if /I "%type%" == "string" ( + if "!string_val:~0,1!" == "-" ( + echo Error in handle_args_loop: The option "%arg:~2%" requires a value. "!string_val!" looks like another option. + exit /b 1 + ) + ) + shift + ) + + call :set_arg %idx% "%string_val%" + %repeat_error% + goto :handle_args_loop_reset + + :HAL_check_short + if not "%arg:~0,1%" == "-" ( + echo Unknown argument: %arg% + call :print_help_msg + exit /b 1 + ) + + call :debug_msg processing short args + set /A charidx=1 + :short_arg_loop + if "!arg:~%charidx%,1!" == "" goto :handle_args_loop_reset + + call :find_arg short !arg:~%charidx%,1! + %repeat_error% + set idx=%ret% + + call :get_arg_type %idx% + %repeat_error% + set type=%ret% + + set /A start_idx = %charidx% + 1 + if /I not "%type%" == "bool" ( + REM A value may be attached (-j8) or be the next argument (-j 8). + set remaining=!arg:~%start_idx%! + if defined remaining ( + set string_val=!remaining! + ) else ( + set "string_val=%~2" + shift + ) + if not defined string_val ( + echo Error in handle_args_loop: The option "!arg:~%charidx%,1!" requires a value + exit /b 1 + ) + + REM As in the long-option branch above. + if /I "%type%" == "string" ( + if "!string_val:~0,1!" == "-" ( + echo Error in handle_args_loop: The option "!arg:~%charidx%,1!" requires a value. "!string_val!" looks like another option. + exit /b 1 + ) + ) + call :set_arg !idx! "!string_val!" + %repeat_error% + goto :handle_args_loop_reset + ) + + call :set_arg %idx% + %repeat_error% + set /A charidx+=1 + goto :short_arg_loop + + :handle_args_loop_reset + REM endlocal drops this iteration scope; finalize_cmd re-applies the options + REM it set, in the caller scope. + endlocal %finalize_cmd% + shift + goto :handle_args diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index b4cd9facd2..62bfcf8e76 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -1,3 +1,10 @@ +# clang-cl cannot emit IGESAppli_GeneralModule.cxx on ARM64 +# (llvm/llvm-project#62081). cl and clang-cl share an ABI. +set(_occt_compiler_args "") +if ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) + set(_occt_compiler_args -DCMAKE_C_COMPILER:STRING=cl -DCMAKE_CXX_COMPILER:STRING=cl) +endif () + if(WIN32) set(library_build_type "Shared") else() @@ -31,6 +38,7 @@ orcaslicer_add_cmake_project(OCCT -DBUILD_MODULE_ModelingAlgorithms=OFF -DBUILD_MODULE_ModelingData=OFF -DBUILD_MODULE_Visualization=OFF + ${_occt_compiler_args} ) # add_dependencies(dep_OCCT ${FREETYPE_PKG}) diff --git a/deps/OpenCV/OpenCV.cmake b/deps/OpenCV/OpenCV.cmake index d8c7cbac3b..0290b3f47a 100644 --- a/deps/OpenCV/OpenCV.cmake +++ b/deps/OpenCV/OpenCV.cmake @@ -10,6 +10,13 @@ else () set(_options "") endif () +# carotene is OpenCV's ARM NEON HAL. It uses M_PI without _USE_MATH_DEFINES +# and does not compile with clang-cl. +set(_disable_carotene "") +if ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) + set(_disable_carotene "-DWITH_CAROTENE=OFF") +endif () + if (IN_GIT_REPO) set(OpenCV_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV) endif () @@ -83,5 +90,6 @@ orcaslicer_add_cmake_project(OpenCV -DWITH_PROTOBUF=OFF -DWITH_WIN32UI=OFF -DHAVE_WIN32UI=FALSE + ${_disable_carotene} ) diff --git a/deps/OpenSSL/OpenSSL.cmake b/deps/OpenSSL/OpenSSL.cmake index ddeb680052..2fb4b51757 100644 --- a/deps/OpenSSL/OpenSSL.cmake +++ b/deps/OpenSSL/OpenSSL.cmake @@ -6,7 +6,7 @@ if(DEFINED OPENSSL_ARCH) set(_cross_arch ${OPENSSL_ARCH}) else() if(WIN32) - if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64") + if("${DEPS_ARCH}" STREQUAL "arm64") set(_cross_arch "VC-WIN64-ARM") else() set(_cross_arch "VC-WIN64A") diff --git a/deps/PNG/PNG.cmake b/deps/PNG/PNG.cmake index 332fdfe274..a73e96a0c9 100644 --- a/deps/PNG/PNG.cmake +++ b/deps/PNG/PNG.cmake @@ -1,6 +1,10 @@ if (APPLE) # Only disable NEON extension for Apple ARM builds, leave it enabled for Raspberry PI. set(_disable_neon_extension "-DPNG_ARM_NEON=off") +elseif ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) + # libpng's CMake ignores PNG_ARM_NEON on Windows ARM64 and skips the NEON + # sources, but pngpriv.h enables NEON anyway. + set(_disable_neon_extension "-DCMAKE_C_FLAGS=/DWIN32 /D_WINDOWS /DPNG_ARM_NEON_OPT=0") else () set(_disable_neon_extension "") endif () diff --git a/deps/python3/python3.cmake b/deps/python3/python3.cmake index e93045fe45..2eae315d0b 100644 --- a/deps/python3/python3.cmake +++ b/deps/python3/python3.cmake @@ -15,7 +15,13 @@ if(WIN32) # See https://github.com/python/cpython/issues/153438 # Patch from https://github.com/python/cpython/pull/153608 # This patch has not been merged to 3.12 yet so we need to apply it manually - set(_patch_cmd git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch) + # + # Without core.autocrlf=false the patched find_python.bat comes out LF and + # cmd.exe cannot find its goto labels. + set(_patch_cmd git init + && ${GIT_EXECUTABLE} -c core.autocrlf=false apply --verbose + --ignore-space-change --whitespace=fix + ${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch) if(MSVC_VERSION EQUAL 1800) set(_python_platform_toolset v120) @@ -53,12 +59,9 @@ if(WIN32) set(_python_pcbuild_output_dir win32) endif() + # pybind11 undefines _DEBUG around Python.h so a debug build links the + # release python3xx.lib; Py_DEBUG could not load release plugin modules. set(_python_pcbuild_config Release) - set(_python_layout_debug OFF) - if(DEFINED DEP_DEBUG AND DEP_DEBUG) - set(_python_pcbuild_config Debug) - set(_python_layout_debug ON) - endif() # CPython's PCbuild needs a 64-bit-hosted toolchain: find_msbuild.bat picks the # 32-bit Bin\MSBuild.exe, whose x86 cl.exe/link.exe run out of address space @@ -101,7 +104,6 @@ if(WIN32) -DPYTHON_BUILD_DIR=<SOURCE_DIR>/PCbuild/${_python_pcbuild_output_dir} -DPYTHON_DEST_DIR=${DESTDIR}/libpython -DPYTHON_LAYOUT_ARCH=${_python_layout_arch} - -DPYTHON_DEBUG=${_python_layout_debug} -P ${CMAKE_CURRENT_LIST_DIR}/stage_windows.cmake ) elseif(APPLE) diff --git a/deps/python3/stage_windows.cmake b/deps/python3/stage_windows.cmake index b127f06b68..758e0be9f3 100644 --- a/deps/python3/stage_windows.cmake +++ b/deps/python3/stage_windows.cmake @@ -9,9 +9,6 @@ foreach(_var PYTHON_SOURCE_DIR PYTHON_BUILD_DIR PYTHON_DEST_DIR PYTHON_LAYOUT_AR endforeach() set(_python_exe "${PYTHON_BUILD_DIR}/python.exe") -if(PYTHON_DEBUG) - set(_python_exe "${PYTHON_BUILD_DIR}/python_d.exe") -endif() if(NOT EXISTS "${_python_exe}") message(FATAL_ERROR "Built Python executable not found: ${_python_exe}") @@ -49,22 +46,11 @@ endif() set(_required_files "${PYTHON_DEST_DIR}/Lib/encodings/__init__.py" "${PYTHON_DEST_DIR}/include/Python.h" + "${PYTHON_DEST_DIR}/python.exe" + "${PYTHON_DEST_DIR}/python${_python_abi}.dll" + "${PYTHON_DEST_DIR}/libs/python${_python_abi}.lib" ) -if(PYTHON_DEBUG) - list(APPEND _required_files - "${PYTHON_DEST_DIR}/python_d.exe" - "${PYTHON_DEST_DIR}/python${_python_abi}_d.dll" - "${PYTHON_DEST_DIR}/libs/python${_python_abi}_d.lib" - ) -else() - list(APPEND _required_files - "${PYTHON_DEST_DIR}/python.exe" - "${PYTHON_DEST_DIR}/python${_python_abi}.dll" - "${PYTHON_DEST_DIR}/libs/python${_python_abi}.lib" - ) -endif() - foreach(_required_file IN LISTS _required_files) if(NOT EXISTS "${_required_file}") message(FATAL_ERROR "Staged Python file missing: ${_required_file}") diff --git a/deps_src/admesh/stlinit.cpp b/deps_src/admesh/stlinit.cpp index a69bd5497a..9d44cdf266 100644 --- a/deps_src/admesh/stlinit.cpp +++ b/deps_src/admesh/stlinit.cpp @@ -162,7 +162,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor rewind(fp); try{ char solid_name[256]; - int res_solid = fscanf(fp, " solid %[^\n]", solid_name); + int res_solid = fscanf(fp, " solid %255[^\n]", solid_name); if (res_solid == 1) { char* mw_position = strstr(solid_name, "MW"); if (mw_position != NULL) { @@ -170,7 +170,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor char version_str[16]; char model_id_str[128]; char country_code_str[16]; - int num_values = sscanf(mw_position + 3, "%s %s %s", version_str, model_id_str, country_code_str); + int num_values = sscanf(mw_position + 3, "%15s %127s %15s", version_str, model_id_str, country_code_str); if (num_values == 3) { if (strcmp(version_str, "1.0") == 0) { model_id = model_id_str; diff --git a/docs/HLSD/filament_id.md b/docs/HLSD/filament_id.md new file mode 100644 index 0000000000..0aaf845909 --- /dev/null +++ b/docs/HLSD/filament_id.md @@ -0,0 +1,508 @@ +# Filament IDs (`filament_id`) + +`filament_id` identifies one **filament product**: one named spool product = one id, shared by +all of that product's per-printer / per-nozzle variants, in every profile bundle that ships it. +Devices use it to match a physical spool or tray to a filament preset. It is never per-color, +per-printer, per-nozzle, or per-preset (per-preset identity is `setting_id`), and it is never +per-bundle either — PolyLite PLA carries the same id whether the preset lives in the +OrcaFilamentLibrary (OFL), Qidi, or Snapmaker bundle. The granularity is the name on the spool, +not the brand behind it: `AAA PLA Lite` and `AAA PLA Pro` are two filaments with two ids, not +variants of one. + +**How it is generated:** an id is computed, never invented. `scripts/orca_id_tool.py` +mints it as a deterministic hash of the product's identity — the triple +`(filament_vendor, filament_type, filament name)`, where the filament name is the preset name +with its `@...` variant suffix stripped — producing an 8-character `OF*` code that is the +same for that product in every bundle, in every PR, on every machine. For example, Polymaker's +PolyLite PLA presets (`PolyLite PLA @base`, `PolyLite PLA@Q2-Series`, …) resolve +`filament_vendor` `Polymaker`, `filament_type` `PLA`, and filament name `PolyLite PLA`; hashing +`filament_product/Polymaker/PLA/PolyLite PLA` yields `OF5CgdDq`, and that is the id the +OrcaFilamentLibrary, OrcaArena, Qidi, and Snapmaker bundles all arrive at independently +(derivation details in the Minting section). + +**How it is used:** at runtime the id is the join key between hardware and profiles. +When a printer reports what a tray holds (Bambu AMS, Qidi box, Creality CFS, +Klipper, Snapmaker), OrcaSlicer matches the reported id against the filament presets +compatible with that printer to select the right profile; other features — tray display +names, support-material detection, vitrification warnings, multi-nozzle filament grouping — +look up material properties by id alone. An id that changes is not forwarded anywhere: a +tray or record still holding the old value falls back to matching by material type until the +user re-selects the filament, so identity changes are made deliberately and rarely. + +This page is the rule for authoring `filament_id` in system profiles +(`resources/profiles/**`). CI enforces everything below; the short version is: + +> [!IMPORTANT] +> **Never write a `filament_id` value by hand.** A new filament gets its id from +> `python scripts/orca_id_tool.py --generate`; one already in the tree has one — inherit it. + +## The design, in two pieces + +Because several consumers match **globally by id alone, first hit wins** (see the next +section), any two materials sharing one id feed wrong data somewhere — a wrong tray name, a +wrong support-material flag, a wrong nozzle grouping — and inside one printer a duplicated id +makes AMS spool matching a coin toss. Hand-written ids produce such collisions constantly, so +the system is built to make them impossible: + +1. **Deterministic minting.** An id is a pure hash of the product's identity — no registry to + maintain, no next-free-number ceremony, no way for two concurrent PRs to race for the same + number, and no way to get it wrong by hand, because you never write it by hand. +2. **A sanctioned snapshot.** The complete id landscape derived from the tree must equal + `scripts/filament_id_snapshot.json` exactly, so every change to ids, claims (which bundles + ship which id, and for which filament), or product identity surfaces as a reviewable diff to + one file — the maintainer gate. + +## Who consumes the id + +The canonical consumer is tray-to-preset matching: a device reports a tray material id +(`tray_info_idx`), and the shared matching pipeline (`PresetBundle::sync_ams_list` and +friends) resolves it to a preset. The matcher is printer-scoped and first-match-wins: +scanning only compatible root presets — system roots plus user-made custom filaments, which +are user roots carrying their own `P*` ids; a preset derived from another resolves through +its root and never matches directly — it picks the first one whose `filament_id` equals the +tray's. On a miss it falls back by filament type: a system `Generic <type>` preset +(matched by name, then by type similarity), else the slot's previous selection, else any compatible system generic or, +failing that, any compatible system preset, else the slot is skipped — every fallback +selection surfaces a user-visible notice. + +Today only the Bambu AMS integration follows this pattern end to end — the device itself +reports the id, `BBLPrinterAgent` translates it out of Bambu's catalog into ours, and the +pipeline does all the matching. The other device integrations still synthesize a preset id +client-side in their agents (by type, brand, or color lookups against the loaded presets) +before the pipeline runs; they are intended to converge on the same pattern, with the +device-reported tray material id flowing through the shared matcher. + +| Ecosystem | Where the tray id comes from today | +| --- | --- | +| Bambu AMS | the device itself (RFID / user tray setting), in Bambu's own `GF*` catalog; `BBLPrinterAgent` rewrites it into our id before the matcher sees it (see [The Bambu catalog map](#the-bambu-catalog-map)) | +| Qidi box | composed at runtime as `QD_<series>_<vendor>_<typeidx>` — vendor and type indices from the device's per-slot saved variables, the series digit inferred client-side from the printer model/name. No preset carries a `QD_*` value, so the slot currently resolves by filament type; mapping the composed id onto the filament's minted id belongs in the agent | +| Creality CFS | runtime brand/type scoring returns the winning preset's id | +| Klipper (AFC / Happy Hare) | runtime lookup by filament type | +| Snapmaker | runtime color/vendor/type match | + +Tray-to-preset matching is printer-scoped, but **several consumers match globally by id alone, +first hit wins**: tray display names, `filament_is_support`, vitrification warnings, and +multi-nozzle filament grouping in the slicing pipeline (`FilamentGroup::try_merge_filaments` +merges plate slots sharing one `(filament_id, color)` pair, with matching +extruder-printability, onto one nozzle group; the engine is implemented but no grouping path +calls it yet). +Two *different* materials sharing one id +feed wrong data to those consumers even when the presets live in different vendors — so +cross-material id sharing is never safe. Within one printer, duplicate ids break AMS matching: +the matcher picks whichever preset loads first (it now logs an "Ambiguous AMS filament match" +warning, but the pick is still arbitrary) and the tray-edit dialog, which lists one entry per +id, hides the second preset entirely. The profile validator's `-f` check +(`check_filament_subtypes` → `PresetBundle::check_duplicate_filament_subtypes`) rejects this +per printer, and CI runs it tree-wide. + +Two more consumer-side facts worth knowing: + +- The machine-facing dialogs (AMS tray edit, AMS dry control, calibration history, extrusion + calibration) offer the filaments a connected printer can use by the same compatibility rule + the plater uses (an empty `compatible_printers` means *every* printer). Alias shadowing + still applies: a vendor's same-name profile supersedes the library generic. That is what + puts Orca Filament Library materials in those lists — deduplicated to one entry per + `filament_id` in the AMS and calibration-history dialogs, while extrusion calibration + deliberately lists every matching preset by full name. +- The id is load-bearing at startup: an instantiated system filament (one marked + `"instantiation": "true"` — see the structure rules) that resolves **no** + `filament_id` anywhere in its `inherits` chain is a hard load error in the C++ loader + (`Can not find filament_id for <name>`) that discards the entire vendor bundle (for the + OrcaFilamentLibrary itself the failure is messier: library presets loaded before the + failing one survive, and every vendor bundle whose filaments inherit from the library is + then discarded for want of a base). CI's structure check catches this before it ships. + +## Do I need a new id? The one-question test + +> **Would a user consider this a different spool product than anything already in the tree?** + +Different polymer, different sub-brand (Basic / Matte / Silk / HF), fiber-filled sibling, or a +second selectable diameter → **new filament, new id**. The same spool tuned for another printer +or nozzle → **join the existing filament** (keep its base name and inherit it; no id +key needed). Tuning a generic material → **join the OrcaFilamentLibrary filament** (inherit +`Generic X @System` and keep the `Generic X` base name; no id key needed). + +| Situation | id | +| --- | --- | +| Per-printer / per-nozzle variant of an existing material | same id (inherit it) | +| Sub-brand or product line (PLA vs PLA Matte vs PLA Silk vs PLA HF) | new id each | +| Color | never a new id | +| Second diameter of the same product (1.75 + 2.85) | sibling filament, new id | +| "High-speed" tuned for a *different printer model* | same id (it is a printer variant) | +| "High-speed" selectable *alongside* the normal preset on one printer | new name, so a new id (it is a product line) | + +## Structure rules + +1. **Every preset carries the id of its own product, wherever it gets it from.** The id is a + function of the preset's own triple (rule 5), and `inherits` carries settings, never + identity. So a preset may declare the key itself or inherit it from any ancestor — a + `<Filament> @base` root, a real (instantiated) preset of the same filament, an + OrcaFilamentLibrary preset — and CI checks one thing: the id it ends up with equals the + mint of *its* triple. The usual shape is one `@base` root (`"instantiation": "false"`) + declaring the key and the per-printer variants inheriting it; a filament may have several + roots — Qidi's PolyLite PLA has four per-series roots (`PolyLite PLA@Q2-Series`, + `@Q2C-Series`, `@X-Max 4-Series`, `@X-Plus 5-Series`) — which then all declare the identical + id. A branded filament that borrows a generic's settings (`Flashforge ABS Basic @FF C5` + inherits `Generic ABS @System`) declares its own id, because its triple is its own. +2. **The filament name is the base name**: the preset name with everything from the first + (optionally space-preceded) `@` stripped. `MyBrand PLA @Orca 3D Fuse1` and `MyBrand PLA@HS` + are both the filament `MyBrand PLA`. +3. **Within one filament, variants' `compatible_printers` are pairwise disjoint** — per printer, + at most one compatible instantiated preset per id, or AMS matching turns ambiguous. The + C++ validator's `-f` check enforces this, tree-wide in CI. Since one product carries one id + and cannot be split onto two, this rule is the *only* remedy for such an ambiguity: narrow + the `compatible_printers`, or retire the preset that duplicates another. +4. **Generics belong to OrcaFilamentLibrary.** A vendor tuning a generic material inherits + `Generic X @System`, keeps the `Generic X` base name (that alias is what hides the library + preset on your printers, and it is what makes its triple — and so its id — the library's) + and sets a non-empty `compatible_printers` — e.g. `Generic PLA @Sovol SV08 MAX` inherits + `Generic PLA @System` and lists three Sovol nozzles. Renaming such a preset makes it a + different product by rule 5, so it then needs its own id. +5. **Ids follow the product identity.** The id is a pure function of the product triple + `(filament_vendor, filament_type, filament name)`, so correcting any of them re-mints the id + **by design**, applied by `--generate` (preview with `--dry-run`, confine with `--vendor`) and + gated by the `--update-snapshot` diff; the exact sequence is in the FAQ. Nothing forwards + the old value, so anything outside the tree that stored it — a device tray, a calibration + record, a saved project — falls back to matching by filament type until the user re-selects + the filament. Re-mint deliberately, and only to fix a genuinely wrong identity. + (`renamed_from` still gates preset-*name* compatibility, as before.) + +## Minting — nobody invents ids + +New ids are deterministic, computed exactly like the `setting_id` precedent +(the `setting_id` half of `scripts/orca_id_tool.py`): + +```text +FILAMENT_ID_NAMESPACE = uuid5(setting-id NAMESPACE, "filament_id") + = c4d3ff49-4c32-5534-a3e3-00894157ab97 +filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE, + "filament_product/<filament_vendor>/<filament_type>/<filament_name>") ) +``` + +`base62_6` is the low 6 base62 digits (alphabet `0-9A-Za-z`) of the UUID taken as a big-endian +integer, most-significant digit first; with the `OF` prefix the full id is 8 chars, within the +AMS length limit. The triple comes from the root preset's *flattened* config: +`<filament_vendor>` is the filament +**manufacturer** (`"Polymaker"`, or `"Generic"` for generics — never the printer brand), +`<filament_type>` the material type, `<filament_name>` the root's base name; the two config +values are inheritable list options and the first element counts. + +Content-addressing on that triple is what makes the whole system converge. The key contains no +bundle name, so the same product mints the same id in every bundle — moving a filament into +OrcaFilamentLibrary never changes its id, and two vendors independently shipping the same +product arrive at the same id without coordinating. `Polymaker/PLA/PolyLite PLA` mints +`OF5CgdDq`, and that one id is declared by the OrcaFilamentLibrary, OrcaArena, Qidi, and +Snapmaker bundles alike; the OFL generic `Generic/PLA/Generic PLA` mints `OFDSrzZ8`, claimed +by 35 bundles — most by independent declarations converging on the same mint, the rest +purely through inheritance from the OFL preset. + +Nothing but the triple feeds the mint — not the rest of the tree, not the snapshot, not what +another preset of the product happens to carry. Determined triple, determined id: one product +carries one id and there is no second acceptable value for it, so any other value on a preset +is a mismatch `--check` reports and `--generate` pulls back. Two *different* products whose +triples mint the same base62 value would be a collision (a roughly 36-bit id space against a +few thousand products); nothing salts past it: `--check` reports it naming both products, +`--generate` refuses to write it, and the remedy is a rename so their triples differ. Where +two presets of one product would be AMS-ambiguous on a printer, the fix is likewise in the +profiles — make their `compatible_printers` disjoint (structure rule 3), retire the redundant +preset, or, if they really are different products, give them different names so their triples +differ. Never a second id for one triple. + +Workflow for a new filament: + +```bash +# 1. Author the filament with NO filament_id key anywhere. +python scripts/orca_id_tool.py --dry-run # 2. preview the ids — writes nothing +python scripts/orca_id_tool.py --generate # 3. apply them to the profile file(s) +python scripts/orca_id_tool.py --update-snapshot # 4. record the new claims in the snapshot +python scripts/orca_id_tool.py --check # 5. validate the filament_id state +python scripts/orca_extra_profile_check.py # 6. ...and everything else CI checks +# 7. Commit the profile edits together with scripts/filament_id_snapshot.json, for review. +``` + +`--generate` makes every filament's id equal the mint of its own +`(filament_vendor, filament_type, filament name)` triple: it inserts one where an instantiated +filament resolves none, and re-derives one that does not match. A preset that *inherits* a +mismatching id is the one case left to the author — check 3b names it, and the fix is to inherit +a preset of the same filament or to give the preset its own key. A declaration is left alone +exactly when it already equals the one id its triple mints, and a collision (check 3d) is +reported and left unwritten. The same run assigns +`generate_preset_setting_id(vendor, type, name)` to every instantiated filament, process +and machine preset of every vendor except BBL, which keeps its authoritative `G*` ids, strips +`setting_id` from base profiles, and fixes the misspelled `settings_id` key — dropped, or, for +BBL, whose ids have no formula to fall back on, restored under the correct name. It is idempotent and +byte-preserving (indentation, BOM, and line endings intact, every edited file re-parsed to fail +loudly), and a no-op on a tree that already passes `scripts/orca_extra_profile_check.py` — the +check CI runs over both id kinds, of which `--check` is the `filament_id` half. + +- `--filament-id` limits the run to `filament_id`. +- `--setting-id` limits the run to `setting_id`. The two exclude each other; pass neither to + write both. +- `--vendor VENDOR` confines the run to that bundle; repeatable. The id is a function of the + triple alone, so a narrowed run writes exactly what a full one would; `--check` reports + whatever it left outside. +- `--dry-run` reports what `--generate` would do and writes nothing; with no mode of its own it + implies `--generate`, so `--dry-run --vendor <Vendor>` previews just that bundle. +- `--profiles DIR` points the tooling at a different profile tree (default + `resources/profiles`). `--check` and `--update-snapshot` read and write the sanctioned state of + the tree they are given, so pointing them elsewhere needs `--snapshot PATH` for that tree too — + `scripts/filament_id_snapshot.json` describes `resources/profiles` and no other tree. + +**Identity fixes need no separate mode.** `--generate` re-derives an id that no longer matches its +triple exactly the way it fills in a missing one, so a rename or a `filament_vendor` / +`filament_type` correction is just: fix the config, run `--generate` (confine it with `--vendor`, +preview it with `--dry-run`), then `--update-snapshot` and review the diff. + +If you skip the tooling, CI fails and prints the remedy: the expected id for your filament and +the instruction to run `python scripts/orca_id_tool.py --generate`; once the id is minted, the +snapshot checks likewise point at `--update-snapshot` and tell you to commit the resulting +diff. + +## Reserved namespaces — never mint or hand-write into + +A **reserved namespace** is an id space no system profile may declare, because an external +catalog or a device protocol owns the values. None of them has an owning vendor: there is no +bundle — not even the one whose printers use the catalog — that may write one into a profile. + +| Space | Status | Rule | +| --- | --- | --- | +| `GF*` | Bambu AMS/RFID catalog | declarable by **nobody**, BBL included: Bambu's own ids live in the generated catalog map, never in a profile | +| `QD_*` | Qidi device protocol | declarable by **nobody**, Qidi included: the box composes these ids at runtime and they are not preset ids | +| `P` + 7 hex chars (case-insensitive), `"null"` | user-created custom filaments (`CreatePresetsDialog.cpp`) | never appears in system profiles | + +The two device namespaces, in detail: + +- **Bambu (`GF*`).** Bambu's device/RFID/cloud catalog is external and opaque, which is a + reason to keep it out of the profiles rather than to let one bundle own it. Every BBL filament + mints an `OF` id from its triple like every other vendor's, and the correspondence to Bambu's + catalog ids lives in one generated file the app applies at the printer boundary — the next + section. Nothing under `resources/profiles/**` carries a `GF*` id today and nothing can be + exempted, so a `GF*` id appearing anywhere in the tree is a mistake, whoever wrote it. +- **Qidi (`QD_*`).** `QD_*` is a device-*protocol* namespace, not a preset id space: the + Qidi box path composes `QD_<series>_<vendor>_<typeidx>` ids at runtime (slot vendor and + type indices reported by the device, the series digit inferred client-side from the printer + model/name). Qidi presets carry ordinary minted `OF*` ids (generics share the OFL ids), so + a composed id matches no preset and the slot falls back to filament type; translating it to + the filament's id belongs in `QidiPrinterAgent`. The alternative — treating per-series + protocol ids as preset ids — would put one product under five ids (`QIDI PLA Rapido` would + be `QD_0_1_1` through `QD_4_1_1`), exactly the fragmentation the mint rule removes. + +## The Bambu catalog map + +Bambu's printers, its AMS and its cloud know only Bambu's own catalog ids. Our profiles carry +minted `OF` ids like every other vendor's, so one generated file records the correspondence and +the app applies it **only where an id crosses to or from a Bambu printer**. + +**The file** is `resources/printers/bambu_filament_ids.json` — a header plus one row per +catalogued product, keyed by our id: + +```json +{ + "source": "https://github.com/bambulab/BambuStudio", + "bambustudio_commit": "66e405477", + "generated": "2026-09-04", + "filaments": { + "OFhuaUQB": { "bambu_id": "GFB00", "vendor": "Bambu Lab", "type": "ABS", "name": "Bambu ABS" } + } +} +``` + +It ships in `resources/printers/`, next to `filaments_blacklist.json` — deliberately not in +`resources/profiles/`, where the loader reads every top-level `.json` as a vendor index. It +holds 100 rows today, one per product BambuStudio ships, and the correspondence is +one-to-one in both directions. + +**It is generated, never hand-edited.** `python scripts/update_bambu_filament_ids.py` rebuilds +it from **BambuStudio's own shipped BBL bundle** — a sparse shallow clone of upstream `master`, +or `--bambustudio-dir <a BambuStudio resources/profiles checkout>`. Our BBL bundle is a fork of +Bambu's, tuned and extended independently, so it is not the source of truth for Bambu's ids. +A row's key is the id the product's `(filament_vendor, filament_type, filament name)` triple +mints — the same id any bundle of ours carries for it, since the id is a function of the triple +alone; the row of a product we do not ship sits inert until some bundle claims that triple — +`OFdyfQvU` / `GFG03`, "Bambu PETG Matte", is such a row today. + +**Regenerate it in the same commit as every BBL profile sync**, and read the drift report it +prints. Two lines, both informational, neither blocking the write: + +```text +upstream ships 'Bambu PETG Matte' (Bambu Lab/PETG), we ship nothing with that identity +Orca BBL filaments with no row: 135 Orca-only product(s) +``` + +The first names each upstream product our BBL bundle has no same-identity filament for — +sometimes a genuinely missing product, sometimes a name drift a follow-up rename would +converge. The second counts our own BBL filaments that matched no row: 135 of 234 today, of +which 109 send an `OF` id on the wire and 26 already rode `OF` ids inherited from the +OrcaFilamentLibrary. **135 is the number to expect at every regeneration** — 109 was the +one-off size of the transition and stopped being computable from the tree once the BBL bundle +was re-minted, so do not "fix" the report to print it. + +**Check 6** lives in `check_filament_ids`, so profile CI runs it alongside the other five. It +holds the file to its contract: it parses, carries `source` / `bambustudio_commit` / +`generated`, keys only `OF`-format ids, maps each Bambu id at most once, and — for every row +whose key the tree actually claims — agrees with the tree on that id's `(vendor, type, name)` +triple. A row for a product we do not ship is skipped, not an error. The remedy it prints is +always the same: regenerate the map and commit the diff for review. + +### The runtime rule: swap on hit + +Outbound, our id with a row becomes Bambu's; inbound, Bambu's id with a row becomes ours. +Everything else is forwarded untouched — an `OF` id with no row, a Bambu id for a product we do +not ship, a `P`-hex user id, `"null"`, an empty string. Translation is confined to the +boundary: nothing between the boundaries ever holds a Bambu id. + +Translating one value is a capability of the printer agent: `IPrinterAgent` declares +`to_orca_filament_id` and `from_orca_filament_id` returning their argument, and `BBLPrinterAgent` +overrides them with Bambu's map, so an agent whose printers already speak our ids inherits the +identity default and translates nothing. `NetworkAgent` forwards both to the live agent, so the +comparison sites below reach them through `wxGetApp().getAgent()` and leave an id untranslated +while no agent is live. Whole documents are Bambu's business alone: +`BBLPrinterAgent::to_orca_payload` and `from_orca_payload` rewrite every string under +`tray_info_idx`, `filament_id` or `filamentId` at any depth; text that does not parse, or carries +none of those keys, comes back unchanged. The map is loaded once, lazily; a missing or malformed +file degrades to identity with a log line rather than failing. + +| Boundary | Where it translates | +| --- | --- | +| Everything the agent sends | `BBLPrinterAgent::send_message` and `send_message_to_printer`, plus `PrintParams::ams_mapping_info` in `dispatch_start` — the funnel all five `start_*` calls share | +| Everything the agent receives | `set_on_message_fn` and `set_on_local_message_fn` wrap their callback, so `MachineObject::parse_json` and everything downstream see our ids only | +| 3mf export | `Plater::export_3mf` writes Bambu's ids into `slice_info.config`, gated on `preset_bundle.is_bbl_vendor()` — the printer reads that file and knows only its own catalog, and no other vendor's export is affected. The CLI has its own writer in `OrcaSlicer.cpp`; it does the same, gated on the `printer_model` prefix that already decides `Print::is_BBL_printer()` for that run | +| Project ingest | `Plater::priv::load_files` reverse-maps the project's `filament_ids` before the bundle ingests them, so a project saved by an older Orca or by BambuStudio still resolves the same presets | +| Prints from the printer's SD card | `SelectMachineDialog::update_print_required_data` reverse-maps each plate's slice-info ids as it adopts the plates, so the AMS mapping dialog pairs them with trays | +| Bambu-specific comparisons | `CalibUtils.cpp`, `DeviceManager.cpp`, `DeviceCore/DevFilaSystem.cpp`, `DeviceCore/DevFilaBlackList.cpp`, `SelectMachine.cpp`, `AMSDryControl.cpp`, `AMSMaterialsSetting.cpp`, `PresetComboBoxes.cpp`, `ColorDecomposeSupport.cpp` | + +That last row is the rule to follow when a new Bambu-specific behaviour is added: **translate +the value you are about to compare, never the table you compare it against.** The shipped data +those sites read is Bambu's and stays verbatim — `white_fila_ids` in +`resources/printers/filaments_blacklist.json`, the calibration id lists in +`resources/printers/<model>.json`, `fila_id` in +`resources/profiles/BBL/filament/filaments_color_codes.json`. + +`tests/slic3rutils/test_bambu_filament_ids.cpp` covers the lookups, the payload rewrite and the +Bambu-specific rules. `orcaslicer_discover_tests` registers a Catch2 tag as a CTest **label**, +not as part of the test name, so `-R` matches nothing here and the filter is `-L`: + +```bash +ctest --test-dir <build dir>/tests/slic3rutils -L BambuFilamentIds +``` + +### Three places the map deliberately does not reach + +The map and its lookups live in the GUI library, which libslic3r cannot link against and which a +GUI-less build does not link at all. Three consequences are known and documented; none is worth +pulling the map down into libslic3r for. + +- **The support display type in `PrintConfig.cpp`.** `DynamicPrintConfig::get_filament_type` + picks `PLA-S` / `Sup.PLA` and `PA-S` / `Sup.PA` for a support filament by testing + `filament_id` against `GFS00` and `GFS01`, and otherwise falls back on `filament_type` — a + fallback that returns those same two pairs for `"PLA"` and `"PA"`. Bambu Support W inherits + `fdm_filament_pla` and Bambu Support G inherits `fdm_filament_pa`, so with their `OF` ids the + fallback produces exactly what the id branches produced. (The only config that ever carries a + singular `filament_id` key is the AMS tray config built in `Plater.cpp`, and that one never + reaches this function.) These two lines are the only mention of a Bambu id anywhere in + libslic3r, and they need no change. +- **Config imports.** `PresetBundle::import_presets` (File ▸ Import ▸ Import Configs, for + `.json` / `.zip` / `.orca_filament` / `.orca_printer` / `.orca_bundle`) and + `PresetBundle::load_config_file` (the CLI's `--load-settings` of a G-code file with an + embedded config) both parse inside libslic3r, out of the GUI's reach, so a Bambu id carried + in such a file lands on the imported preset untranslated. The effect is bounded: that preset + does not auto-match an AMS tray while the stale id is live, and the id does not survive + being saved — `Preset::save` writes a `filament_id` key only for a preset whose `inherits` is + empty, and on the next load an inheriting preset takes its parent's id. A known gap, and not + a regression: nothing forwarded a stale id before either. +- **A build configured without the GUI.** `target_link_libraries(OrcaSlicer libslic3r_gui)` sits + inside `if (SLIC3R_GUI)` in `src/CMakeLists.txt`, so the lookups are not linkable when the GUI + is off. The CLI's 3mf writer in `src/OrcaSlicer.cpp` therefore guards its translation with + `#ifdef SLIC3R_GUI`, and a 3mf that such a build slices for a Bambu printer carries our `OF` + ids in `slice_info.config` rather than Bambu's. Every shipped build enables the GUI, so this + reaches only a purpose-built GUI-less binary. + +One more thing worth recording before it is rediscovered: +`SyncAmsInfoDialog::update_print_required_data` is a structural twin of the SD-card function +above and carries no translation. It has no callers today and its plate list is only ever read +for `printer_model_id`, so it is not a live gap — but wiring it up without adding the reverse +map would silently reproduce the bug. + +## How CI enforces this + +Profile CI (`check_profiles.yml`) runs `check_filament_ids()` tree-wide via +`scripts/orca_extra_profile_check.py`. Its ground truth is +**`scripts/filament_id_snapshot.json` — the sanctioned state**: the id state derived from the +tree must equal the snapshot exactly, in both directions. Any change to the id landscape +therefore surfaces as a diff to that file, and **that snapshot diff is what maintainers review +and gate in a PR**. Never edit the snapshot by hand — `--update-snapshot` regenerates it +deterministically (running it twice changes nothing). The snapshot holds one map, `ids`: each +entry is the product the id is minted from (`filament_vendor`, `filament_type`, `name`) and the +`filaments` claiming it (`Vendor/Filament`), and it sanctions *state*, never exceptions: no check +consults it to excuse a preset from a rule, and there is no grandfather list of any kind. + +The checks, in brief: + +- **Format** — every id occurring in the tree is `OF` + 6 base62 chars. No exceptions: not a + snapshot entry, not BBL. +- **Snapshot equality** — tree claims == snapshot claims **and** each id's declared triple == + its snapshot entry, both directions: any `filament_vendor`/`filament_type`/name change + surfaces as a snapshot diff. +- **Identity** — the id is a function of the triple alone. A declared `OF*` id must equal the + one id its declarer's own triple mints, with no second acceptable value; the id an + instantiated preset *inherits* must equal the mint of *its* own triple, however it inherits + it (a root, a real filament, a library preset — structure rule 1); and every instantiated + system filament must resolve an effective id at all (recall: an id-less one is a hard load + error in C++ that discards the whole vendor bundle); and no two products mint one id (a + base62 collision, resolved by renaming one of them). The errors print the expected id. +- **Reserved namespaces** — `GF*`, `QD_*`, `P<7-hex>` or `"null"` claimed by any vendor, + BBL and Qidi included. +- **Triple integrity** — every declarer must resolve a non-empty `filament_vendor` and + `filament_type` (generics use `"Generic"`), and all declarers of one filament within a + bundle must agree on the triple. +- **Bambu catalog map** — `resources/printers/bambu_filament_ids.json` parses, carries its + `source` / `bambustudio_commit` / `generated` header, keys only `OF`-format ids, maps each + Bambu id at most once, and agrees with the tree on the triple of every row whose key the + tree claims. See [The Bambu catalog map](#the-bambu-catalog-map); the remedy is always to + regenerate, never to hand-edit. + +A profile that declares a **reserved-namespace** id — `GF*`, `QD_*` or `P<7-hex>`, whatever +its vendor — cannot pass the format check, so `--update-snapshot` refuses to sanction it +rather than hide the mistake until CI. For a Bambu-cataloged product, the catalog map is where +the correspondence belongs. Any other new sharing via a *declared* id is caught by the identity +check; sharing through inheritance carries no declaration to check and surfaces only as a new +claim in the snapshot diff — which is exactly why that diff is the gate. + +`orca_extra_profile_check.py` separately holds every declared id to the AMS 8-character limit, +tree-wide and for every vendor alike, scoped to the presets a vendor's index actually +references (a file the index never loads cannot break AMS matching). + +Complementing the Python checks, CI also runs the C++ profile validator with `-f` +(`check_filament_subtypes`): it loads the bundle exactly as the app does and flags any printer +for which two or more compatible filament presets share one `filament_id` — the runtime-shaped +ambiguity check behind structure rule 3. + +## FAQ + +- **A new color of an existing product?** Never a new id — colors are not filaments. +- **A second diameter (1.75 mm and 2.85 mm) of the same product?** A sibling filament with its + own id: two diameters are separately selectable spool products. +- **A high-speed tune of an existing material for another printer model?** Same filament: + keep the base name and inherit its root; no id key needed. +- **A tuned generic ("our profile for Generic PLA")?** Inherit `Generic PLA @System`, keep the + `Generic PLA` base name, set `compatible_printers`; no id key needed. +- **A branded filament that borrows a generic's settings?** Fine — inherit `Generic X @System` + (or any real filament) for the settings and declare the id of your own filament; run + `python scripts/orca_id_tool.py --generate` to mint it. Inheritance never changes the id. +- **I need to fix a filament's `filament_vendor` or `filament_type`.** Fix the config, run + `--generate --vendor <Vendor>` (preview with `--dry-run`), then `--update-snapshot`, and commit + the profile and snapshot diffs together. The id re-derives from the corrected identity, and + nothing forwards the old value, so a tray or record still holding it falls back to matching by + filament type. +- **I need to rename a filament.** Rename the presets (adding `renamed_from`, which keeps the + preset *name* resolving), then `--generate --vendor <Vendor>` (preview with `--dry-run`), then + `--update-snapshot`. The id follows the new filament name; as with any identity fix, the old id + is not forwarded. +- **Can I reuse a `QD_*` id for a Qidi profile?** No — nobody can. It is the device protocol's + own id space: the box composes those values at runtime and no preset carries one. Author + Qidi filaments like any other vendor's. +- **CI says my filament needs an id.** Run `python scripts/orca_id_tool.py --generate`, then + `--update-snapshot`, and commit both diffs. Do not type an id by hand. + +For general profile authoring, see the profile development guide on the +[OrcaSlicer wiki](https://www.orcaslicer.com/wiki). diff --git a/docs/superpowers/plans/2026-07-23-wx-inspectable-on-dpiaware-plan.md b/docs/superpowers/plans/2026-07-23-wx-inspectable-on-dpiaware-plan.md deleted file mode 100644 index 5b3669ace4..0000000000 --- a/docs/superpowers/plans/2026-07-23-wx-inspectable-on-dpiaware-plan.md +++ /dev/null @@ -1,111 +0,0 @@ -# Move `wxInspectable` into `DPIAware` — Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Move `wxInspector::wxInspectable` from individual leaf classes into the common `DPIAware<P>` template so every DPIAware widget is automatically inspectable and gets the inspector keyboard shortcut. - -**Architecture:** `DPIAware<P>` gains `wxInspector::wxInspectable` as a second base class and calls `SetupInspectorAccelerator(this)` in its constructor. `DPIDialog` and `MainFrame` drop their now-redundant `wxInspectable` inheritance and `SetupInspectorAccelerator` calls. - -**Tech Stack:** C++17, wxWidgets, wxInspector - -## Global Constraints - -- Build with `D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe` -- Use `--config RelWithDebInfo` for all builds -- Cross-platform: must compile on Windows, macOS, and Linux -- Match existing code style: PascalCase classes, `#pragma once` -- Do NOT commit files under `.superpowers/` -- Do NOT commit `task.md` - ---- - -### Task 1: Move `wxInspectable` and `SetupInspectorAccelerator` into `DPIAware<P>` - -**Files:** -- Modify: `src/slic3r/GUI/GUI_Utils.hpp:92` (DPIAware template — add wxInspectable base + SetupInspectorAccelerator call) -- Modify: `src/slic3r/GUI/GUI_Utils.hpp:276` (DPIDialog — drop wxInspectable + SetupInspectorAccelerator) -- Modify: `src/slic3r/GUI/MainFrame.hpp:96` (MainFrame — drop wxInspectable) -- Modify: `src/slic3r/GUI/MainFrame.cpp:304` (MainFrame constructor — drop SetupInspectorAccelerator) - -**Interfaces:** -- Consumes: Nothing (standalone refactor) -- Produces: All DPIAware widgets automatically inherit `wxInspector::wxInspectable` and get Ctrl+Shift+I accelerator - -- [ ] **Step 1: Add `wxInspectable` to `DPIAware<P>` and call `SetupInspectorAccelerator`** - -In `src/slic3r/GUI/GUI_Utils.hpp`, line 92, change the base class: - -```cpp -// Before: -template<class P> class DPIAware : public P -// After: -template<class P> class DPIAware : public P, public wxInspector::wxInspectable -``` - -In the constructor body of `DPIAware<P>`, after `this->CenterOnParent();` (currently line 110), add: - -```cpp -SetupInspectorAccelerator(this); -``` - -(`<wx/inspector/inspector.h>` is already included at line 23.) - -- [ ] **Step 2: Remove redundant `wxInspectable` and `SetupInspectorAccelerator` from `DPIDialog`** - -In `src/slic3r/GUI/GUI_Utils.hpp`, line 276, change: - -```cpp -// Before: -class DPIDialog : public DPIAware<wxDialog>, public wxInspector::wxInspectable -// After: -class DPIDialog : public DPIAware<wxDialog> -``` - -In the `DPIDialog` constructor body, remove the `SetupInspectorAccelerator(this);` line (currently line 286). The rest of the constructor stays. - -- [ ] **Step 3: Remove redundant `wxInspectable` from `MainFrame`** - -In `src/slic3r/GUI/MainFrame.hpp`, line 96, change: - -```cpp -// Before: -class MainFrame : public DPIFrame, public wxInspector::wxInspectable -// After: -class MainFrame : public DPIFrame -``` - -`MainFrame` now gets `wxInspectable` through `DPIFrame` → `DPIAware<wxFrame>`. - -- [ ] **Step 4: Remove redundant `SetupInspectorAccelerator` from `MainFrame` constructor** - -In `src/slic3r/GUI/MainFrame.cpp`, line 304, remove the line: - -```cpp -SetupInspectorAccelerator(this); -``` - -It is now called automatically by the `DPIAware<wxFrame>` constructor. - -- [ ] **Step 5: Build to verify compilation** - -```powershell -$cmakePath = "D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -& $cmakePath --build . --config RelWithDebInfo --target ALL_BUILD -- -m -``` - -Expected: Build succeeds with zero new errors or warnings. - -- [ ] **Step 6: Commit** - -```bash -git add src/slic3r/GUI/GUI_Utils.hpp src/slic3r/GUI/MainFrame.hpp src/slic3r/GUI/MainFrame.cpp -git commit -m "refactor: move wxInspectable and SetupInspectorAccelerator into DPIAware - -DPIAware<P> now inherits wxInspector::wxInspectable and calls -SetupInspectorAccelerator in its constructor, making all DPIAware -widgets automatically appear in the inspector tree with the -Ctrl+Shift+I shortcut. Remove redundant wxInspectable inheritance -and SetupInspectorAccelerator calls from DPIDialog and MainFrame. - -Co-Authored-By: Claude <noreply@anthropic.com>" -``` diff --git a/docs/superpowers/plans/2026-07-23-wx-inspector-plugins-plan.md b/docs/superpowers/plans/2026-07-23-wx-inspector-plugins-plan.md deleted file mode 100644 index c3061b223d..0000000000 --- a/docs/superpowers/plans/2026-07-23-wx-inspector-plugins-plan.md +++ /dev/null @@ -1,753 +0,0 @@ -# wxInspector Plugins for OrcaSlicer — Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Build two wxInspector plugins (DPIAware + CustomWidgets) that expose OrcaSlicer custom control properties in the inspector's property grid. - -**Architecture:** Two plugins in a shared folder under `src/slic3r/Utils/wxInspectorPlugins/`. DPIAwarePlugin uses `dynamic_cast<DPIFrame*>/<DPIDialog*>` for detection; CustomWidgetsPlugin uses per-type `dynamic_cast`. Both registered as static singletons via a single inline function in `Registration.hpp`, called from `MainFrame` constructor. - -**Tech Stack:** C++17, wxWidgets, wxInspector plugin API (`wx/inspector/plugin.h`, `wx/inspector/inspector.h`), OrcaSlicer custom widget headers - -## Global Constraints - -- Plugins placed under `src/slic3r/Utils/wxInspectorPlugins/` -- Build with `D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe` -- Minimal source changes: only trivial (one-line) getters/setters added to existing classes -- Cross-platform: must compile on Windows, macOS, and Linux -- Match existing code style: PascalCase classes, snake_case functions, `#pragma once` - ---- - -### Task 1: Add getters/setters to existing Orca widget headers - -**Files:** -- Modify: `src/slic3r/GUI/GUI_Utils.hpp` (DPIAware template — add 4 methods) -- Modify: `src/slic3r/GUI/Widgets/Button.hpp` (add 3 getters) -- Modify: `src/slic3r/GUI/Widgets/CheckBox.hpp` (add 1 getter) -- Modify: `src/slic3r/GUI/Widgets/TextInput.hpp` (add 1 getter) -- Modify: `src/slic3r/GUI/Widgets/LabeledStaticBox.hpp` (add 4 getter declarations) -- Modify: `src/slic3r/GUI/Widgets/LabeledStaticBox.cpp` (add 4 getter implementations) - -**Interfaces:** -- Consumes: Nothing (prerequisite for all other tasks) -- Produces: - - `DPIAware<P>::set_scale_factor(float)`, `DPIAware<P>::set_prev_scale_factor(float)`, `DPIAware<P>::set_em_unit(int)`, `DPIAware<P>::force_rescale() const` - - `Button::GetStyle()`, `Button::GetType()`, `Button::IsSelected()` - - `CheckBox::IsHalfChecked()` - - `TextInput::GetCornerRadius()` - - `LabeledStaticBox::GetCornerRadius()`, `LabeledStaticBox::GetBorderWidth()`, `LabeledStaticBox::GetBorderColor()`, `LabeledStaticBox::GetScale()` - -- [ ] **Step 1: Add DPIAware setters/getter in GUI_Utils.hpp** - -After line 184 (`float prev_scale_factor() const { return m_prev_scale_factor; }`), add: - -```cpp -void set_scale_factor(float v) { m_scale_factor = v; } -void set_prev_scale_factor(float v) { m_prev_scale_factor = v; } -void set_em_unit(int v) { m_em_unit = v; } -bool force_rescale() const { return m_force_rescale; } -``` - -- [ ] **Step 2: Add Button getters in Button.hpp** - -After line 79 (`void SetSelected(bool selected = true) { m_selected = selected; }`), add: - -```cpp -ButtonStyle GetStyle() const { return m_style; } -ButtonType GetType() const { return m_type; } -bool IsSelected() const { return m_selected; } -``` - -- [ ] **Step 3: Add CheckBox getter in CheckBox.hpp** - -After line 16 (`void SetHalfChecked(bool value = true);`), add: - -```cpp -bool IsHalfChecked() const { return m_half_checked; } -``` - -- [ ] **Step 4: Add TextInput getter in TextInput.hpp** - -After line 44 (`void SetCornerRadius(double radius);`), add: - -```cpp -int GetCornerRadius() const { return static_cast<int>(radius); } -``` - -(Note: `radius` is inherited from `StaticBox` which has it as a protected `double` member.) - -- [ ] **Step 5: Add LabeledStaticBox getter declarations in LabeledStaticBox.hpp** - -After line 46 (`bool Enable(bool enable) override;`), add: - -```cpp -int GetCornerRadius() const { return m_radius; } -int GetBorderWidth() const { return m_border_width; } -StateColor GetBorderColor() const { return border_color; } -float GetScale() const { return m_scale; } -``` - -(Note: all of `m_radius`, `m_border_width`, `border_color`, `m_scale` are protected members, accessible to inline methods.) - -- [ ] **Step 6: Commit** - -```bash -git add src/slic3r/GUI/GUI_Utils.hpp src/slic3r/GUI/Widgets/Button.hpp src/slic3r/GUI/Widgets/CheckBox.hpp src/slic3r/GUI/Widgets/TextInput.hpp src/slic3r/GUI/Widgets/LabeledStaticBox.hpp -git commit -m "feat: add getters/setters for wxInspector plugin access - -Add minimal public accessors to DPIAware (set_scale_factor, -set_prev_scale_factor, set_em_unit, force_rescale), Button -(GetStyle, GetType, IsSelected), CheckBox (IsHalfChecked), -TextInput (GetCornerRadius), and LabeledStaticBox -(GetCornerRadius, GetBorderWidth, GetBorderColor, GetScale)." -``` - ---- - -### Task 2: Create Registration helper header - -**Files:** -- Create: `src/slic3r/Utils/wxInspectorPlugins/Registration.hpp` - -**Interfaces:** -- Consumes: Nothing (forward-declares plugin classes) -- Produces: `RegisterOrcaInspectorPlugins()` - -- [ ] **Step 1: Create directory** - -```bash -mkdir -p src/slic3r/Utils/wxInspectorPlugins -``` - -- [ ] **Step 2: Write Registration.hpp** - -```cpp -#pragma once - -namespace wxInspector { -class wxInspectorPlugin; -void RegisterPlugin(wxInspectorPlugin* plugin); -} - -// Forward declare our plugins -class DPIAwarePlugin; -class CustomWidgetsPlugin; - -inline void RegisterOrcaInspectorPlugins() -{ - static DPIAwarePlugin dpiaware; - static CustomWidgetsPlugin customWidgets; - wxInspector::RegisterPlugin(&dpiaware); - wxInspector::RegisterPlugin(&customWidgets); -} -``` - -- [ ] **Step 3: Commit** - -```bash -git add src/slic3r/Utils/wxInspectorPlugins/Registration.hpp -git commit -m "feat: add wxInspector plugin registration helper - -Add RegisterOrcaInspectorPlugins() inline function that creates -and registers the DPIAwarePlugin and CustomWidgetsPlugin as -static instances (matching wxInspector's built-in pattern)." -``` - ---- - -### Task 3: Create DPIAwarePlugin - -**Files:** -- Create: `src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp` -- Create: `src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp` - -**Interfaces:** -- Consumes: Task 1 (DPIAware getters/setters), Task 2 (registration pattern) -- Produces: `class DPIAwarePlugin : public wxInspector::wxInspectorPlugin` - -- [ ] **Step 1: Write DPIAwarePlugin.hpp** - -```cpp -#pragma once - -#include <wx/inspector/plugin.h> - -class DPIAwarePlugin : public wxInspector::wxInspectorPlugin -{ -public: - wxString GetName() const override; - - bool CanProvideProperties(wxClassInfo* info) override; - - wxVector<wxInspector::PropertyDef> GetProperties( - wxInspector::InspectableObject& obj) override; -}; -``` - -- [ ] **Step 2: Write DPIAwarePlugin.cpp** - -```cpp -#include "DPIAwarePlugin.hpp" - -#include "slic3r/GUI/GUI_Utils.hpp" // DPIFrame, DPIDialog, DPIAware<P> - -#include <wx/window.h> - -namespace { - -template<typename T> -void addDPIProps(T* dpi, wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Scale Factor", "DPI Scaling", PropertyType::String, - wxString::Format("%.2f", dpi->scale_factor()), false, {}, - [dpi]() { return wxString::Format("%.2f", dpi->scale_factor()); }, - [dpi](const wxString& v) { - double val; - if (wxSscanf(v, "%lf", &val) != 1) return false; - dpi->set_scale_factor((float) val); - return true; - }}); - - props.push_back({"Prev Scale Factor", "DPI Scaling", PropertyType::String, - wxString::Format("%.2f", dpi->prev_scale_factor()), false, {}, - [dpi]() { return wxString::Format("%.2f", dpi->prev_scale_factor()); }, - [dpi](const wxString& v) { - double val; - if (wxSscanf(v, "%lf", &val) != 1) return false; - dpi->set_prev_scale_factor((float) val); - return true; - }}); - - props.push_back({"EM Unit", "DPI Scaling", PropertyType::Integer, - wxString::Format("%d", dpi->em_unit()), false, {}, - [dpi]() { return wxString::Format("%d", dpi->em_unit()); }, - [dpi](const wxString& v) { - long val; - if (!v.ToLong(&val)) return false; - dpi->set_em_unit((int) val); - return true; - }}); - - props.push_back({"Normal Font", "DPI Scaling", PropertyType::ReadOnly, - dpi->normal_font().GetNativeFontInfoDesc(), true, {}, - [dpi]() { return dpi->normal_font().GetNativeFontInfoDesc(); }, - nullptr}); - - props.push_back({"Force Rescale", "DPI Scaling", PropertyType::Boolean, - dpi->force_rescale() ? "true" : "false", true, {}, - [dpi]() { return dpi->force_rescale() ? "true" : "false"; }, - nullptr}); -} - -} // anonymous namespace - -wxString DPIAwarePlugin::GetName() const -{ - return "OrcaDPIAware"; -} - -bool DPIAwarePlugin::CanProvideProperties(wxClassInfo* info) -{ - return info->IsKindOf(CLASSINFO(wxWindow)); -} - -wxVector<wxInspector::PropertyDef> DPIAwarePlugin::GetProperties( - wxInspector::InspectableObject& obj) -{ - wxVector<wxInspector::PropertyDef> props; - wxWindow* win = obj.AsWindow(); - if (!win) return props; - - if (auto* frame = dynamic_cast<DPIFrame*>(win)) { - addDPIProps(frame, props); - } else if (auto* dlg = dynamic_cast<DPIDialog*>(win)) { - addDPIProps(dlg, props); - } - - return props; -} -``` - -- [ ] **Step 3: Commit** - -```bash -git add src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp -git commit -m "feat: add DPIAware wxInspector plugin - -Exposes DPI scaling properties (scale_factor, prev_scale_factor, -em_unit, normal_font, force_rescale) on DPIFrame and DPIDialog -widgets. Uses dynamic_cast for detection and a template helper -to capture the correct static type for lambda accessors." -``` - ---- - -### Task 4: Create CustomWidgetsPlugin - -**Files:** -- Create: `src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp` -- Create: `src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp` - -**Interfaces:** -- Consumes: Task 1 (all widget getters), Task 2 (registration pattern) -- Produces: `class CustomWidgetsPlugin : public wxInspector::wxInspectorPlugin` - -- [ ] **Step 1: Write CustomWidgetsPlugin.hpp** - -```cpp -#pragma once - -#include <wx/inspector/plugin.h> - -class CustomWidgetsPlugin : public wxInspector::wxInspectorPlugin -{ -public: - wxString GetName() const override; - - bool CanProvideProperties(wxClassInfo* info) override; - - wxVector<wxInspector::PropertyDef> GetProperties( - wxInspector::InspectableObject& obj) override; - -private: - void addButtonProps(class Button* btn, - wxVector<wxInspector::PropertyDef>& props); - void addCheckBoxProps(class CheckBox* cb, - wxVector<wxInspector::PropertyDef>& props); - void addTextInputProps(class TextInput* ti, - wxVector<wxInspector::PropertyDef>& props); - void addSwitchButtonProps(class SwitchButton* sb, - wxVector<wxInspector::PropertyDef>& props); - void addProgressBarProps(class ProgressBar* pb, - wxVector<wxInspector::PropertyDef>& props); - void addLabelProps(class Label* lbl, - wxVector<wxInspector::PropertyDef>& props); - void addLabeledStaticBoxProps(class LabeledStaticBox* lsb, - wxVector<wxInspector::PropertyDef>& props); -}; -``` - -- [ ] **Step 2: Write CustomWidgetsPlugin.cpp — includes and GetName/CanProvideProperties** - -```cpp -#include "CustomWidgetsPlugin.hpp" - -#include "slic3r/GUI/Widgets/Button.hpp" -#include "slic3r/GUI/Widgets/CheckBox.hpp" -#include "slic3r/GUI/Widgets/TextInput.hpp" -#include "slic3r/GUI/Widgets/SwitchButton.hpp" -#include "slic3r/GUI/Widgets/ProgressBar.hpp" -#include "slic3r/GUI/Widgets/Label.hpp" -#include "slic3r/GUI/Widgets/LabeledStaticBox.hpp" - -#include <wx/window.h> -#include <wx/tglbtn.h> - -wxString CustomWidgetsPlugin::GetName() const -{ - return "OrcaCustomWidgets"; -} - -bool CustomWidgetsPlugin::CanProvideProperties(wxClassInfo* info) -{ - return info->IsKindOf(CLASSINFO(wxWindow)); -} - -wxVector<wxInspector::PropertyDef> CustomWidgetsPlugin::GetProperties( - wxInspector::InspectableObject& obj) -{ - wxVector<wxInspector::PropertyDef> props; - wxWindow* win = obj.AsWindow(); - if (!win) return props; - - if (auto* btn = dynamic_cast<Button*>(win)) - addButtonProps(btn, props); - if (auto* cb = dynamic_cast<CheckBox*>(win)) - addCheckBoxProps(cb, props); - if (auto* ti = dynamic_cast<TextInput*>(win)) - addTextInputProps(ti, props); - if (auto* sb = dynamic_cast<SwitchButton*>(win)) - addSwitchButtonProps(sb, props); - if (auto* pb = dynamic_cast<ProgressBar*>(win)) - addProgressBarProps(pb, props); - if (auto* lbl = dynamic_cast<Label*>(win)) - addLabelProps(lbl, props); - if (auto* lsb = dynamic_cast<LabeledStaticBox*>(win)) - addLabeledStaticBoxProps(lsb, props); - - return props; -} -``` - -- [ ] **Step 3: Write CustomWidgetsPlugin.cpp — addButtonProps** - -```cpp -void CustomWidgetsPlugin::addButtonProps(Button* btn, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - wxVector<wxString> styleChoices; - styleChoices.push_back("Regular"); - styleChoices.push_back("Confirm"); - styleChoices.push_back("Alert"); - styleChoices.push_back("Disabled"); - - auto styleToStr = [](ButtonStyle s) -> wxString { - switch (s) { - case ButtonStyle::Regular: return "Regular"; - case ButtonStyle::Confirm: return "Confirm"; - case ButtonStyle::Alert: return "Alert"; - case ButtonStyle::Disabled: return "Disabled"; - } - return "Regular"; - }; - - props.push_back({"Button Style", "Orca Button", PropertyType::Choice, - styleToStr(btn->GetStyle()), false, styleChoices, - [btn, styleToStr]() { return styleToStr(btn->GetStyle()); }, - [btn](const wxString& v) { - ButtonStyle s = ButtonStyle::Regular; - if (v == "Confirm") s = ButtonStyle::Confirm; - else if (v == "Alert") s = ButtonStyle::Alert; - else if (v == "Disabled") s = ButtonStyle::Disabled; - btn->SetStyle(s, btn->GetType()); - return true; - }}); - - wxVector<wxString> typeChoices; - typeChoices.push_back("Compact"); - typeChoices.push_back("Window"); - typeChoices.push_back("Choice"); - typeChoices.push_back("Parameter"); - typeChoices.push_back("Icon"); - typeChoices.push_back("Expanded"); - - auto typeToStr = [](ButtonType t) -> wxString { - switch (t) { - case ButtonType::Compact: return "Compact"; - case ButtonType::Window: return "Window"; - case ButtonType::Choice: return "Choice"; - case ButtonType::Parameter: return "Parameter"; - case ButtonType::Icon: return "Icon"; - case ButtonType::Expanded: return "Expanded"; - } - return "Compact"; - }; - - props.push_back({"Button Type", "Orca Button", PropertyType::Choice, - typeToStr(btn->GetType()), false, typeChoices, - [btn, typeToStr]() { return typeToStr(btn->GetType()); }, - [btn](const wxString& v) { - ButtonType t = ButtonType::Compact; - if (v == "Window") t = ButtonType::Window; - else if (v == "Choice") t = ButtonType::Choice; - else if (v == "Parameter") t = ButtonType::Parameter; - else if (v == "Icon") t = ButtonType::Icon; - else if (v == "Expanded") t = ButtonType::Expanded; - btn->SetStyle(btn->GetStyle(), t); - return true; - }}); - - props.push_back({"Selected", "Orca Button", PropertyType::Boolean, - btn->IsSelected() ? "true" : "false", false, {}, - [btn]() { return btn->IsSelected() ? "true" : "false"; }, - [btn](const wxString& v) { - btn->SetSelected(v == "true"); - btn->Refresh(); - return true; - }}); -} -``` - -- [ ] **Step 4: Write CustomWidgetsPlugin.cpp — addCheckBoxProps** - -```cpp -void CustomWidgetsPlugin::addCheckBoxProps(CheckBox* cb, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Half Checked", "Orca CheckBox", PropertyType::Boolean, - cb->IsHalfChecked() ? "true" : "false", false, {}, - [cb]() { return cb->IsHalfChecked() ? "true" : "false"; }, - [cb](const wxString& v) { - cb->SetHalfChecked(v == "true"); - return true; - }}); -} -``` - -- [ ] **Step 5: Write CustomWidgetsPlugin.cpp — addTextInputProps** - -```cpp -void CustomWidgetsPlugin::addTextInputProps(TextInput* ti, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Label", "Orca TextInput", PropertyType::String, - ti->GetLabel(), false, {}, - [ti]() { return ti->GetLabel(); }, - [ti](const wxString& v) { ti->SetLabel(v); return true; }}); - - props.push_back({"Text Value", "Orca TextInput", PropertyType::String, - ti->GetTextCtrl()->GetValue(), false, {}, - [ti]() { return ti->GetTextCtrl()->GetValue(); }, - [ti](const wxString& v) { ti->GetTextCtrl()->SetValue(v); return true; }}); - - props.push_back({"Corner Radius", "Orca TextInput", PropertyType::Integer, - wxString::Format("%d", ti->GetCornerRadius()), false, {}, - [ti]() { return wxString::Format("%d", ti->GetCornerRadius()); }, - [ti](const wxString& v) { - long val; - if (!v.ToLong(&val)) return false; - ti->SetCornerRadius((double) val); - ti->Refresh(); - return true; - }}); -} -``` - -- [ ] **Step 6: Write CustomWidgetsPlugin.cpp — addSwitchButtonProps** - -```cpp -void CustomWidgetsPlugin::addSwitchButtonProps(SwitchButton* sb, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Value", "Orca SwitchButton", PropertyType::Boolean, - sb->GetValue() ? "true" : "false", false, {}, - [sb]() { return sb->GetValue() ? "true" : "false"; }, - [sb](const wxString& v) { - sb->SetValue(v == "true"); - return true; - }}); -} -``` - -(Note: `GetValue()` and `SetValue()` are inherited from `wxBitmapToggleButton` → `wxToggleButton`.) - -- [ ] **Step 7: Write CustomWidgetsPlugin.cpp — addProgressBarProps** - -```cpp -void CustomWidgetsPlugin::addProgressBarProps(ProgressBar* pb, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Proportion", "Orca ProgressBar", PropertyType::String, - wxString::Format("%.2f", pb->m_proportion), false, {}, - [pb]() { return wxString::Format("%.2f", pb->m_proportion); }, - [pb](const wxString& v) { - double val; - if (wxSscanf(v, "%lf", &val) != 1) return false; - pb->m_proportion = val; - pb->Refresh(); - return true; - }}); - - props.push_back({"Show Number", "Orca ProgressBar", PropertyType::Boolean, - pb->m_shownumber ? "true" : "false", false, {}, - [pb]() { return pb->m_shownumber ? "true" : "false"; }, - [pb](const wxString& v) { - pb->m_shownumber = (v == "true"); - pb->Refresh(); - return true; - }}); -} -``` - -(Note: `m_proportion` and `m_shownumber` are public members on `ProgressBar`.) - -- [ ] **Step 8: Write CustomWidgetsPlugin.cpp — addLabelProps** - -```cpp -void CustomWidgetsPlugin::addLabelProps(Label* lbl, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - bool isHyperlink = (lbl->GetWindowStyleFlag() & 0x0020) != 0; // LB_HYPERLINK - - props.push_back({"Is Hyperlink", "Orca Label", PropertyType::Boolean, - isHyperlink ? "true" : "false", true, {}, - [lbl]() { - return (lbl->GetWindowStyleFlag() & 0x0020) ? "true" : "false"; - }, - nullptr}); - - props.push_back({"Font Point Size", "Orca Label", PropertyType::ReadOnly, - wxString::Format("%d", lbl->GetFont().GetPointSize()), true, {}, - [lbl]() { - return wxString::Format("%d", lbl->GetFont().GetPointSize()); - }, - nullptr}); -} -``` - -- [ ] **Step 9: Write CustomWidgetsPlugin.cpp — addLabeledStaticBoxProps** - -```cpp -void CustomWidgetsPlugin::addLabeledStaticBoxProps(LabeledStaticBox* lsb, - wxVector<wxInspector::PropertyDef>& props) -{ - using namespace wxInspector; - - props.push_back({"Corner Radius", "LabeledStaticBox", PropertyType::Integer, - wxString::Format("%d", lsb->GetCornerRadius()), false, {}, - [lsb]() { return wxString::Format("%d", lsb->GetCornerRadius()); }, - [lsb](const wxString& v) { - long val; - if (!v.ToLong(&val)) return false; - lsb->SetCornerRadius((int) val); - return true; - }}); - - props.push_back({"Border Width", "LabeledStaticBox", PropertyType::Integer, - wxString::Format("%d", lsb->GetBorderWidth()), false, {}, - [lsb]() { return wxString::Format("%d", lsb->GetBorderWidth()); }, - [lsb](const wxString& v) { - long val; - if (!v.ToLong(&val)) return false; - lsb->SetBorderWidth((int) val); - return true; - }}); - - // Border Color: display as hex string - wxColour bc = lsb->GetBorderColor().colorForStates(0); - props.push_back({"Border Color", "LabeledStaticBox", PropertyType::String, - bc.GetAsString(wxC2S_HTML_SYNTAX), false, {}, - [lsb]() { - return lsb->GetBorderColor() - .colorForStates(0) - .GetAsString(wxC2S_HTML_SYNTAX); - }, - [lsb](const wxString& v) { - wxColour c(v); - if (!c.IsOk()) return false; - lsb->SetBorderColor(StateColor(c)); - return true; - }}); - - props.push_back({"Scale", "LabeledStaticBox", PropertyType::ReadOnly, - wxString::Format("%.2f", lsb->GetScale()), true, {}, - [lsb]() { return wxString::Format("%.2f", lsb->GetScale()); }, - nullptr}); -} -``` - -- [ ] **Step 10: Commit** - -```bash -git add src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp -git commit -m "feat: add OrcaCustomWidgets wxInspector plugin - -Exposes Orca-specific properties on 7 widget types: -- Button: Style, Type, Selected -- CheckBox: Half Checked -- TextInput: Label, Text Value, Corner Radius -- SwitchButton: Value -- ProgressBar: Proportion, Show Number -- Label: Is Hyperlink, Font Point Size -- LabeledStaticBox: Corner Radius, Border Width, Border Color, Scale - -Each widget type uses dynamic_cast for safe detection." -``` - ---- - -### Task 5: Wire plugins into MainFrame and CMakeLists - -**Files:** -- Modify: `src/slic3r/GUI/MainFrame.cpp` (add include + registration call) -- Modify: `src/slic3r/CMakeLists.txt` (add 4 source files) - -**Interfaces:** -- Consumes: Tasks 1-4 (all plugins and registration helper) -- Produces: Registered plugins available at runtime, buildable project - -- [ ] **Step 1: Add include in MainFrame.cpp** - -After the existing includes (around line 30, near the other Utils includes), add: - -```cpp -#include "slic3r/Utils/wxInspectorPlugins/Registration.hpp" -``` - -- [ ] **Step 2: Add registration call in MainFrame constructor** - -After `SetupInspectorAccelerator(this);` (currently line ~303), add: - -```cpp -RegisterOrcaInspectorPlugins(); -``` - -- [ ] **Step 3: Add source files to CMakeLists.txt** - -Find the `SLIC3R_GUI_SOURCES` list in `src/slic3r/CMakeLists.txt`. After the existing `Utils/*.cpp` entries (around line 650-754), add: - -```cmake -Utils/wxInspectorPlugins/DPIAwarePlugin.hpp -Utils/wxInspectorPlugins/DPIAwarePlugin.cpp -Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp -Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp -Utils/wxInspectorPlugins/Registration.hpp -``` - -(Note: Add all 5 files — 2 .hpp + 2 .cpp + 1 Registration.hpp. wxWidgets cmake needs headers listed too for the resource system.) - -- [ ] **Step 4: Commit** - -```bash -git add src/slic3r/GUI/MainFrame.cpp src/slic3r/CMakeLists.txt -git commit -m "feat: wire wxInspector plugins into MainFrame and build - -- Call RegisterOrcaInspectorPlugins() after SetupInspectorAccelerator -- Add all plugin source files to SLIC3R_GUI_SOURCES" -``` - ---- - -### Task 6: Build and verify - -**Files:** -- None modified (verification only) - -- [ ] **Step 1: Configure the build** - -```powershell -$cmakePath = "D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -& $cmakePath --build . --config Debug --target ALL_BUILD -- -m -``` - -Expected: Build succeeds with zero errors and zero warnings from our new files. - -- [ ] **Step 2: Fix any compilation errors** - -If the build fails: -- Check that `#include` paths resolve (the `slic3r/GUI/…` relative paths use `src/` as the include root — verify this is set up in CMake via `include_directories`) -- Check that `ButtonStyle` and `ButtonType` enums are visible (they're defined in `Button.hpp`) -- Check that `StateColor` constructor from `wxColour` is valid (it has `StateColor(wxColour const&)`) -- Check that `LabeledStaticBox::GetBorderColor()` returns by value (StateColor copy is fine) -- On macOS: static box margin removal call needs `#ifdef __WXOSX__` guard - -- [ ] **Step 3: Launch OrcaSlicer and verify inspector** - -Launch the built OrcaSlicer, press Ctrl+Shift+I to open the inspector: -1. Select the MainFrame in the tree — verify "DPI Scaling" category appears with Scale Factor, Prev Scale Factor, EM Unit, Normal Font, Force Rescale -2. Select an Orca Button — verify "Orca Button" category appears -3. Select an Orca CheckBox — verify "Orca CheckBox" category appears -4. Edit a property value (e.g., Scale Factor) — verify the setter applies correctly -5. Select a LabeledStaticBox — verify corner radius, border width, border color, scale appear - -- [ ] **Step 5: Commit (if fixes were needed) or mark complete** - -```bash -git status -``` - -If clean: verification complete. If changes were made: `git add` and commit with fix message. diff --git a/docs/superpowers/plans/2026-08-14-ffmpeg-player-macos.md b/docs/superpowers/plans/2026-08-14-ffmpeg-player-macos.md deleted file mode 100644 index 811626fc8b..0000000000 --- a/docs/superpowers/plans/2026-08-14-ffmpeg-player-macos.md +++ /dev/null @@ -1,376 +0,0 @@ -# macOS FFmpeg Media Player Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Make macOS use the same FFmpeg-based media player (`wxMediaCtrl3` + `AVVideoDecoder`) as Windows/Linux, linking the static FFmpeg libraries from the deps build, and remove the old `wxMediaCtrl2.mm` BambuPlayer-based player. - -**Architecture:** The new player is platform-neutral C++ already used on Linux/Windows. Enabling it on macOS is pure build wiring: compile `wxMediaCtrl3.cpp` + `AVVideoDecoder.cpp` on macOS, drop the `__WXMAC__` alias that redirects `wxMediaCtrl3` to the old `wxMediaCtrl2`, and link static FFmpeg (`libavcodec.a`/`libswscale.a`/`libavutil.a`) from the deps install. The Bambu stream API is dlsym'd at runtime from the network plugin (`libBambuSource.dylib`), which already exports it — no plugin changes needed. Rendering reuses the existing `wxImage` → `DrawBitmap` paint path (same as Linux). - -**Tech Stack:** C++17, wxWidgets, CMake, FFmpeg 7.0.3 (libavcodec/libswscale/libavutil), macOS (Xcode generator), `deps/` ExternalProject build system. - -## Global Constraints - -- Branch: `dev/ffmpeg-player-macos`. Commit after every task. -- **Linux and Windows builds must not change** — the FFmpeg deps flag change is guarded by `APPLE`; Linux keeps `--enable-shared`, Windows keeps its prebuilt DLL zips. -- Static FFmpeg only on macOS: deps produce `libavcodec.a`/`libswscale.a`/`libavutil.a`; the app links those explicitly — the app binary must have **no** `libav*` dylib references (`otool -L` check). -- Follow existing code style: PascalCase classes, snake_case functions, C++17. -- No changes to `StatusPanel.cpp`, `MediaPlayCtrl.*`, or the BambuTunnel interface — the app already creates `wxMediaCtrl3` and uses only its public interface. -- The player cannot be unit-tested (hardware/plugin-dependent GUI code); verification is build-level, link-level, and manual runtime on a Mac. -- `localization/i18n/list.txt` references only `wxMediaCtrl2.cpp` (Win/Linux, stays) — no translation-list changes needed. -- Build dirs on the dev machine: main app = `build_arm64/` (Xcode generator, multi-config), deps = `deps/build/arm64/` (Unix Makefiles). App target name: `OrcaSlicer`. Substitute your own configured build dirs where noted. - ---- - -### Task 1: Enable wxMediaCtrl3 on macOS and link static FFmpeg - -**Files:** -- Modify: `src/slic3r/GUI/wxMediaCtrl3.h` (lines 18–22: the `#ifdef __WXMAC__` alias branch) -- Modify: `src/slic3r/GUI/wxMediaCtrl3.cpp:13` (uncomment the event define) -- Modify: `src/slic3r/GUI/wxMediaCtrl2.cpp:101` (remove the event define) -- Modify: `src/slic3r/CMakeLists.txt` (APPLE source list ~lines 779–792; FFmpeg link block ~lines 905–910) - -**Interfaces:** -- Consumes: nothing new (all classes already exist). -- Produces: `wxMediaCtrl3` class compiled on macOS with the same interface as Linux/Windows — `Load(wxURI)`, `Play()`, `Stop()`, `SetIdleImage(wxString)`, `GetState()`, `GetLastError()`, `GetVideoSize()`, event `EVT_MEDIA_CTRL_STAT` defined once in the lib (from `wxMediaCtrl3.cpp`). - -- [ ] **Step 1: Remove the macOS alias in wxMediaCtrl3.h** - -Current (lines 16–23 of `src/slic3r/GUI/wxMediaCtrl3.h`): - -```cpp -void wxMediaCtrl_OnSize(wxWindow * ctrl, wxSize const & videoSize, int width, int height); - -#ifdef __WXMAC__ - -#include "wxMediaCtrl2.h" -#define wxMediaCtrl3 wxMediaCtrl2 - -#else - -#define BAMBU_DYNAMIC -``` - -New: - -```cpp -void wxMediaCtrl_OnSize(wxWindow * ctrl, wxSize const & videoSize, int width, int height); - -#define BAMBU_DYNAMIC -``` - -Also remove the matching `#endif` that closed the `#else` branch (the one before the final `#endif /* wxMediaCtrl3_h */`), so the file's `#ifndef`/`#endif` guard pair stays balanced. - -- [ ] **Step 2: Move the EVT_MEDIA_CTRL_STAT definition into wxMediaCtrl3.cpp** - -In `src/slic3r/GUI/wxMediaCtrl3.cpp:13`, uncomment: - -```cpp -//wxDEFINE_EVENT(EVT_MEDIA_CTRL_STAT, wxCommandEvent); -``` - -becomes: - -```cpp -wxDEFINE_EVENT(EVT_MEDIA_CTRL_STAT, wxCommandEvent); -``` - -In `src/slic3r/GUI/wxMediaCtrl2.cpp:101`, delete: - -```cpp -wxDEFINE_EVENT(EVT_MEDIA_CTRL_STAT, wxCommandEvent); -``` - -(One definition total in the lib — `MediaPlayCtrl.cpp:59` binds this event on the media ctrl.) - -- [ ] **Step 3: Update the APPLE source list in CMakeLists.txt** - -In `src/slic3r/CMakeLists.txt`, the APPLE branch (currently compiles `wxMediaCtrl2.mm`, which becomes dead on macOS): - -```cmake - GUI/wxMediaCtrl2.mm - GUI/wxMediaCtrl2.h - GUI/wxMediaCtrl3.h - ) -``` - -becomes: - -```cmake - GUI/AVVideoDecoder.cpp - GUI/AVVideoDecoder.hpp - GUI/wxMediaCtrl3.cpp - GUI/wxMediaCtrl3.h - ) -``` - -(The `else ()` branch — Win/Linux — stays exactly as it is.) - -- [ ] **Step 4: Link static FFmpeg on macOS** - -In `src/slic3r/CMakeLists.txt`, the FFmpeg block (currently `if (NOT APPLE)`): - -```cmake -if (NOT APPLE) - pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET - libavcodec - libswscale - libavutil - ) - target_link_libraries(libslic3r_gui PkgConfig::LIBAV) -endif() -``` - -becomes: - -```cmake -if (APPLE) - # Static FFmpeg from the deps install: nothing to bundle into the .app, - # no rpath/install_name handling. Order matters: avcodec -> swscale -> avutil. - find_library(LIBAVCODEC_LIBRARY NAMES libavcodec.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) - find_library(LIBSWSCALE_LIBRARY NAMES libswscale.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) - find_library(LIBAVUTIL_LIBRARY NAMES libavutil.a PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) - target_link_libraries(libslic3r_gui ${LIBAVCODEC_LIBRARY} ${LIBSWSCALE_LIBRARY} ${LIBAVUTIL_LIBRARY}) - target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_PREFIX_PATH}/include) -else () - pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET - libavcodec - libswscale - libavutil - ) - target_link_libraries(libslic3r_gui PkgConfig::LIBAV) -endif() -``` - -The deps install (`${CMAKE_PREFIX_PATH}/lib`) already contains the three `.a` files from the existing arm64 deps build — no deps rebuild needed for this task. - -- [ ] **Step 5: Reconfigure and build the app** - -Run (Xcode generator; `cmake` re-runs automatically on build): - -```bash -cmake --build build_arm64 --config RelWithDebInfo --target OrcaSlicer -``` - -Expected: configure succeeds (no `pkg_check_modules` errors on macOS, `find_library` finds all three `.a` files), compile succeeds (`wxMediaCtrl3.cpp` and `AVVideoDecoder.cpp` compile on macOS without changes), link succeeds. - -If CMake complains that `wxMediaCtrl3.h` is included but not in the source list or similar IDE-only warnings — ignore; headers in the list are cosmetic. - -- [ ] **Step 6: Verify no dynamic FFmpeg dependency** - -```bash -otool -L build_arm64/src/RelWithDebInfo/OrcaSlicer.app/Contents/MacOS/OrcaSlicer | grep -i "libav" || echo "OK: no dynamic FFmpeg" -``` - -Expected: prints `OK: no dynamic FFmpeg` (empty grep output). This is the whole point of static linking — nothing to bundle into the `.app`. - -- [ ] **Step 7: Quick sanity — macOS unit tests still pass** - -```bash -ctest --test-dir build_arm64/tests/libslic3r --output-on-failure -``` - -Expected: passes (add `-C RelWithDebInfo` if the multi-config generator requires it). If no tests were built in this build dir, build target `tests` first (`cmake --build build_arm64 --config RelWithDebInfo --target tests`). - -- [ ] **Step 8: Commit** - -```bash -git add src/slic3r/CMakeLists.txt src/slic3r/GUI/wxMediaCtrl3.h src/slic3r/GUI/wxMediaCtrl3.cpp src/slic3r/GUI/wxMediaCtrl2.cpp -git commit -m "feat: use FFmpeg media player on macOS with static FFmpeg" -``` - ---- - -### Task 2: Static-only FFmpeg in the macOS deps build - -**Files:** -- Modify: `deps/FFMPEG/FFMPEG.cmake` (non-MSVC branch, APPLE section and CONFIGURE_COMMAND) - -**Interfaces:** -- Consumes: nothing. -- Produces: a deps install on macOS containing only `libavcodec.a`, `libswscale.a`, `libavutil.a` (+ headers) — no `libav*` dylibs, so no bundling/rpath machinery is ever needed on macOS. Linux and Windows output are unchanged. - -- [ ] **Step 1: Add the static flag variable** - -In `deps/FFMPEG/FFMPEG.cmake`, inside the non-MSVC `else ()` branch, in the existing `if (APPLE)` block: - -```cmake - if (APPLE) - set(_minos_cmd - "CFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}" - "LDFLAGS=-mmacosx-version-min=${DEP_OSX_TARGET}" - ) -``` - -add after the `_minos_cmd` set: - -```cmake - # Static FFmpeg: nothing to bundle into the .app, no rpath handling. - # Shared flags must come AFTER --enable-shared below so they win. - set(_link_cmd --enable-static --disable-shared) -``` - -and add a matching `else ()` after the `if (IS_CROSS_COMPILE) ... endif()` block inside that `if (APPLE)`, so non-Apple Unix keeps shared: - -```cmake - else () - set(_link_cmd --enable-shared) - endif () -``` - -(If the existing `if (IS_CROSS_COMPILE)` block is the last thing inside `if (APPLE)`, the new `else ()` closes the `if (APPLE)` itself.) - -- [ ] **Step 2: Use the variable in CONFIGURE_COMMAND** - -In the `ExternalProject_Add(dep_FFMPEG ...)` configure command: - -```cmake - "--prefix=${DESTDIR}" - --enable-shared -``` - -becomes: - -```cmake - "--prefix=${DESTDIR}" - --enable-shared - ${_link_cmd} -``` - -Order matters: `--enable-shared` comes first, then `--enable-static --disable-shared` (APPLE) or `--enable-shared` (Linux) — the last flag wins in FFmpeg configure. - -- [ ] **Step 3: Rebuild the FFmpeg dep (slow — several minutes, run in background)** - -The changed CONFIGURE_COMMAND invalidates the ExternalProject stamp, so this re-configures and rebuilds FFmpeg: - -```bash -cmake --build deps/build/arm64 --target dep_FFMPEG -``` - -For a fully clean static-only check (removes the previous shared build tree, which can leave stale `.dylib` files behind in the in-source build): - -```bash -rm -rf deps/build/arm64/dep_FFMPEG-prefix -cmake --build deps/build/arm64 --target dep_FFMPEG -``` - -- [ ] **Step 4: Verify the artifacts** - -```bash -ls deps/build/arm64/dep_FFMPEG-prefix/src/dep_FFMPEG/libavcodec/*.a -ls deps/build/arm64/dep_FFMPEG-prefix/src/dep_FFMPEG/libavcodec/*.dylib 2>/dev/null || echo "OK: no dylibs" -``` - -Expected: `libavcodec.a` present, second command prints `OK: no dylibs`. Check `libavutil` and `libswscale` the same way. - -- [ ] **Step 5: Verify the app still links against the static libs** - -```bash -cmake --build build_arm64 --config RelWithDebInfo --target OrcaSlicer -otool -L build_arm64/src/RelWithDebInfo/OrcaSlicer.app/Contents/MacOS/OrcaSlicer | grep -i "libav" || echo "OK: no dynamic FFmpeg" -``` - -Expected: build succeeds, `OK: no dynamic FFmpeg`. - -- [ ] **Step 6: Commit** - -```bash -git add deps/FFMPEG/FFMPEG.cmake -git commit -m "build: build static-only FFmpeg for macOS deps" -``` - ---- - -### Task 3: Remove the old macOS player - -**Files:** -- Delete: `src/slic3r/GUI/wxMediaCtrl2.mm` -- Delete: `src/slic3r/GUI/BambuPlayer/BambuPlayer.h` (and the empty `BambuPlayer/` dir) -- Modify: `src/slic3r/GUI/wxMediaCtrl2.h` (remove the `#ifdef __WXMAC__` section, lines 22–60) - -**Interfaces:** -- Consumes: Task 1 (macOS no longer references `wxMediaCtrl2` — nothing includes `wxMediaCtrl2.h` on macOS anymore; `wxMediaCtrl2` is never instantiated on any platform). -- Produces: a clean tree where the old BambuPlayer-based player is gone from macOS. The `BambuPlayer` ObjC class itself remains inside the network plugin (external prebuilt binary) — only the GUI-side consumer is removed. - -- [ ] **Step 1: Delete the old player files** - -```bash -git rm src/slic3r/GUI/wxMediaCtrl2.mm -git rm src/slic3r/GUI/BambuPlayer/BambuPlayer.h -rmdir src/slic3r/GUI/BambuPlayer 2>/dev/null || true -``` - -- [ ] **Step 2: Strip the __WXMAC__ section from wxMediaCtrl2.h** - -In `src/slic3r/GUI/wxMediaCtrl2.h`, remove the entire macOS branch of the `#ifdef __WXMAC__` guard — from `#ifdef __WXMAC__` (line 22) through the closing `};` of the mac class (line 60), and the `#else` marker — leaving only the non-mac `class wxMediaCtrl2 : public wxMediaCtrl { ... };` definition followed by the final `#endif /* wxMediaCtrl2_h */`. The resulting file keeps its `#ifndef`/`#endif` include guard pair balanced. - -The file stays on disk because Win/Linux compile `wxMediaCtrl2.cpp`, which includes it. - -- [ ] **Step 3: Grep for leftover references** - -```bash -grep -rn "wxMediaCtrl2.mm\|BambuPlayer/BambuPlayer.h\|BambuPlayer" src/slic3r --include="*.cpp" --include="*.h" --include="*.mm" --include="*.txt" -``` - -Expected: no hits in `src/slic3r/GUI` (ignore `localization/i18n/list.txt:196`, which lists the Win/Linux `wxMediaCtrl2.cpp` and stays). - -- [ ] **Step 4: Rebuild the app** - -```bash -cmake --build build_arm64 --config RelWithDebInfo --target OrcaSlicer -``` - -Expected: configure + compile + link succeed with the deleted files gone. - -- [ ] **Step 5: Commit** - -```bash -git add -A src/slic3r/GUI -git commit -m "refactor: remove old BambuPlayer-based media player from macOS" -``` - ---- - -### Task 4: Runtime verification on hardware - -**Files:** none — manual verification. - -**Interfaces:** consumes all prior tasks. Final gate: the new player must actually stream on a Mac. - -- [ ] **Step 1: Launch the freshly built app** - -```bash -open build_arm64/src/RelWithDebInfo/OrcaSlicer.app -``` - -Expected: app launches normally; no crash in the network/device subsystem. - -- [ ] **Step 2: Load the network plugin and open the Device tab** - -Log in / ensure the network plugin (`libBambuSource.dylib`) loads, select a printer, open the Device tab (camera monitoring panel). - -Expected: the camera preview area shows the idle image initially (no crash — this exercises `wxMediaCtrl3::SetIdleImage` and the `wxImage` load path on macOS for the first time). - -- [ ] **Step 3: Start the stream and watch it render** - -Click play / wait for `MediaPlayCtrl` to start the stream. - -Expected: live video renders in the panel. Check the console/log output (`BOOST_LOG` goes to the terminal if run from it, or check the log file): -- `stat_log ...` lines appear (the `EVT_MEDIA_CTRL_STAT` path is live — proves the Bambu C API dlsym worked from `libBambuSource.dylib`); -- no repeated decode/error messages like `AVVideoDecoder: ...` or `can not find function ...` (proves `StaticBambuLib::get` resolved all Bambu functions); -- Stop/Play toggle works; idle image reappears on stop; -- window resize keeps aspect ratio (exercises `DoSetSize`/`adjust_frame_size`/`paintEvent`). - -- [ ] **Step 4: Confirm the old player is really gone** - -Expected: nothing in the logs references `BambuPlayer` (the ObjC class is no longer dlsym'd); the video path is entirely `wxMediaCtrl3` + `AVVideoDecoder`. - -If a printer is unavailable, at minimum verify Steps 1–2 (launch + idle image) and note in the PR that live-stream verification needs hardware. - -- [ ] **Step 5: Final review pass** - -```bash -git log --oneline -6 -git show --stat HEAD # and each of the three task commits -``` - -Expected: the last 4 commits are the design doc + the 3 implementation tasks (each task commit touches only its listed files). Review the diff for scope: no Linux/Windows changes beyond the two `EVT_MEDIA_CTRL_STAT` lines in Task 1, no `StatusPanel`/`MediaPlayCtrl` changes. diff --git a/docs/superpowers/specs/2026-07-23-wx-inspectable-on-dpiaware-design.md b/docs/superpowers/specs/2026-07-23-wx-inspectable-on-dpiaware-design.md deleted file mode 100644 index 3a4e873af6..0000000000 --- a/docs/superpowers/specs/2026-07-23-wx-inspectable-on-dpiaware-design.md +++ /dev/null @@ -1,102 +0,0 @@ -# Move `wxInspectable` into `DPIAware` — Design Spec - -Date: 2026-07-23 -Branch: `dev/layout-inspector` - -## Overview - -Move the `wxInspector::wxInspectable` base class from individual leaf classes (`DPIDialog`, `MainFrame`) into the common `DPIAware<P>` template. This makes every DPIAware widget automatically visible in the inspector tree without requiring each subclass to opt in. - -## Motivation - -Currently, only `DPIDialog` and `MainFrame` explicitly inherit `wxInspectable`. `DPIFrame` (which `MainFrame` inherits from) does not — `MainFrame` adds it manually. This means: - -- Any `DPIAware<T>` widget that isn't `DPIDialog` or `MainFrame` is invisible in the inspector tree -- `DPIFrame` subclasses (`BaseTransparentDPIFrame`, `ImageDPIFrame`, `ModelMallDialog`, `MediaFileFrame`, `SecondaryCheckDialog`, `PrintErrorDialog`, etc.) don't appear -- Adding a new DPIAware widget type requires remembering to also inherit `wxInspectable` - -Moving `wxInspectable` to `DPIAware` fixes this for all current and future DPIAware widgets at once. - -## Design - -### Change 1: `GUI_Utils.hpp` — `DPIAware<P>` - -Add `wxInspector::wxInspectable` as a second base class, and call `SetupInspectorAccelerator(this)` in the constructor (after `this->CenterOnParent()`): - -```cpp -// Before: -template<class P> class DPIAware : public P - -// After: -template<class P> class DPIAware : public P, public wxInspector::wxInspectable -``` - -Add in the constructor body (after `this->CenterOnParent()` at line 110): -```cpp -SetupInspectorAccelerator(this); -``` - -This gives every `DPIAware<T>` widget both inspectability and the Ctrl+Shift+I keyboard shortcut automatically. `#include <wx/inspector/inspector.h>` is already present in the file. - -### Change 2: `GUI_Utils.hpp` — `DPIDialog` - -Remove the now-redundant `wxInspector::wxInspectable` and the `SetupInspectorAccelerator(this)` call: - -```cpp -// Before: -class DPIDialog : public DPIAware<wxDialog>, public wxInspector::wxInspectable -// ... - SetupInspectorAccelerator(this); - -// After: -class DPIDialog : public DPIAware<wxDialog> -// (SetupInspectorAccelerator call removed — now done in DPIAware constructor) -``` - -`DPIDialog` gets `wxInspectable` and the accelerator through `DPIAware<wxDialog>` now. - -### Change 3: `MainFrame.hpp` — `MainFrame` - -Remove the now-redundant `wxInspector::wxInspectable`: - -```cpp -// Before: -class MainFrame : public DPIFrame, public wxInspector::wxInspectable - -// After: -class MainFrame : public DPIFrame -``` - -`MainFrame` gets `wxInspectable` through `DPIFrame` → `DPIAware<wxFrame>`. - -### Change 4: `MainFrame.cpp` — `MainFrame` constructor - -Remove the now-redundant `SetupInspectorAccelerator(this)` call (line 304). It will be called automatically by the `DPIAware` constructor. - -## Impact - -| Widget | Before | After | -|--------|--------|-------| -| `DPIDialog` subclasses (~80) | ✓ inspectable | ✓ inspectable (transitive) | -| `MainFrame` | ✓ inspectable | ✓ inspectable (transitive) | -| `DPIFrame` subclasses (8 others) | ✗ invisible | ✓ inspectable | -| Future `DPIAware<T>` | ✗ invisible | ✓ inspectable | - -## Files Modified - -| File | Change | -|------|--------| -| `src/slic3r/GUI/GUI_Utils.hpp` | `DPIAware<P>` gains `wxInspector::wxInspectable` + `SetupInspectorAccelerator(this)` call; `DPIDialog` drops redundant `wxInspector::wxInspectable` and `SetupInspectorAccelerator(this)` | -| `src/slic3r/GUI/MainFrame.hpp` | `MainFrame` drops redundant `wxInspector::wxInspectable` | -| `src/slic3r/GUI/MainFrame.cpp` | Remove redundant `SetupInspectorAccelerator(this)` from MainFrame constructor | - -## Non-Goals - -- The `DPIAwarePlugin` detection logic (`dynamic_cast<DPIFrame*>` / `dynamic_cast<DPIDialog*>`) is unchanged -- No new DPI properties — this is purely about tree visibility and accelerator setup - -## Risk Assessment - -- **Multiple inheritance**: `DPIAware<P>` already has a vtable (virtual destructor). Adding `wxInspectable` adds a second base but no additional data members. The `wxInspector::wxInspectable` class is expected to be a lightweight marker interface. -- **Build**: No new includes needed; `<wx/inspector/inspector.h>` is already included in `GUI_Utils.hpp`. -- **Cross-platform**: The change is standard C++ multiple inheritance — no platform-specific concerns. diff --git a/docs/superpowers/specs/2026-07-23-wx-inspector-plugins-design.md b/docs/superpowers/specs/2026-07-23-wx-inspector-plugins-design.md deleted file mode 100644 index 5715635969..0000000000 --- a/docs/superpowers/specs/2026-07-23-wx-inspector-plugins-design.md +++ /dev/null @@ -1,244 +0,0 @@ -# wxInspector Plugins for OrcaSlicer Custom Controls — Design Spec - -Date: 2026-07-23 -Branch: `dev/layout-inspector` - -## Overview - -Create wxInspector plugins that expose OrcaSlicer's custom widget properties in the inspector's property grid. Without these plugins, the inspector shows only generic wxWidgets properties — missing all DPI-awareness data, custom styling, and Orca-specific control state. - -## Goals - -1. **DPIAware properties** — Inspect and update `scale_factor`, `prev_scale_factor`, `em_unit`, and `normal_font` on any DPIAware-derived widget -2. **Custom widget properties** — Surface Orca-specific properties on `Button`, `CheckBox`, `TextInput`, `SwitchButton`, `ProgressBar`, `Label`, and `LabeledStaticBox` -3. **Minimal source changes** — Only add trivial (one-line) getters/setters to existing classes; no architectural refactoring of Orca's widget hierarchy - -## Non-Goals - -- Custom inspector panels or AUI tabs (use the existing property grid and method invoker) -- Python-plugin integration (this is C++ wxInspector, not Orca's Python plugin system) -- Event logging customization (the built-in event logger already works) - -## Architecture - -### Two Plugins - -| Plugin | Class | Files | -|--------|-------|-------| -| DPIAware plugin | `DPIAwarePlugin` | `DPIAwarePlugin.hpp`, `DPIAwarePlugin.cpp` | -| Custom widgets plugin | `CustomWidgetsPlugin` | `CustomWidgetsPlugin.hpp`, `CustomWidgetsPlugin.cpp` | -| Registration helper | inline function | `Registration.hpp` | - -All files live under `src/slic3r/Utils/wxInspectorPlugins/`. - -### Plugin Detection Strategy - -**DPIAware plugin**: Uses `dynamic_cast<DPIFrame*>` and `dynamic_cast<DPIDialog*>` as detection gates. `DPIFrame` = `DPIAware<wxFrame>`, `DPIDialog` = `DPIAware<wxDialog>`. Since these are concrete typedefs, `dynamic_cast` works at runtime. This covers `MainFrame`, `SettingsDialog`, and all 8 calibration dialogs (which inherit `DPIDialog`). - -**Custom widgets plugin**: Gates broadly on `CLASSINFO(wxWindow)`, then uses per-type `dynamic_cast` inside `GetProperties` to check each Orca-specific type. Only matching types append properties. - -### Registration - -A single `RegisterOrcaInspectorPlugins()` inline function in `Registration.hpp` creates both plugins as function-local statics (matching the wxInspector built-in provider pattern) and registers them via `wxInspector::RegisterPlugin()`. - -Called once from `MainFrame::MainFrame()` after `SetupInspectorAccelerator(this)`. - -### Why Separate Plugins? - -- DPIAware is a C++ template concept (not a wxClassInfo-isKindOf check), so it needs its own detection logic -- Custom widgets use standard wxClassInfo-based detection, matching the built-in provider pattern -- Two focused files are easier to review and maintain than one monolithic plugin -- Compile-time failure isolation: if a widget header changes, only one plugin breaks - -## DPIAware Plugin — Property Specification - -### Source Changes (GUI_Utils.hpp) - -Four one-liner methods added to the `DPIAware<P>` template class (public section): - -```cpp -float scale_factor() const { return m_scale_factor; } // already exists -float prev_scale_factor() const { return m_prev_scale_factor; } // already exists -int em_unit() const { return m_em_unit; } // already exists -void set_scale_factor(float v) { m_scale_factor = v; } // NEW -void set_prev_scale_factor(float v) { m_prev_scale_factor = v; } // NEW -void set_em_unit(int v) { m_em_unit = v; } // NEW -bool force_rescale() const { return m_force_rescale; } // NEW -// m_normal_font getter already exists: normal_font() -``` - -### Detection - -```cpp -bool CanProvideProperties(wxClassInfo* info) override { - // Gated in GetProperties via dynamic_cast on the window itself - return info->IsKindOf(CLASSINFO(wxWindow)); -} -``` - -In `GetProperties`: -```cpp -auto* win = obj.AsWindow(); -bool isDPI = dynamic_cast<DPIFrame*>(win) || dynamic_cast<DPIDialog*>(win); -if (!isDPI) return props; -``` - -### Property Table (category: "DPI Scaling") - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Scale Factor | String (float) | Yes | `dpi->scale_factor()` | `dpi->set_scale_factor(v)` | -| Prev Scale Factor | String (float) | Yes | `dpi->prev_scale_factor()` | `dpi->set_prev_scale_factor(v)` | -| EM Unit | Integer | Yes | `dpi->em_unit()` | `dpi->set_em_unit(v)` | -| Normal Font | ReadOnly | No | `dpi->normal_font().GetNativeFontInfoDesc()` | — | -| Force Rescale | Boolean (ReadOnly) | No | `dpi->force_rescale()` | — | - -**Note on setters**: The setters simply store values. They do NOT trigger a widget rescale/layout. To see the effect of a changed scale factor, use the inspector's Methods panel to call `Layout()` or resize the window — which triggers the DPI_CHANGED event path naturally. - -## Custom Widgets Plugin — Property Specification - -All properties are appended to the built-in wxWindow properties. Each widget type is independently detected via `dynamic_cast`. - -### Detection gates (in `GetProperties`) - -```cpp -auto* win = obj.AsWindow(); -if (auto* btn = dynamic_cast<Button*>(win)) { addButtonProperties(btn, props); } -if (auto* cb = dynamic_cast<CheckBox*>(win)) { addCheckBoxProperties(cb, props); } -if (auto* ti = dynamic_cast<TextInput*>(win)) { addTextInputProperties(ti, props); } -if (auto* sb = dynamic_cast<SwitchButton*>(win)) { addSwitchButtonProperties(sb, props); } -if (auto* pb = dynamic_cast<ProgressBar*>(win)) { addProgressBarProperties(pb, props); } -if (auto* lbl = dynamic_cast<Label*>(win)) { addLabelProperties(lbl, props); } -if (auto* lsb = dynamic_cast<LabeledStaticBox*>(win)) { addLabeledStaticBoxProperties(lsb, props); } -``` - -### Orca Button (`Button`) — category: "Orca Button" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Button Style | Choice | Yes | enum→string | string→enum | -| Button Type | Choice | Yes | enum→string | string→enum | -| Selected | Boolean | Yes | `m_selected` (needs getter) | `SetSelected(v)` | -| Active Icon | ReadOnly | No | icon name string | — | -| Inactive Icon | ReadOnly | No | icon name string | — | - -Choices for Button Style: `Regular`, `Confirm`, `Alert`, `Disabled` -Choices for Button Type: `Compact`, `Window`, `Choice`, `Parameter`, `Icon`, `Expanded` - -**Source changes needed**: Button's `m_selected` is private. Add one-liner getter: -```cpp -bool IsSelected() const { return m_selected; } -``` - -### Orca CheckBox (`CheckBox`) — category: "Orca CheckBox" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Half Checked | Boolean | Yes | `m_half_checked` (needs getter) | `SetHalfChecked(v)` | - -**Source changes needed**: `m_half_checked` is private. Add one-liner getter: -```cpp -bool IsHalfChecked() const { return m_half_checked; } -``` - -### Orca TextInput (`TextInput`) — category: "Orca TextInput" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Label | String | Yes | `GetLabel()` (inherited from wxWindow) | `SetLabel(v)` (exists) | -| Text Value | String | Yes | `GetTextCtrl()->GetValue()` (GetTextCtrl is public) | `GetTextCtrl()->SetValue(v)` | -| Corner Radius | Integer | Yes | `GetCornerRadius()` (NEW) | `SetCornerRadius(v)` (exists) | - -**Source changes needed**: Add one getter to `TextInput`: -```cpp -int GetCornerRadius() const { return static_cast<int>(radius); } -``` -(`radius` is inherited from StaticBox. `SetCornerRadius(double)` already exists. `GetTextCtrl()` is already public.) - -### Orca SwitchButton (`SwitchButton`) — category: "Orca SwitchButton" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Value | Boolean | Yes | existing getter | existing setter | - -### Orca ProgressBar (`ProgressBar`) — category: "Orca ProgressBar" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Proportion | Float (0-1) | Yes | `pb->m_proportion` (public member) | `pb->m_proportion = v` | -| Show Number | Boolean | Yes | `pb->m_shownumber` (public member) | `pb->m_shownumber = v` | - -**No source changes needed**: `m_proportion` and `m_shownumber` are already public members. `SetValue(int)` and `SetProgress(int)` already exist as public methods. - -### Orca Label (`Label`) — category: "Orca Label" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Is Hyperlink | Boolean | No | existing flag check | — | -| Font Size | ReadOnly | No | `GetFont().GetPointSize()` | — | - -### LabeledStaticBox — category: "LabeledStaticBox" - -| Name | Type | Editable | Getter | Setter | -|------|------|----------|--------|--------| -| Corner Radius | Integer | Yes | `GetCornerRadius()` (NEW) | `SetCornerRadius(v)` (exists) | -| Border Width | Integer | Yes | `GetBorderWidth()` (NEW) | `SetBorderWidth(v)` (exists) | -| Border Color | String (hex) | Yes | `GetBorderColor()` (NEW) | `SetBorderColor(v)` (exists) | -| Scale | Float (ReadOnly) | No | `m_scale` (protected, needs getter) | — | - -**Source changes needed**: Four one-liner getters added to `LabeledStaticBox`: -```cpp -int GetCornerRadius() const { return m_radius; } -int GetBorderWidth() const { return m_border_width; } -StateColor GetBorderColor() const { return border_color; } -float GetScale() const { return m_scale; } -``` - -## Files Modified (Existing Code) - -| File | Changes | -|------|---------| -| `src/slic3r/GUI/GUI_Utils.hpp` | +4 methods in `DPIAware<P>`: `set_scale_factor()`, `set_prev_scale_factor()`, `set_em_unit()`, `force_rescale()` | -| `src/slic3r/GUI/Widgets/LabeledStaticBox.hpp` | +4 getter declarations: `GetCornerRadius()`, `GetBorderWidth()`, `GetBorderColor()`, `GetScale()` | -| `src/slic3r/GUI/Widgets/LabeledStaticBox.cpp` | +4 getter implementations | -| `src/slic3r/GUI/Widgets/Button.hpp` | +1 getter: `IsSelected()` | -| `src/slic3r/GUI/Widgets/CheckBox.hpp` | +1 getter: `IsHalfChecked()` | -| `src/slic3r/GUI/Widgets/TextInput.hpp` | +1 getter: `GetCornerRadius()` | -| `src/slic3r/GUI/Widgets/ProgressBar.hpp` | None (public members are used directly) | -| `src/slic3r/GUI/MainFrame.cpp` | +1 `#include`, +1 call to `RegisterOrcaInspectorPlugins()` | -| `src/slic3r/CMakeLists.txt` | +4 entries in `SLIC3R_GUI_SOURCES` (the .cpp plugin files) | - -## Files Created - -``` -src/slic3r/Utils/wxInspectorPlugins/ -├── DPIAwarePlugin.hpp -├── DPIAwarePlugin.cpp -├── CustomWidgetsPlugin.hpp -├── CustomWidgetsPlugin.cpp -└── Registration.hpp -``` - -## Build & Linking - -The `wxInspector` dependency is already wired: -- `deps/wxInspector/wxInspector.cmake` fetches and builds wxInspector -- `src/CMakeLists.txt` lines 92-93 link `wxInspector::wxInspector` into `wxWidgets_LIBRARIES` -- The plugin files only need `#include <wx/inspector/plugin.h>` and `#include <wx/inspector/inspector.h>` — both available from the installed dependency - -No new CMake dependencies needed. Only the new source files need listing in `SLIC3R_GUI_SOURCES`. - -## Error Handling & Edge Cases - -- **Stale pointers**: Plugin lambdas capture raw pointers, regenerated on every `GetProperties` call (matching wxInspector's built-in provider pattern). Pointers live only until the next tree selection. -- **Widget destruction**: If a widget is destroyed while the inspector is showing its properties, `InspectableObject::IsValid()` returns false and properties are not displayed. The inspector won't show stale data. -- **Invalid property values**: Setters use `sscanf` / `ToLong` with validation (matching built-in patterns). Bogus input is rejected — setter returns `false`, property grid shows error state. -- **DPI drift**: Setting `scale_factor` without triggering rescale means displayed sizes don't match the new factor. This is acceptable — the inspector is a developer tool; operators know to call `Layout()` after making changes. -- **Missing widget type**: If a `dynamic_cast` fails for all types, only built-in wxWindow properties are shown. No crash, no error — just reduced info. - -## Future Work (Out of Scope) - -- **StateColor visualization**: `StateColor` is a multi-value type (maps bitmask states to colors). A full solution would need a custom property editor (e.g., a table showing each state→color pair). Keep it simple for now. -- **ScalableBitmap display**: Could show the bitmap as an inline thumbnail. Complex property editor work — deferred. -- **More widget types**: `SwitchBoard`, `MultiSwitchButton`, `StepCtrl`, `FanControl`, `DropDown`, `ComboBox`, `AMS*` widgets could all benefit. Add as needed. -- **Property refresh on tree selection**: Currently properties are static snapshots. A "refresh" button or auto-poll could keep values current for rapidly-changing widgets (progress bars, etc.). The built-in wxInspector already provides a tree-refresh button. diff --git a/docs/superpowers/specs/2026-08-14-ffmpeg-player-macos-design.md b/docs/superpowers/specs/2026-08-14-ffmpeg-player-macos-design.md deleted file mode 100644 index 812a7bf735..0000000000 --- a/docs/superpowers/specs/2026-08-14-ffmpeg-player-macos-design.md +++ /dev/null @@ -1,110 +0,0 @@ -# FFmpeg Media Player for macOS — Design - -Date: 2026-08-14 -Branch: `dev/ffmpeg-player-macos` - -## Problem - -The branch's new FFmpeg-based media player (`wxMediaCtrl3` + `AVVideoDecoder`) is used on -Windows and Linux, but macOS still runs the old player: `wxMediaCtrl2.mm`, an ObjC -`BambuPlayer` class dlsym'd from the Bambu network plugin that renders via CALayer. -On macOS, `wxMediaCtrl3` is currently aliased to `wxMediaCtrl2` and FFmpeg is not linked -into the app at all. - -Goal: make macOS use the same FFmpeg player as Windows/Linux, linking the **static** -FFmpeg libraries from the deps build instead of dynamic ones. - -## Current state (verified) - -- New player (Win/Linux): `GUI/wxMediaCtrl3.cpp` + `GUI/AVVideoDecoder.cpp`. Decodes with - FFmpeg (libavcodec/libswscale/libavutil), renders frames into `wxImage` (non-Windows) / - `wxBitmap` (Windows) drawn in a `paintEvent`, feeds via the `Bambu_*` C API - (`BambuTunnel.h`, `BAMBU_DYNAMIC`) dlsym'd from the network plugin through - `StaticBambuLib::get()` (`GUI/Printer/PrinterFileSystem.cpp`, compiled on all platforms). -- Old player (macOS): `GUI/wxMediaCtrl2.mm` uses the ObjC `BambuPlayer` class found via - `dlsym(module, "OBJC_CLASS_$_BambuPlayer")` in `libBambuSource.dylib`. -- The macOS network plugin `libBambuSource.dylib` already exports the full Bambu C API - (verified with `nm`), so the new player needs zero plugin changes. -- FFmpeg linking in `src/slic3r/CMakeLists.txt` is guarded by `if (NOT APPLE)` — - macOS currently does not link FFmpeg. -- `deps/FFMPEG/FFMPEG.cmake`: non-MSVC branch builds FFmpeg from source with - `--enable-shared`. The existing arm64 deps build on the dev machine happened to be - configured with both static and shared enabled, so `libavcodec.a` / `libswscale.a` / - `libavutil.a` are already present at - `deps/build/arm64/OrcaSlicer_dep/usr/local/lib/`. -- `EVT_MEDIA_CTRL_STAT` is `wxDEFINE_EVENT`'d in `wxMediaCtrl2.cpp` (Win/Linux) and - `wxMediaCtrl2.mm` (macOS); the define in `wxMediaCtrl3.cpp` is commented out. -- `wxMediaCtrl2` is never instantiated anywhere on any platform — dead code. -- `StatusPanel` already creates `wxMediaCtrl3`; `MediaPlayCtrl` only uses the - `wxMediaCtrl3` interface (`Load/Play/Stop/GetState/GetVideoSize/GetLastError/SetIdleImage`), - so no UI-side changes are needed. - -## Approach (approved) - -**Reuse the shared player on macOS.** Compile the existing `wxMediaCtrl3.cpp` + -`AVVideoDecoder.cpp` on macOS so all three platforms run one implementation. -Rendering uses the existing `wxImage` → `DrawBitmap` paint path, identical to Linux. -Known trade-off: frames are scaled to the widget's logical (1x) size, so Retina is -slightly soft compared to the old CALayer player. Accepted for now; a Retina-aware -scaling follow-up is possible later. - -Rejected alternative: a native CGImage/CALayer renderer for macOS — faster and -Retina-crisp, but adds a second render implementation to maintain. - -## Changes - -### 1. Enable the FFmpeg player on macOS (source) - -- `GUI/wxMediaCtrl3.h`: remove the `#ifdef __WXMAC__` branch (lines 18–22) that aliases - `wxMediaCtrl3` → `wxMediaCtrl2`. macOS then compiles the real `wxMediaCtrl3` class, - including the `BAMBU_DYNAMIC` BambuTunnel path used on Linux. -- Event symbol fix: move `wxDEFINE_EVENT(EVT_MEDIA_CTRL_STAT, wxCommandEvent)` into - `wxMediaCtrl3.cpp` (uncomment the existing line) and remove it from - `wxMediaCtrl2.cpp`. One definition total in the lib; all three platforms resolve it. - -### 2. Static FFmpeg linking (deps + app) - -- `deps/FFMPEG/FFMPEG.cmake`: in the non-MSVC branch, pass - `--disable-shared --enable-static` when `APPLE`. Linux keeps `--enable-shared`; - Windows keeps its prebuilt shared DLL zips. Fresh macOS deps builds install only - `libavcodec.a` / `libswscale.a` / `libavutil.a` — no dylibs to bundle, no - rpath/install_name handling. (The existing local arm64 deps build already contains - the `.a` files, so no deps rebuild is strictly needed to try the change locally, - but a fresh CI deps build must produce them.) -- `src/slic3r/CMakeLists.txt`: - - APPLE branch of `SLIC3R_GUI_SOURCES`: add `GUI/wxMediaCtrl3.cpp`, - `GUI/wxMediaCtrl3.h`, `GUI/AVVideoDecoder.cpp`, `GUI/AVVideoDecoder.hpp`; - remove `GUI/wxMediaCtrl2.mm` and `GUI/wxMediaCtrl2.h` (the `.h` stays on - disk for the Win/Linux build of `wxMediaCtrl2.cpp`, but nothing on macOS - includes it after this change). - - Add an APPLE mirror of the `NOT APPLE` FFmpeg block: `find_library` for - `libavcodec.a`, `libswscale.a`, `libavutil.a` under `${CMAKE_PREFIX_PATH}/lib` - with `NO_DEFAULT_PATH`, link them (order avcodec → swscale → avutil), and add - `${CMAKE_PREFIX_PATH}/include` as a SYSTEM include directory. Deps are built with - `--disable-zlib` and no external codecs, so the three static libs link cleanly. - -### 3. Remove the old player - -- Delete `GUI/wxMediaCtrl2.mm` and `GUI/BambuPlayer/BambuPlayer.h` (header used only - by the `.mm`; the real `BambuPlayer` lives inside the network plugin). -- Remove the now-dead `__WXMAC__` section of `GUI/wxMediaCtrl2.h`. -- `wxMediaCtrl2.cpp` (Win/Linux) stays in the build as-is (dead but harmless; out of - scope to remove on this branch). - -### 4. Verification - -- Build on macOS: `cmake --build build_arm64` (or `build/arm64`). -- Confirm no dynamic FFmpeg dependency: `otool -L` on the app binary shows no `libav*` - dylib references. -- Runtime: with the network plugin loaded, the Device tab camera preview streams via - the FFmpeg player (check the device page / `MediaPlayCtrl`). -- macOS `ctest` still passes — static linking means no test-executable `.so` copying - hacks (unlike the Linux shared-lib setup). - -## Out of scope - -- Linux (shared libs, AppImage/flatpak bundling) and Windows (prebuilt DLL zips) - keep their current FFmpeg setup. -- Retina-aware frame scaling / native CGImage rendering (follow-up if visual quality - is judged insufficient). -- Audio streaming (neither player plays audio in this UI path). diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 6ec0ecd9cf..92b25f26c0 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -2762,6 +2762,9 @@ msgstr "" msgid "Merge with" msgstr "" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "" @@ -3039,6 +3042,9 @@ msgstr "" msgid "Merge parts to an object" msgstr "" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "" @@ -4497,7 +4503,7 @@ msgid "" "The value will be reset to 0." msgstr "" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "" msgid "" @@ -4528,13 +4534,13 @@ msgid "" msgstr "" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" @@ -4565,6 +4571,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -5013,9 +5022,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5945,16 +5951,22 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" msgid "Load a model" msgstr "" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "" msgid "Import Configs" @@ -7403,6 +7415,9 @@ msgstr "" msgid "The %s nozzle can not print %s." msgstr "" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, possible-boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7523,12 +7538,36 @@ msgstr "" msgid "Set filaments to use" msgstr "" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "" msgid "Pellets" msgstr "" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, possible-c-format, possible-boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "" @@ -7663,7 +7702,13 @@ msgstr "" msgid "Customized Preset" msgstr "" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -7685,7 +7730,7 @@ msgstr "" #, possible-c-format, possible-boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" msgid "Object too small" @@ -7700,6 +7745,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "" @@ -7894,6 +7945,18 @@ msgstr "" msgid "Sync now" msgstr "" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "" @@ -8023,6 +8086,17 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -9043,6 +9117,9 @@ msgstr "" msgid "First layer filament sequence" msgstr "" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "" @@ -9070,9 +9147,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9088,6 +9162,64 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, possible-c-format, possible-boost-format msgid "Save %s as" msgstr "" @@ -10329,11 +10461,11 @@ msgstr "" msgid "No modifications need to be copied." msgstr "" -msgid "Copy paramters" +msgid "Copy parameters" msgstr "" #, possible-c-format, possible-boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "" #, possible-c-format, possible-boost-format @@ -10807,27 +10939,6 @@ msgstr "" msgid "Please choose the filament colour" msgstr "" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "" - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "" - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "" - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "" - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "" @@ -11510,6 +11621,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" @@ -11546,6 +11660,9 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "" @@ -11874,7 +11991,7 @@ msgstr "" msgid "Other layers" msgstr "" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -12958,6 +13075,7 @@ msgstr "" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "" +msgctxt "second" msgid "s" msgstr "" @@ -13251,6 +13369,48 @@ msgstr "" msgid "Support material is commonly used to print supports and support interfaces." msgstr "" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "" @@ -14398,6 +14558,7 @@ msgstr "" msgid "The allowed maximum output force of Y axis" msgstr "" +msgctxt "Newton" msgid "N" msgstr "" @@ -14407,6 +14568,7 @@ msgstr "" msgid "The machine bed mass load of Y axis" msgstr "" +msgctxt "gram" msgid "g" msgstr "" @@ -14675,7 +14837,7 @@ msgstr "" msgid "Reduce infill retraction" msgstr "" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -14831,7 +14993,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" @@ -14874,7 +15036,7 @@ msgstr "" msgid "Z-hop height" msgstr "" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "" msgid "Z-hop lower boundary" @@ -15834,6 +15996,12 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "" @@ -16861,6 +17029,9 @@ msgstr "" msgid "The supplied file couldn't be read because it's empty." msgstr "" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "" @@ -18191,17 +18362,17 @@ msgstr "" msgid "Only display the filament names with changes to filament presets." msgstr "" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" msgid "Please select at least one printer or filament." @@ -18416,7 +18587,7 @@ msgstr "" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "" -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "" msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -18458,7 +18629,7 @@ msgstr "" msgid "Stored logs" msgstr "" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "" msgid "Profiles" @@ -18523,7 +18694,7 @@ msgstr "" msgid "Authorizing..." msgstr "" -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "" msgid "Could not parse server response." @@ -18961,7 +19132,7 @@ msgstr "" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "" -msgid "Fila Saving" +msgid "File Saving" msgstr "" msgid "Don't remind me again" @@ -19244,6 +19415,15 @@ msgstr "" msgid "Skipping objects." msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "" @@ -19321,6 +19501,9 @@ msgstr "" msgid "NO RAMMING AT ALL" msgstr "" +msgid "s" +msgstr "" + msgid "Volumetric speed" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index b7eb022c0d..91ba0e2f2a 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -3015,6 +3015,10 @@ msgstr "Editar" msgid "Merge with" msgstr "Fusiona amb" +# AI Translated +msgid "Decompose Color" +msgstr "Descompondre el color" + msgid "Delete this filament" msgstr "Elimina aquest filament" @@ -3316,6 +3320,10 @@ msgstr "Muntatge" msgid "Merge parts to an object" msgstr "Fusionar les peces en un objecte" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Utilitzar una alçada de capa variable juntament amb la subcapa de color mixt pot reduir la qualitat de la barreja de colors." + # AI Translated msgid "Add layers" msgstr "Afegir capes" @@ -4893,7 +4901,7 @@ msgstr "" "\n" "El valor es restablirà a 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "La paret addicional alternativa no funciona bé quan assegurar el gruix de la closca vertical està establert a Tot." msgid "" @@ -4939,7 +4947,7 @@ msgstr "" "NO - Mantenir l'alçada de la capa de suport independent" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height ha de ser més petit que layer_height.\n" @@ -4947,7 +4955,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "La profunditat de bloqueig ha de ser menor que la profunditat de la pell.\n" @@ -4987,6 +4995,9 @@ msgstr "" "Sí: canviar aquesta configuració i activar el mode d'espiral automàticament\n" "No - Renunciar a utilitzar el mode espiral aquesta vegada" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimint" @@ -5448,9 +5459,6 @@ msgstr "Patró no vàlid. Utilitzeu N, N#K, o una llista separada per comes amb msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format no vàlid. Format vectorial esperat: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agents del sistema" @@ -6413,16 +6421,22 @@ msgstr "Desa el projecte com a" msgid "Save current project as" msgstr "Desar el projecte actual com" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Carregar un model" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importar fitxer ZIP" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Carregar models continguts dins d'un arxiu zip" msgid "Import Configs" @@ -7956,6 +7970,10 @@ msgstr "Personalitzar la placa actual" msgid "The %s nozzle can not print %s." msgstr "El broquet %s no pot imprimir %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Imprimir filament de color mixt en una impressora d'un sol extrusor requereix canvis de filament i purgues freqüents, cosa que pot augmentar considerablement el malbaratament i el risc d'obstrucció del broquet o del conducte de residus." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "No es recomana barrejar %1% amb %2% en la impressió.\n" @@ -8081,6 +8099,26 @@ msgstr "Sincronitzar la llista de filaments des d'AMS" msgid "Set filaments to use" msgstr "Configurar els filaments a utilitzar" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Afegir filament mixt" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filament mixt" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Eliminar l'últim filament mixt" + +# AI Translated +msgid "Add mixed filament" +msgstr "Afegir filament mixt" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "El filament mixt té components no vàlids o incoherents. Torneu a editar les entrades afectades." + msgid "Search plate, object and part." msgstr "Cercar placa, objecte i peça." @@ -8088,6 +8126,18 @@ msgstr "Cercar placa, objecte i peça." msgid "Pellets" msgstr "Pèl·lets" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "El filament mixt té referències de components trencades" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Editar / Esborrar / Fusionar" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "El filament mixt de destinació utilitza aquest filament físic com a component. En fusionar-los s'eliminarà aquest filament físic i el filament mixt pot quedar no vàlid. Voleu continuar?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "En completar l'operació, el projecte %s es tancarà i es crearà un nou projecte." @@ -8231,9 +8281,15 @@ msgstr "Confirmeu que els Codis-G d'aquests perfils són segurs per evitar danys msgid "Customized Preset" msgstr "Perfil personalitzat" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + # AI Translated -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Els noms dels components dins del fitxer STEP no tenen format UTF8!" +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Els noms dels components dins del fitxer STEP no tenen format UTF-8!" # AI Translated msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8255,10 +8311,10 @@ msgstr "El volum de l'objecte és zero" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "L'objecte del fitxer %s és massa petit, i potser en metres o polzades.\n" -" Vols escalar a mil·límetres?" +"Vols escalar a mil·límetres?" msgid "Object too small" msgstr "Objecte massa petit" @@ -8275,6 +8331,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objecte de múltiples peces detectat" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Associant les textures als filaments" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Avís d'importació de textures" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Carregar aquests fitxers com un sol objecte amb diverses peces?\n" @@ -8488,6 +8552,22 @@ msgstr "" msgid "Sync now" msgstr "Sincronitza ara" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "No s'ha pogut importar la textura. El model sembla contenir dades de textura, però el procés d'importació no s'ha pogut completar. El model s'importarà només com a geometria." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Aplicant els colors de textura..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Actualitzant la vista 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Colors de textura aplicats." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Podeu mantenir els perfils modificats al projecte nou o descartar-los" @@ -8619,6 +8699,17 @@ msgstr "Desa el fitxer Laminat com a:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El fitxer %s s'ha enviat a l'emmagatzematge de la impressora i es pot visualitzar a la impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipus de broquet no està establert. Establiu el broquet i torneu-ho a provar." @@ -9780,6 +9871,10 @@ msgstr "Gerro en Espiral" msgid "First layer filament sequence" msgstr "Seqüència d'impressió de la primera capa" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "La llista de filaments conté filaments mixtos. La seqüència de filaments personalitzada no tindrà efecte." + msgid "By Layer" msgstr "Per Capa" @@ -9808,9 +9903,6 @@ msgstr "Anar a la pàgina web de publicació de models" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparació pot trigar uns quants minuts. Si us plau, sigui pacient." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicació ha estat cancel·lada" @@ -9826,6 +9918,64 @@ msgstr "Carregant dades" msgid "Jump to webpage" msgstr "Anar a la pàgina web" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Desar %s com a" @@ -11189,12 +11339,12 @@ msgid "No modifications need to be copied." msgstr "No cal copiar cap modificació." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Copiar els paràmetres" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modificar els paràmetres de %s" # AI Translated @@ -11715,29 +11865,6 @@ msgstr "Volums de purga per al canvi de filament" msgid "Please choose the filament colour" msgstr "Trieu el color del filament" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "La visualització en directe nativa de Wayland requereix el sink de vídeo GTK de GStreamer. Instal·leu el connector gtksink per a GStreamer i reinicieu l'OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "No s'ha pogut inicialitzar el sink de vídeo natiu de GStreamer per a Wayland. Comproveu la instal·lació del connector GTK de GStreamer." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "El Windows Media Player és necessari per a aquesta tasca. Voleu habilitar el \"Windows Media Player\" per al vostre sistema operatiu?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource no s'ha registrat correctament per a la reproducció multimèdia! Premeu Sí per tornar-lo a registrar. Seràs promocionat dues vegades" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Falta el component BambuSource registrat per a la reproducció multimèdia! Reinstal·leu OrcaSlicer o cerqueu ajuda a la comunitat." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Utilitzar un BambuSource des d'una instal·lació diferent, la reproducció de vídeo pot no funcionar correctament! Premeu Sí per solucionar-ho." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Al vostre sistema li falten còdecs H.264 per al GStreamer, necessaris per reproduir vídeo. (Proveu d'instal·lar els paquets gstreamer1.0-plugins-bad o gstreamer1.0-libav i, a continuació, reinicieu Orca Slicer?)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "L'agent del núvol no està disponible. Reinicieu l'OrcaSlicer i torneu-ho a provar." @@ -12465,6 +12592,10 @@ msgstr "Si tot i així voleu imprimir, podeu activar l'opció a Preferències / msgid "No extrusions under current settings." msgstr "No hi ha extrusions a la configuració actual." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "S'està utilitzant un filament mixt amb degradat, però 'Subcapa de color mixt' està desactivat. El degradat no s'imprimirà." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "El mode suau de timelapse no està permès quan la seqüència \"Per objecte\" està habilitada." @@ -12501,6 +12632,10 @@ msgstr "Potser voleu reduir la mida del model o canviar la configuració d'impre msgid "Variable layer height is not supported with Organic supports." msgstr "Alçada de Capa Variable no és compatible amb suports Orgànics." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "El filament de la torre de purga no pot ser un filament mixt." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "És possible que els diferents diàmetres de broquet i els diferents diàmetres de filament no funcionin bé quan la torre principal està activada. És molt experimental, així que si us plau, procediu amb precaució." @@ -12868,8 +13003,8 @@ msgstr "mm o %" msgid "Other layers" msgstr "Altres capes" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "Temperatura del llit per a les capes excepte la primera. Un valor de 0 significa que el filament no admet la impressió sobre el Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgstr "Temperatura del llit de les capes excepte la inicial. Un valor de 0 significa que el filament no admet la impressió sobre el Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Temperatura del llit de les capes excepte la inicial. El valor 0 significa que el filament no admet imprimir a una Base Freda." @@ -14263,6 +14398,8 @@ msgstr "Temps de capa" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "S'habilitarà el ventilador de refrigeració de peces per a capes el temps estimat de les quals sigui inferior a aquest valor. La velocitat del ventilador s'interpola entre les velocitats mínima i màxima del ventilador segons el temps d'impressió per capes" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14572,6 +14709,62 @@ msgstr "Material de suport" msgid "Support material is commonly used to print supports and support interfaces." msgstr "El material de suport s'utilitza habitualment per imprimir interfície de suport i suport" +# AI Translated +msgid "Is mixed filament" +msgstr "És filament mixt" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Indica si aquesta ranura de filament és un filament mixt compost per diversos filaments físics" + +# AI Translated +msgid "Mixed filament components" +msgstr "Components del filament mixt" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Índexs (començant per 1) dels filaments components, separats per comes; p. ex. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Proporcions de subcapa del filament mixt" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Valors de proporció separats per comes que sumin 1.0; p. ex. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Degradat del filament mixt" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Activa el mode de degradat en direcció Z per a les subcapes del filament mixt. En activar-lo, les proporcions de les subcapes varien linealment entre capes." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Rang del degradat del filament mixt" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Proporcions inicial i final del primer component en el mode de degradat. Parell separat per comes; p. ex. \"0.10,0.90\" significa del 10% al 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Corba del degradat del filament mixt" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Corba personalitzada opcional, a l'estil de Photoshop, que assigna el progrés en Z a la proporció del primer component. Es codifica com a punts de control separats per barres verticals, amb el format \"x,y\" (heretat) o \"x,y,m_in,m_out\" quan cal anul·lar la tangent (un valor buit o \"nan\" fa servir el valor PCHIP predeterminat). x està dins de [0,1]; y es limita al rang de proporcions configurat; p. ex. \"0,0.15|0.5,0.50|1,0.85\". Si es deixa buit, s'utilitza el gradient_range lineal." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Degradat per peça del filament mixt" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Quan el mode de degradat està activat, aplica el degradat a cada peça d'un muntatge de manera independent en lloc de tractar tot el muntatge com un únic rang Z." + msgid "Filament printable" msgstr "Filament imprimible" @@ -15860,6 +16053,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Força de sortida màxima permesa de l'eix Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15872,6 +16066,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Càrrega de massa del llit de la màquina a l'eix Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16197,7 +16392,7 @@ msgid "Reduce infill retraction" msgstr "Reduir la retracció de farciment" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "No retrau quan el desplaçament està totalment a la zona de farciment. Això vol dir que l'oozing( goteig ) queda amagat. Això pot reduir els temps de retracció per a models complexos i estalviar temps d'impressió, però fer que el laminat i la generació de Codi-G siguin més lents. Tingueu en compte que el salt en Z tampoc es realitza a les zones on s'omet la retracció." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16373,7 +16568,7 @@ msgstr "Quantitat de retracció després de netejar" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Longitud de la retracció ràpida després de netejar, relativa a la longitud de retracció.\n" @@ -16420,7 +16615,7 @@ msgstr "Quan s'activa la retracció abans d'un canvi d'eina, el filament es reti msgid "Z-hop height" msgstr "Alçada Z-hop" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Cade vegada que es fa una retracció, s'aixeca una mica el broquet per crear espai lliure entre el broquet i la impressió. Evita que el broquet colpegi la impressió en els desplaçaments. L'ús de la línia espiral per aixecar z pot evitar l'aparició de fils" msgid "Z-hop lower boundary" @@ -17482,6 +17677,14 @@ msgstr "" "\n" "L'establiment d'un valor en la quantitat de retractació abans de l'esborrat es realitzarà qualsevol retracció en excés abans de la neteja, sinó es realitzarà després." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Subcapa de color mixt" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Activa la divisió en subcapes de color mixt. En activar-la, les capes que contenen filaments de color mixt es divideixen en subcapes per aconseguir efectes de barreja de colors." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La Torre de Purga es pot utilitzar per netejar els residus al broquet i estabilitzar la pressió de la cambra dins del broquet, per tal d'evitar defectes d'aparença en imprimir objectes." @@ -18573,6 +18776,10 @@ msgstr "La generació de malla del fitxer del model ha fallat o la forma no és msgid "The supplied file couldn't be read because it's empty." msgstr "El fitxer subministrat no s'ha pogut llegir perquè està buit" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "El format del fitxer és incompatible i no es pot analitzar." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Format de fitxer desconegut. El fitxer d'entrada ha de tenir extensió .stl, .obj, .amf( .xml )." @@ -20071,19 +20278,19 @@ msgstr "Mostrar només els noms de les impressores amb canvis als perfils d'impr msgid "Only display the filament names with changes to filament presets." msgstr "Mostrar només els noms dels filaments amb canvis en els perfils de filament." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Només es mostraran els noms de les impressores amb perfils d'impressora d'usuari i cada perfil que trieu s'exportarà com a fitxer zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Només es mostraran els noms dels filaments amb perfils de filament d'usuari, \n" "i tots els perfils de filament d'usuari de cada nom de filament que seleccioneu s'exportaran com a zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Només es mostraran els noms de les impressores amb perfils de processament modificats, \n" "I tots els valors perfils del procés d'usuari de cada nom d'impressora que seleccioneu s'exportaran com a ZIP." @@ -20328,7 +20535,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Necessitem informació per diagnosticar l'origen del problema. Consulteu la pàgina wiki per a una guia detallada." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "El botó Empaquetar recull el fitxer del projecte i els registres de la sessió actual en un fitxer zip." # AI Translated @@ -20384,7 +20591,7 @@ msgid "Stored logs" msgstr "Registres emmagatzemats" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Empaqueta tots els registres emmagatzemats en un fitxer zip." # AI Translated @@ -20472,7 +20679,7 @@ msgid "Authorizing..." msgstr "Autoritzant..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Error. No es pot obtenir el testimoni d'api per a l'autorització" # AI Translated @@ -20928,8 +21135,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Activar l'assignació intel·ligent de filament: assigna un filament a diversos broquets per maximitzar l'estalvi" # AI Translated -msgid "Fila Saving" -msgstr "Estalvi de filament" +msgid "File Saving" +msgstr "Desament de fitxers" msgid "Don't remind me again" msgstr "No m'ho recordis més" @@ -21258,6 +21465,15 @@ msgstr "Aquesta acció no es pot desfer. Continuar?" msgid "Skipping objects." msgstr "Ometent objectes." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Seleccioneu filament" @@ -21338,6 +21554,9 @@ msgstr "Reinicia ara" msgid "NO RAMMING AT ALL" msgstr "SENSE EMPENTA" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Velocitat volumètrica" @@ -21989,6 +22208,41 @@ msgstr "" "Evitar la deformació( warping )\n" "Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "La visualització en directe nativa de Wayland requereix el sink de vídeo GTK de GStreamer. Instal·leu el connector gtksink per a GStreamer i reinicieu l'OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "No s'ha pogut inicialitzar el sink de vídeo natiu de GStreamer per a Wayland. Comproveu la instal·lació del connector GTK de GStreamer." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "El Windows Media Player és necessari per a aquesta tasca. Voleu habilitar el \"Windows Media Player\" per al vostre sistema operatiu?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource no s'ha registrat correctament per a la reproducció multimèdia! Premeu Sí per tornar-lo a registrar. Seràs promocionat dues vegades" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Falta el component BambuSource registrat per a la reproducció multimèdia! Reinstal·leu OrcaSlicer o cerqueu ajuda a la comunitat." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Utilitzar un BambuSource des d'una instal·lació diferent, la reproducció de vídeo pot no funcionar correctament! Premeu Sí per solucionar-ho." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Al vostre sistema li falten còdecs H.264 per al GStreamer, necessaris per reproduir vídeo. (Proveu d'instal·lar els paquets gstreamer1.0-plugins-bad o gstreamer1.0-libav i, a continuació, reinicieu Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Estalvi de filament" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index b521a8073b..9884888723 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -2977,6 +2977,10 @@ msgstr "Upravit" msgid "Merge with" msgstr "Sloučit s" +# AI Translated +msgid "Decompose Color" +msgstr "Rozložit barvu" + msgid "Delete this filament" msgstr "Smazat tento filament" @@ -3279,6 +3283,10 @@ msgstr "Sestava" msgid "Merge parts to an object" msgstr "Sloučit části do objektu" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Použití proměnné výšky vrstvy společně s podvrstvou míchané barvy může zhoršit kvalitu míchání barev." + # AI Translated msgid "Add layers" msgstr "Přidat vrstvy" @@ -4851,7 +4859,7 @@ msgstr "" "\n" "Hodnota bude nastavena na 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Střídavá přídavná stěna nefunguje správně, pokud je zajištění tloušťky svislé stěny nastaveno na Vše." msgid "" @@ -4897,7 +4905,7 @@ msgstr "" "NE – Ponechat nezávislou výšku podpůrné vrstvy" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height musí být menší než layer_height.\n" @@ -4905,7 +4913,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Hloubka zamčení musí být menší než hloubka krycí vrstvy.\n" @@ -4945,6 +4953,10 @@ msgstr "" "Ano – změnit tato nastavení a automaticky povolit spirálový režim\n" "Ne – tentokrát nepoužít spirálový režim" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Tisk" @@ -5404,10 +5416,6 @@ msgstr "Neplatný vzor. Použijte N, N#K nebo seznam oddělený čárkami s voli msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Neplatný formát. Očekávaný vektorový formát: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Systémoví agenti" @@ -6374,16 +6382,22 @@ msgstr "Uložit projekt jako" msgid "Save current project as" msgstr "Uložit aktuální projekt jako" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importovat 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Načíst model" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importovat ZIP archiv" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Načíst modely obsažené v zip archivu" msgid "Import Configs" @@ -7921,6 +7935,10 @@ msgstr "Přizpůsobit aktuální desku" msgid "The %s nozzle can not print %s." msgstr "Tryska %s nemůže tisknout %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Tisk filamentu s míchanou barvou na tiskárně s jedním extruderem vyžaduje časté výměny filamentu a čištění, což může výrazně zvýšit množství odpadu a riziko ucpání trysky nebo odpadního skluzu." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Míchání %1% s %2% při tisku není doporučeno.\n" @@ -8050,12 +8068,44 @@ msgstr "Synchronizovat seznam filamentů z AMS" msgid "Set filaments to use" msgstr "Nastavit používané filamenty" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Přidat míchaný filament" + +# AI Translated +msgid "Mixed Filament" +msgstr "Míchaný filament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Odebrat poslední míchaný filament" + +# AI Translated +msgid "Add mixed filament" +msgstr "Přidat míchaný filament" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Míchaný filament má neplatné nebo neodpovídající komponenty. Upravte prosím dotčené položky znovu." + msgid "Search plate, object and part." msgstr "Hledat desku, objekt a díl." msgid "Pellets" msgstr "Pelety" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Míchaný filament má poškozené odkazy na komponenty" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Upravit / Smazat / Sloučit" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Cílový míchaný filament používá tento fyzický filament jako komponentu. Sloučením se tento fyzický filament odstraní a míchaný filament může přestat být platný. Pokračovat?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Po dokončení operace bude projekt %s uzavřen a bude vytvořen nový projekt." @@ -8193,7 +8243,13 @@ msgstr "Potvrďte prosím, že je G-code v těchto předvolbách bezpečný, aby msgid "Customized Preset" msgstr "Přizpůsobená předvolba" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Názvy komponent v souboru STEP nejsou ve formátu UTF-8!" # AI Translated @@ -8216,7 +8272,7 @@ msgstr "Objem objektu je nula." #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Objekt ze souboru %s je příliš malý a může být v metrech nebo palcích.\n" "Chcete převést měřítko na milimetry?" @@ -8237,6 +8293,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Detekován vícedílný objekt" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Přiřazování textur k filamentům" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Upozornění při importu textury" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Načíst tyto soubory jako jeden objekt s více částmi?\n" @@ -8447,6 +8511,22 @@ msgstr "" msgid "Sync now" msgstr "Synchronizovat nyní" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Import textury se nezdařil. Zdá se, že model obsahuje data textury, ale proces importu nebylo možné dokončit. Model bude importován pouze jako geometrie." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Aplikují se barvy textury..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Aktualizuje se 3D náhled..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Barvy textury byly použity." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Upravené předvolby můžete ponechat v novém projektu nebo je zahodit" @@ -8579,6 +8659,17 @@ msgstr "Uložit rozřezaný soubor jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Soubor %s byl odeslán do úložiště tiskárny a lze jej zobrazit na tiskárně." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publikovat" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Typ trysky není nastaven. Nastavte prosím trysku a zkuste to znovu." @@ -9728,6 +9819,10 @@ msgstr "Spirálová váza" msgid "First layer filament sequence" msgstr "Pořadí filamentů v první vrstvě" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Seznam filamentů obsahuje míchané filamenty. Vlastní pořadí filamentů se neuplatní." + msgid "By Layer" msgstr "Podle vrstvy" @@ -9756,9 +9851,6 @@ msgstr "Přejít na webovou stránku publikace modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Poznámka: Příprava může trvat několik minut. Buďte prosím trpěliví." -msgid "Publish" -msgstr "Publikovat" - msgid "Publish was canceled" msgstr "Publikování bylo zrušeno" @@ -9774,6 +9866,64 @@ msgstr "Nahrávání dat" msgid "Jump to webpage" msgstr "Přejít na webovou stránku" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Uložit %s jako" @@ -11133,12 +11283,12 @@ msgid "No modifications need to be copied." msgstr "Není třeba kopírovat žádné úpravy." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Kopírovat parametry" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Upravit parametry %s" # AI Translated @@ -11697,34 +11847,6 @@ msgstr "Objemy čištění při výměně filamentu" msgid "Please choose the filament colour" msgstr "Vyberte prosím barvu filamentu" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Nativní živý náhled ve Waylandu vyžaduje video sink GStreamer GTK. Nainstalujte prosím plugin gtksink pro GStreamer a poté restartujte OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Nepodařilo se inicializovat nativní video sink GStreamer pro Wayland. Zkontrolujte prosím instalaci pluginu GStreamer GTK." - -# AI Translated -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Pro tuto úlohu je vyžadován Windows Media Player! Chcete ve svém operačním systému povolit „Windows Media Player“?" - -# AI Translated -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource nebyl správně zaregistrován pro přehrávání médií! Stisknutím Ano jej znovu zaregistrujete. Budete vyzváni dvakrát" - -# AI Translated -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Chybí komponenta BambuSource registrovaná pro přehrávání médií! Přeinstalujte prosím OrcaSlicer nebo požádejte o pomoc komunitu." - -# AI Translated -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Používá se BambuSource z jiné instalace, přehrávání videa nemusí fungovat správně! Stisknutím Ano to opravíte." - -# AI Translated -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Ve vašem systému chybí kodeky H.264 pro GStreamer, které jsou nutné k přehrávání videa. (Zkuste nainstalovat balíčky gstreamer1.0-plugins-bad nebo gstreamer1.0-libav a poté restartovat Orca Slicer?)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Cloudový agent není dostupný. Restartujte prosím OrcaSlicer a zkuste to znovu." @@ -12446,6 +12568,10 @@ msgstr "Pokud chcete přesto tisknout, můžete povolit možnost v Nastavení / msgid "No extrusions under current settings." msgstr "Při aktuálním nastavení nejsou žádné extruze." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Je použit míchaný filament s gradientem, ale 'Podvrstva míchané barvy' je vypnutá. Gradient nebude vytištěn." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Plynulý režim časosběru není podporován, pokud je povoleno pořadí tisku „podle objektu“." @@ -12482,6 +12608,10 @@ msgstr "Možná budete chtít zmenšit velikost modelu nebo změnit aktuální n msgid "Variable layer height is not supported with Organic supports." msgstr "Proměnná výška vrstvy není podporována s organickými podporami." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Filament věže na očištění trysky nemůže být míchaný filament." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Různé průměry trysek a filamentu nemusí správně fungovat, pokud je povolena základní věž. Jedná se o velmi experimentální funkci, proto pokračujte opatrně." @@ -12853,7 +12983,7 @@ msgstr "mm nebo %" msgid "Other layers" msgstr "Ostatní vrstvy" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Teplota desky pro vrstvy kromě počáteční. Hodnota 0 znamená, že filament nepodporuje tisk na chladicí podložce SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14232,6 +14362,8 @@ msgstr "Čas vrstvy" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Ventilátor chlazení části bude spuštěn u vrstev, jejichž odhadovaný čas je kratší než tato hodnota. Rychlost ventilátoru je interpolována mezi minimální a maximální podle času tisku vrstvy." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14540,6 +14672,62 @@ msgstr "Podpůrný materiál" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Podpůrný materiál se běžně používá pro tisk podpěr a rozhraní podpěr." +# AI Translated +msgid "Is mixed filament" +msgstr "Je míchaný filament" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Určuje, zda je tato pozice filamentu míchaným filamentem složeným z několika fyzických filamentů" + +# AI Translated +msgid "Mixed filament components" +msgstr "Komponenty míchaného filamentu" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Čárkami oddělené indexy komponentních filamentů počítané od 1, např. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Poměry podvrstev míchaného filamentu" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Čárkami oddělené hodnoty poměrů, jejichž součet je 1.0, např. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradient míchaného filamentu" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Zapne režim gradientu ve směru Z pro podvrstvy míchaného filamentu. Je-li zapnutý, poměry podvrstev se mění lineárně napříč vrstvami." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Rozsah gradientu míchaného filamentu" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Počáteční a koncový poměr první komponenty v režimu gradientu. Dvojice oddělená čárkou, např. \"0.10,0.90\" znamená 10% až 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Křivka gradientu míchaného filamentu" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Volitelná vlastní křivka ve stylu Photoshopu, která mapuje postup v ose Z na poměr první komponenty. Zapisuje se jako řídicí body oddělené svislými čarami, buď ve tvaru \"x,y\" (starší formát), nebo \"x,y,m_in,m_out\", pokud je potřeba přepsat tečnu (prázdná hodnota nebo \"nan\" použije výchozí PCHIP). x je v intervalu [0,1]; y je omezeno na nastavený rozsah poměrů, např. \"0,0.15|0.5,0.50|1,0.85\". Pokud je pole prázdné, použije se lineární gradient_range." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradient míchaného filamentu podle dílu" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Je-li zapnutý režim gradientu, aplikuje gradient na každý díl sestavy samostatně místo toho, aby se celá sestava brala jako jeden rozsah Z." + msgid "Filament printable" msgstr "Tisknutelný filament" @@ -15816,6 +16004,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Povolená maximální výstupní síla osy Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15828,6 +16017,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Zatížení osy Y hmotností podložky stroje" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16143,8 +16333,8 @@ msgstr "Počáteční a koncové body, které vedou z oblasti řezače do odpadk msgid "Reduce infill retraction" msgstr "Snížit retrakci při výplni" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Neprovádět retrakci, pokud se přejezd nachází zcela uvnitř oblasti výplně. Případné vytékání materiálu tak nebude viditelné. To může snížit počet retrakčních pohybů u složitých modelů a zkrátit dobu tisku, ale zároveň zpomalit slicování a generování G-code. V oblastech, kde je retrakce přeskočena, se zároveň neprovádí ani z-hop." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Neprovádět retrakci, pokud se přejezd nachází zcela uvnitř oblasti výplně. Případné vytékání materiálu tak nebude viditelné. To může snížit počet retrakčních pohybů u složitých modelů a zkrátit dobu tisku, ale zároveň zpomalit slicování a generování G-code. V oblastech, kde je retrakce přeskočena, se zároveň neprovádí ani Z-hop." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "Tato možnost sníží teplotu neaktivních extruderů, aby se zabránilo vytékání." @@ -16317,7 +16507,7 @@ msgstr "Délka retrakce po očištění" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Délka rychlé retrakce po očištění, vztažená k délce retrakce.\n" @@ -16364,7 +16554,7 @@ msgstr "Když je retrakce spuštěna před změnou nástroje, filament se zatáh msgid "Z-hop height" msgstr "Výška Z-hopu" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Po každém stažení filamentu se tryska mírně zvedne, aby vznikla mezera mezi tryskou a tiskem. Zabrání kolizi trysky s tiskem při přesunu. Použití spirálových linií pro zvedání v ose Z může zabránit vytahování vláken." msgid "Z-hop lower boundary" @@ -17427,6 +17617,14 @@ msgstr "" "\n" "Nastavení hodnoty v parametru množství retrakce před očištěním níže provede případnou dodatečnou retrakci před očištěním, jinak bude provedena po něm." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Podvrstva míchané barvy" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Zapne dělení na podvrstvy míchané barvy. Je-li zapnuto, vrstvy obsahující filamenty s míchanou barvou se rozdělí na podvrstvy, aby vznikl efekt míchání barev." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Čistící věž lze použít k odstranění zbytků materiálu na trysce a ke stabilizaci tlaku v komoře trysky, aby se předešlo vizuálním vadám při tisku objektů." @@ -18500,6 +18698,10 @@ msgstr "Síťování modelového souboru selhalo nebo nebyl nalezen platný tvar msgid "The supplied file couldn't be read because it's empty." msgstr "Zadaný soubor nelze načíst, protože je prázdný." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Formát souboru není kompatibilní a nelze jej načíst." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo .amf(.xml)." @@ -19992,19 +20194,19 @@ msgstr "Zobrazit pouze názvy tiskáren se změnami v předvolbách tiskárny, f msgid "Only display the filament names with changes to filament presets." msgstr "Zobrazit pouze názvy filamentů se změnami ve filamentových profilech." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Zobrazí se pouze názvy tiskáren s uživatelskými předvolbami tiskárny, každá vybraná předvolba bude exportována jako zip archiv." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Zobrazí se pouze názvy filamentů s uživatelskými filamentovými profily. \n" "Všechny uživatelské filamentové profily ve vybraných filamentech budou exportovány jako zip archiv." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Zobrazí se pouze názvy tiskáren se změněnými procesními předvolbami. \n" "Všechny uživatelské procesní předvolby ve vybraných tiskárnách budou exportovány jako zip archiv." @@ -20250,7 +20452,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Pro diagnostiku zdroje problému potřebujeme informace. Podrobný návod najdete na stránce wiki." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Tlačítko Zabalit shromáždí soubor projektu a protokoly aktuální relace do souboru zip." # AI Translated @@ -20306,7 +20508,7 @@ msgid "Stored logs" msgstr "Uložené protokoly" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Zabalí všechny uložené protokoly do souboru zip." # AI Translated @@ -20394,8 +20596,8 @@ msgid "Authorizing..." msgstr "Probíhá autorizace..." # AI Translated -msgid "Error. Can't get api token for authorization" -msgstr "Chyba. Nelze získat api token pro autorizaci" +msgid "Error. Can't get API token for authorization" +msgstr "Chyba. Nelze získat API token pro autorizaci" # AI Translated msgid "Could not parse server response." @@ -20851,8 +21053,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Povolit chytré přiřazení filamentu: přiřadit jeden filament více tryskám pro maximální úsporu" # AI Translated -msgid "Fila Saving" -msgstr "Úspora filamentu" +msgid "File Saving" +msgstr "Ukládání souboru" # AI Translated msgid "Don't remind me again" @@ -21207,6 +21409,15 @@ msgstr "Tuto akci nelze vrátit zpět. Pokračovat?" msgid "Skipping objects." msgstr "Přeskakování objektů." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + # AI Translated msgid "Select Filament" msgstr "Vybrat filament" @@ -21308,6 +21519,9 @@ msgstr "Restartovat nyní" msgid "NO RAMMING AT ALL" msgstr "ŽÁDNÝ RAMMING" +msgid "s" +msgstr "s" + # AI Translated msgid "Volumetric speed" msgstr "Objemová rychlost" @@ -21975,6 +22189,46 @@ msgstr "" "Zamezte kroucení\n" "Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Nativní živý náhled ve Waylandu vyžaduje video sink GStreamer GTK. Nainstalujte prosím plugin gtksink pro GStreamer a poté restartujte OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Nepodařilo se inicializovat nativní video sink GStreamer pro Wayland. Zkontrolujte prosím instalaci pluginu GStreamer GTK." + +# AI Translated +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Pro tuto úlohu je vyžadován Windows Media Player! Chcete ve svém operačním systému povolit „Windows Media Player“?" + +# AI Translated +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource nebyl správně zaregistrován pro přehrávání médií! Stisknutím Ano jej znovu zaregistrujete. Budete vyzváni dvakrát" + +# AI Translated +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Chybí komponenta BambuSource registrovaná pro přehrávání médií! Přeinstalujte prosím OrcaSlicer nebo požádejte o pomoc komunitu." + +# AI Translated +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Používá se BambuSource z jiné instalace, přehrávání videa nemusí fungovat správně! Stisknutím Ano to opravíte." + +# AI Translated +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Ve vašem systému chybí kodeky H.264 pro GStreamer, které jsou nutné k přehrávání videa. (Zkuste nainstalovat balíčky gstreamer1.0-plugins-bad nebo gstreamer1.0-libav a poté restartovat Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Úspora filamentu" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 436966457a..bb096c0a23 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher <hliebschergmail.com>\n" "Language-Team: \n" @@ -2917,6 +2917,10 @@ msgstr "Bearbeiten" msgid "Merge with" msgstr "Zusammenführen mit" +# AI Translated +msgid "Decompose Color" +msgstr "Farbe zerlegen" + msgid "Delete this filament" msgstr "Diesen Filament löschen" @@ -3216,6 +3220,10 @@ msgstr "Zusammenbau" msgid "Merge parts to an object" msgstr "Teile zu einem Objekt zusammenführen" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Die Verwendung einer variablen Schichthöhe zusammen mit der Mischfarben-Unterschicht kann zu einer schlechten Farbmischqualität führen." + # AI Translated msgid "Add layers" msgstr "Schichten hinzufügen" @@ -4757,7 +4765,7 @@ msgstr "" "\n" "Der Wert wird auf 0 zurückgesetzt." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Der alternative zusätzliche Wandmodus funktioniert nicht gut, wenn die vertikale Wanddicke auf Alle eingestellt ist." msgid "" @@ -4803,7 +4811,7 @@ msgstr "" "NEIN - unabhängige Stütz-Schichthöhen beibehalten" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height muss kleiner als layer_height sein.\n" @@ -4811,7 +4819,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Die Verriegelungstiefe sollte kleiner als die Hauttiefe sein.\n" @@ -4851,6 +4859,9 @@ msgstr "" "Ja - Diese Einstellungen ändern und den Spiralmodus automatisch aktivieren\n" "Nein - Spiralmodus nicht aktivieren" +msgid "N/A" +msgstr "Nicht verfügbar" + msgid "Printing" msgstr "Drucken" @@ -5310,9 +5321,6 @@ msgstr "Ungültiges Muster. Verwenden Sie N, N#K oder eine durch Kommas getrennt msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\"" -msgid "N/A" -msgstr "Nicht verfügbar" - # AI Translated msgid "System agents" msgstr "Systemagenten" @@ -6266,16 +6274,22 @@ msgstr "Projekt speichern als" msgid "Save current project as" msgstr "Aktuelles Projekt speichern als" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Lade ein Modell" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Zip-Archiv importieren" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Modelle aus einem Zip-Archiv laden" msgid "Import Configs" @@ -7791,6 +7805,10 @@ msgstr "Aktuelle Platte anpassen" msgid "The %s nozzle can not print %s." msgstr "Die %s Düse kann %s nicht drucken." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Der Druck von Mischfarben-Filament auf einem Drucker mit nur einem Extruder erfordert häufige Filamentwechsel und Spülvorgänge, was den Abfall und das Risiko einer Verstopfung von Düse bzw. Abfallschacht deutlich erhöhen kann." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Mischen von %1% mit %2% im Druck wird nicht empfohlen.\n" @@ -7916,6 +7934,26 @@ msgstr "Filamentliste von AMS synchronisieren" msgid "Set filaments to use" msgstr "Zu verwendende Filamente einstellen" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Mischfilament hinzufügen" + +# AI Translated +msgid "Mixed Filament" +msgstr "Mischfilament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Letztes Mischfilament entfernen" + +# AI Translated +msgid "Add mixed filament" +msgstr "Mischfilament hinzufügen" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Das Mischfilament enthält ungültige oder nicht zusammenpassende Komponenten. Bitte bearbeiten Sie die betroffenen Einträge erneut." + msgid "Search plate, object and part." msgstr "Suche Platte, Objekt und Teil." @@ -7923,6 +7961,18 @@ msgstr "Suche Platte, Objekt und Teil." msgid "Pellets" msgstr "Pellets" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Das Mischfilament enthält ungültige Komponentenverweise" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Bearbeiten / Löschen / Zusammenführen" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Das Ziel-Mischfilament verwendet dieses physische Filament als Komponente. Beim Zusammenführen wird dieses physische Filament entfernt und das Mischfilament kann dadurch ungültig werden. Fortfahren?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Nach Abschluss Ihrer Operation wird das %s-Projekt geschlossen und ein neues Projekt erstellt." @@ -8063,8 +8113,14 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher msgid "Customized Preset" msgstr "Benutzerdefinierte Profile" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF8-Format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF-8-Format!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "Aufgrund der nicht unterstützten Textkodierung können unbrauchbare Zeichen erscheinen!" @@ -8085,10 +8141,10 @@ msgstr "Das Volumen des Objekts ist Null" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Das Objekt aus der Datei %s ist zu klein und vielleicht in Metern oder Zoll angeben.\n" -" Möchten Sie auf Millimeter skalieren?" +"Möchten Sie auf Millimeter skalieren?" msgid "Object too small" msgstr "Objekt zu klein" @@ -8106,6 +8162,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Mehrteiliges Objekt erkannt" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Texturen werden den Filamenten zugeordnet" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Warnung beim Texturimport" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Diese Dateien als ein einziges Objekt mit mehreren Teilen laden?\n" @@ -8319,6 +8383,22 @@ msgstr "" msgid "Sync now" msgstr "Jetzt synchronisieren" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Der Texturimport ist fehlgeschlagen. Das Modell scheint Texturdaten zu enthalten, der Importvorgang konnte jedoch nicht abgeschlossen werden. Das Modell wird nur als Geometrie importiert." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Texturfarben werden angewendet..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D-Ansicht wird aktualisiert..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Texturfarben angewendet." + # AI Translated msgid "You can keep the modified presets for the new project or discard them" msgstr "Sie können die geänderten Profile für das neue Projekt beibehalten oder sie verwerfen" @@ -8451,6 +8531,17 @@ msgstr "Geslicte Datei speichern unter:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Veröffentlichen" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut." @@ -9563,6 +9654,10 @@ msgstr "Vasenmodus" msgid "First layer filament sequence" msgstr "Erste Filament-Schichtsequenz" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Die Filamentliste enthält Mischfilamente. Die benutzerdefinierte Filamentreihenfolge wird nicht wirksam." + msgid "By Layer" msgstr "Nach Schicht" @@ -9590,9 +9685,6 @@ msgstr "Zur Modellveröffentlichungs-Webseite springen" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Hinweis: Die Vorbereitung kann einige Minuten dauern. Bitte haben Sie Geduld." -msgid "Publish" -msgstr "Veröffentlichen" - msgid "Publish was canceled" msgstr "Veröffentlichung wurde abgebrochen" @@ -9608,6 +9700,64 @@ msgstr "Daten werden hochgeladen" msgid "Jump to webpage" msgstr "Zu einer Website springen" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s speichern als" @@ -10940,11 +11090,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Es müssen keine Änderungen kopiert werden." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Parameter kopieren" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Parameter von %s ändern" #, c-format, boost-format @@ -11460,27 +11610,6 @@ msgstr "Reinigungsvolumen für Filamentwechsel" msgid "Please choose the filament colour" msgstr "Bitte wählen Sie die Filamentfarbe" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Fehler beim Initialisieren des nativen Wayland GStreamer Video Sinks. Bitte überprüfen Ihre GStreamer GTK-Plugin-Installation." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Windows Media Player wird für diese Aufgabe benötigt! Möchten Sie 'Windows Media Player' für Ihr Betriebssystem aktivieren?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource wurde nicht korrekt für das Abspielen von Medien registriert! Drücken Sie Ja, um es erneut zu registrieren. Sie werden zweimal aufgefordert" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Fehlende BambuSource-Komponente, die für das Abspielen von Medien registriert ist! Bitte installieren Sie OrcaSlicer neu oder suchen Sie Hilfe in der Community." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Verwendung eines BambuSource aus einer anderen Installation, das Abspielen von Videos funktioniert möglicherweise nicht korrekt! Drücken Sie Ja, um es zu beheben." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Ihr System fehlt H.264-Codecs für GStreamer, die zum Abspielen von Videos erforderlich sind. (Versuchen Sie, die Pakete gstreamer1.0-plugins-bad oder gstreamer1.0-libav zu installieren und starten Sie Orca Slicer neu?)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Cloud-Agent ist nicht verfügbar. Bitte starten Sie OrcaSlicer neu und versuchen Sie es erneut." @@ -12185,6 +12314,10 @@ msgstr "Wenn Sie trotzdem drucken möchten, können Sie die Option in Einstellun msgid "No extrusions under current settings." msgstr "Keine Extrusion unter den aktuellen Einstellungen." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Es wird ein Mischfilament mit Verlauf verwendet, aber „Mischfarben-Unterschicht“ ist deaktiviert. Der Verlauf wird nicht gedruckt." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Der gewählte Zeitraffermodus wird nicht unterstützt, wenn die Sequenz \"nach Objekt\" aktiviert ist." @@ -12221,6 +12354,10 @@ msgstr "Sie möchten möglicherweise die Größe Ihres Modells reduzieren oder d msgid "Variable layer height is not supported with Organic supports." msgstr "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Das Filament des Reinigungsturms darf kein Mischfilament sein." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser funktionieren möglicherweise nicht gut, wenn der Reinigungsturm aktiviert ist. Es ist sehr experimentell, also gehen Sie bitte vorsichtig vor." @@ -12570,7 +12707,7 @@ msgstr "mm o. %" msgid "Other layers" msgstr "Andere Schichten" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Dies ist die Betttemperatur für Schichten mit Ausnahme der Ersten. Ein Wert von 0 bedeutet, dass das Filament auf der kalten Druckplatte SuperTack nicht unterstützt wird." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13934,6 +14071,8 @@ msgstr "Schichtdauer" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Der Bauteillüfter wird für Schichten aktiviert, deren geschätzte Zeit kürzer als dieser Wert ist. Die Lüftergeschwindigkeit wird zwischen der minimalen und maximalen Geschwindigkeit entsprechend der Druckzeit der Schicht interpoliert." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14238,6 +14377,62 @@ msgstr "Stützmaterial" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Stützmaterial wird üblicherweise zum Drucken von Stützen und Stütz-Schnittstellen verwendet." +# AI Translated +msgid "Is mixed filament" +msgstr "Ist Mischfilament" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Gibt an, ob dieser Filamentplatz ein Mischfilament aus mehreren physischen Filamenten ist" + +# AI Translated +msgid "Mixed filament components" +msgstr "Komponenten des Mischfilaments" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Durch Kommas getrennte Indizes der Komponentenfilamente, beginnend bei 1, z. B. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Unterschicht-Anteile des Mischfilaments" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Durch Kommas getrennte Anteilswerte, die in der Summe 1.0 ergeben, z. B. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Verlauf des Mischfilaments" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Aktiviert den Verlaufsmodus in Z-Richtung für die Unterschichten des Mischfilaments. Wenn aktiviert, ändern sich die Anteile der Unterschichten linear über die Schichten hinweg." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Verlaufsbereich des Mischfilaments" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Start- und Endanteil der ersten Komponente im Verlaufsmodus. Durch Komma getrenntes Paar, z. B. \"0.10,0.90\" bedeutet 10% bis 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Verlaufskurve des Mischfilaments" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Optionale benutzerdefinierte Kurve im Photoshop-Stil, die den Z-Fortschritt auf den Anteil der ersten Komponente abbildet. Kodiert als durch senkrechte Striche getrennte Kontrollpunkte, entweder \"x,y\" (veraltet) oder \"x,y,m_in,m_out\", wenn die Tangente überschrieben werden soll (ein leerer Wert oder \"nan\" verwendet den PCHIP-Standard). x liegt in [0,1]; y wird auf den konfigurierten Anteilsbereich begrenzt, z. B. \"0,0.15|0.5,0.50|1,0.85\". Bleibt das Feld leer, wird stattdessen der lineare gradient_range verwendet." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Verlauf pro Teil beim Mischfilament" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Wenn der Verlaufsmodus aktiviert ist, wird der Verlauf auf jedes Teil eines Zusammenbaus einzeln angewendet, anstatt den gesamten Zusammenbau als einen einzigen Z-Bereich zu behandeln." + msgid "Filament printable" msgstr "Filament druckbar" @@ -15478,6 +15673,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Die maximal zulässige Ausgangskraft der Y-Achse" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15488,6 +15684,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Die Maschinenbett-Massenlast der Y-Achse" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15802,7 +15999,7 @@ msgstr "Die Start- und Endpunkte, vom Schnittbereich bis zum Auswurfschacht." msgid "Reduce infill retraction" msgstr "Rückzug bei der Füllung verringern" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Kein Rückzug, wenn sich die Bewegung des Druckkopfes vollständig in einem Füllbereich befindet. Das bedeutet, dass das herauslaufen des Filaments nicht zu sehen ist. Dies kann die Zeit für das zurückziehen des Filaments bei komplexeren Modellen verkürzen und Druckzeit sparen, verlangsamt aber das Slicen und die G-Code Generierung." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15972,7 +16169,7 @@ msgstr "Rückzugsmenge nach dem Wischen" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Die Länge des schnellen Rückzugs nach dem Wischen, relativ zur Rückzugslänge.\n" @@ -16019,7 +16216,7 @@ msgstr "Wenn vor einem Werkzeugwechsel ein Rückzug ausgelöst wird, wird das Fi msgid "Z-hop height" msgstr "Z-Hub-Höhe" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Bei jedem Rückzug wird die Düse ein wenig angehoben, um einen Abstand zwischen Düse und Druck zu schaffen. Dadurch wird verhindert, dass die Düse bei der Verfahrbewegung gegen den Druck stößt. Die Verwendung einer Spirallinie zum Anheben von z kann Fadenbildung verhindern." msgid "Z-hop lower boundary" @@ -17070,6 +17267,14 @@ msgstr "" "\n" "Wenn ein Wert in der Einstellung \"Rückzugsmenge vor dem Wischen\" unten angegeben ist, wird ein überschüssiger Rückzug vor dem Wischen ausgeführt, ansonsten wird er danach ausgeführt." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Mischfarben-Unterschicht" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Aktiviert die Aufteilung in Mischfarben-Unterschichten. Wenn aktiviert, werden Schichten mit Mischfarben-Filamenten in Unterschichten aufgeteilt, um Farbmischeffekte zu erzielen." + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Der Reinigungsturm kann verwendet werden, um Rückstände auf der Düse zu entfernen und den Kammerdruck im Inneren der Düse zu stabilisieren, um Erscheinungsdefekte beim Drucken von Objekten zu vermeiden." @@ -18140,6 +18345,10 @@ msgstr "Das Erstellen eines Netzes aus der Modelldatei ist fehlgeschlagen oder e msgid "The supplied file couldn't be read because it's empty." msgstr "Die angegebene Datei konnte nicht gelesen werden, weil sie leer ist." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Das Dateiformat ist nicht kompatibel und kann nicht gelesen werden." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj oder .amf(.xml) haben." @@ -19600,19 +19809,19 @@ msgstr "Nur Druckernamen mit Änderungen an Drucker-, Filament- und Prozessprofi msgid "Only display the filament names with changes to filament presets." msgstr "Nur die Filamentnamen mit Änderungen an den Filamentprofilen werden angezeigt." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Nur Druckernamen mit Benutzerdruckerprofilen werden angezeigt, und jedes Profil, das Sie auswählen, wird als ZIP exportiert." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Nur die Filamentnamen mit Benutzerfilamentvorlagen werden angezeigt, \n" "und alle Benutzerfilamentvorlagen in jedem Filamentnamen, den Sie auswählen, " msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Nur Druckernamen mit geänderten Prozessvorlagen werden angezeigt, \n" "und alle Benutzerprozessvorlagen in jedem Druckernamen, den Sie auswählen, werden als ZIP exportiert." @@ -19841,7 +20050,7 @@ msgstr "Systeminformationen in die Zwischenablage kopieren" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Wir benötigen Informationen zur Diagnose der Ursache des Problems. Überprüfen Sie die Wiki-Seite für eine detaillierte Anleitung." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Die Schaltfläche „Packen“ sammelt die Projektdatei und Protokolle der aktuellen Sitzung in einer ZIP-Datei." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19883,7 +20092,7 @@ msgstr "Protokollstufe" msgid "Stored logs" msgstr "Gespeicherte Protokolle" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Packt alle gespeicherten Protokolle in eine ZIP-Datei." msgid "Profiles" @@ -19950,7 +20159,7 @@ msgstr "Druckertyp nicht gefunden, bitte manuell auswählen." msgid "Authorizing..." msgstr "Autorisierung..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Fehler. Kann kein API-Token für die Autorisierung erhalten" msgid "Could not parse server response." @@ -20398,8 +20607,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Intelligente Filamentzuweisung aktivieren: Ein Filament mehreren Düsen zuweisen, um Einsparungen zu maximieren" # AI Translated -msgid "Fila Saving" -msgstr "Filamentersparnis" +msgid "File Saving" +msgstr "Datei speichern" msgid "Don't remind me again" msgstr "Nicht mehr erinnern" @@ -20685,6 +20894,15 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Fortsetzen?" msgid "Skipping objects." msgstr "Objekte werden übersprungen." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Filament auswählen" @@ -20764,6 +20982,9 @@ msgstr "Jetzt neu starten" msgid "NO RAMMING AT ALL" msgstr "KEIN RAMMING ÜBERALL" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Volumetrische Geschwindigkeit" @@ -21388,6 +21609,39 @@ msgstr "" "Verwerfungen vermeiden\n" "Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Fehler beim Initialisieren des nativen Wayland GStreamer Video Sinks. Bitte überprüfen Ihre GStreamer GTK-Plugin-Installation." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Windows Media Player wird für diese Aufgabe benötigt! Möchten Sie 'Windows Media Player' für Ihr Betriebssystem aktivieren?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource wurde nicht korrekt für das Abspielen von Medien registriert! Drücken Sie Ja, um es erneut zu registrieren. Sie werden zweimal aufgefordert" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Fehlende BambuSource-Komponente, die für das Abspielen von Medien registriert ist! Bitte installieren Sie OrcaSlicer neu oder suchen Sie Hilfe in der Community." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Verwendung eines BambuSource aus einer anderen Installation, das Abspielen von Videos funktioniert möglicherweise nicht korrekt! Drücken Sie Ja, um es zu beheben." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Ihr System fehlt H.264-Codecs für GStreamer, die zum Abspielen von Videos erforderlich sind. (Versuchen Sie, die Pakete gstreamer1.0-plugins-bad oder gstreamer1.0-libav zu installieren und starten Sie Orca Slicer neu?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Filamentersparnis" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 88fb455959..b949aea730 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -2758,6 +2758,9 @@ msgstr "" msgid "Merge with" msgstr "" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "" @@ -3035,6 +3038,9 @@ msgstr "" msgid "Merge parts to an object" msgstr "" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "" @@ -4493,7 +4499,7 @@ msgid "" "The value will be reset to 0." msgstr "" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "" msgid "" @@ -4524,13 +4530,13 @@ msgid "" msgstr "" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" @@ -4561,6 +4567,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -5009,9 +5018,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5941,16 +5947,22 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" msgid "Load a model" msgstr "" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "" msgid "Import Configs" @@ -7399,6 +7411,9 @@ msgstr "" msgid "The %s nozzle can not print %s." msgstr "" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7519,12 +7534,36 @@ msgstr "" msgid "Set filaments to use" msgstr "" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "" msgid "Pellets" msgstr "" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "" @@ -7659,7 +7698,13 @@ msgstr "" msgid "Customized Preset" msgstr "" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -7681,7 +7726,7 @@ msgstr "" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" msgid "Object too small" @@ -7696,6 +7741,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "" @@ -7890,6 +7941,18 @@ msgstr "" msgid "Sync now" msgstr "" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "" @@ -8019,6 +8082,17 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -9039,6 +9113,9 @@ msgstr "" msgid "First layer filament sequence" msgstr "" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "" @@ -9066,9 +9143,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9084,6 +9158,64 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "" @@ -10325,11 +10457,11 @@ msgstr "" msgid "No modifications need to be copied." msgstr "" -msgid "Copy paramters" +msgid "Copy parameters" msgstr "" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "" #, c-format, boost-format @@ -10803,27 +10935,6 @@ msgstr "" msgid "Please choose the filament colour" msgstr "" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "" - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "" - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "" - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "" - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "" @@ -11506,6 +11617,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" @@ -11542,6 +11656,9 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "" @@ -11870,7 +11987,7 @@ msgstr "" msgid "Other layers" msgstr "" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -12954,6 +13071,7 @@ msgstr "" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "" +msgctxt "second" msgid "s" msgstr "" @@ -13247,6 +13365,48 @@ msgstr "" msgid "Support material is commonly used to print supports and support interfaces." msgstr "" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "" @@ -14394,6 +14554,7 @@ msgstr "" msgid "The allowed maximum output force of Y axis" msgstr "" +msgctxt "Newton" msgid "N" msgstr "" @@ -14403,6 +14564,7 @@ msgstr "" msgid "The machine bed mass load of Y axis" msgstr "" +msgctxt "gram" msgid "g" msgstr "" @@ -14671,7 +14833,7 @@ msgstr "" msgid "Reduce infill retraction" msgstr "" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -14827,7 +14989,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" @@ -14870,7 +15032,7 @@ msgstr "" msgid "Z-hop height" msgstr "" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "" msgid "Z-hop lower boundary" @@ -15830,6 +15992,12 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "" @@ -16857,6 +17025,9 @@ msgstr "" msgid "The supplied file couldn't be read because it's empty." msgstr "" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "" @@ -18187,17 +18358,17 @@ msgstr "" msgid "Only display the filament names with changes to filament presets." msgstr "" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" msgid "Please select at least one printer or filament." @@ -18412,7 +18583,7 @@ msgstr "" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "" -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "" msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -18454,7 +18625,7 @@ msgstr "" msgid "Stored logs" msgstr "" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "" msgid "Profiles" @@ -18519,7 +18690,7 @@ msgstr "" msgid "Authorizing..." msgstr "" -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "" msgid "Could not parse server response." @@ -18957,7 +19128,7 @@ msgstr "" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "" -msgid "Fila Saving" +msgid "File Saving" msgstr "" msgid "Don't remind me again" @@ -19240,6 +19411,15 @@ msgstr "" msgid "Skipping objects." msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "" @@ -19317,6 +19497,9 @@ msgstr "" msgid "NO RAMMING AT ALL" msgstr "" +msgid "s" +msgstr "" + msgid "Volumetric speed" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 9c5127e50a..e1d86c2fe8 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -2832,6 +2832,9 @@ msgstr "Editar" msgid "Merge with" msgstr "Fusionar con" +msgid "Decompose Color" +msgstr "Descomponer color" + msgid "Delete this filament" msgstr "Eliminar este filamento" @@ -3113,6 +3116,9 @@ msgstr "Ensamblaje" msgid "Merge parts to an object" msgstr "Fusionar piezas en un objeto" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Usar altura de capa variable junto con la subcapa de color mezclado puede reducir la calidad de la mezcla de colores." + msgid "Add layers" msgstr "Añadir capas" @@ -4629,7 +4635,7 @@ msgstr "" "\n" "El valor se restablecerá a 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Perímetro adicional alternado no funciona bien cuando \"Garantizar el grosor vertical de las cubiertas\" se establece en Todos." msgid "" @@ -4675,7 +4681,7 @@ msgstr "" "NO - Mantener la altura de capa de soportes independiente" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height debe ser menor que layer_height.\n" @@ -4683,7 +4689,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "La profundidad de bloqueo debe ser menor que la profundidad de piel.\n" @@ -4723,6 +4729,9 @@ msgstr "" "Sí - Cambiar estos ajustes y activar el modo espiral automáticamente\n" "No - Dejar de usar el modo espiral esta vez" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Imprimiendo" @@ -5176,9 +5185,6 @@ msgstr "Patrón inválido. Use N, N#K, o una lista separada por comas con #K opc msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vector esperado: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Agentes del sistema" @@ -6123,16 +6129,22 @@ msgstr "Guardar proyecto como" msgid "Save current project as" msgstr "Guardar el proyecto actual como" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Cargar un modelo" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importar archivo Zip" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Cargar modelos contenidos en un archivo zip" msgid "Import Configs" @@ -7613,6 +7625,9 @@ msgstr "Personalizar cama actual" msgid "The %s nozzle can not print %s." msgstr "La boquilla %s no puede imprimir %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Imprimir filamento de color mezclado en una impresora de un solo extrusor requiere cambios de filamento y purgas frecuentes, lo que puede aumentar considerablemente el desperdicio y el riesgo de obstrucción de la boquilla o del conducto de residuos." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "No se recomienda mezclar %1% con %2% en la impresión.\n" @@ -7735,12 +7750,36 @@ msgstr "Sicronizar filamentos de la lista AMS" msgid "Set filaments to use" msgstr "Elegir filamentos para usar" +msgid "Add Mixed Filament" +msgstr "Añadir filamento mixto" + +msgid "Mixed Filament" +msgstr "Filamento mixto" + +msgid "Remove last mixed filament" +msgstr "Eliminar el último filamento mixto" + +msgid "Add mixed filament" +msgstr "Añadir filamento mixto" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "El filamento mixto tiene componentes no válidos o incoherentes. Vuelva a editar las entradas afectadas." + msgid "Search plate, object and part." msgstr "Buscar cama, objeto y parte." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "El filamento mixto tiene referencias de componentes rotas" + +msgid "Edit / Delete / Merge" +msgstr "Editar / Borrar / Fusionar" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "El filamento mixto de destino usa este filamento físico como componente. Al fusionarlos se eliminará este filamento físico y el filamento mixto puede quedar no válido. ¿Continuar?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Al completar la operación, el proyecto %s se cerrará y se creará un nuevo proyecto." @@ -7877,8 +7916,14 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p msgid "Customized Preset" msgstr "Perfil Personalizado" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "¡El nombre puede mostrar caracteres no válidos!" @@ -7899,10 +7944,10 @@ msgstr "El volumen del objeto es cero" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "El objeto del archivo %s es demasiado pequeño, tal vez en metros o pulgadas.\n" -" ¿Quiere escalar a milímetros?" +"¿Quiere escalar a milímetros?" msgid "Object too small" msgstr "Objeto demasiado pequeño" @@ -7919,6 +7964,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objeto multipieza detectado" +msgid "Matching textures to filaments" +msgstr "Asociando texturas a los filamentos" + +msgid "Texture Import Warning" +msgstr "Aviso de importación de texturas" + msgid "Load these files as a single object with multiple parts?\n" msgstr "¿Cargar estos archivos como un objeto único con múltiples piezas?\n" @@ -8123,6 +8174,18 @@ msgstr "" msgid "Sync now" msgstr "Sincronizar ahora" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "No se ha podido importar la textura. El modelo parece contener datos de textura, pero no se ha podido completar el proceso de importación. El modelo se importará solo como geometría." + +msgid "Applying texture colors..." +msgstr "Aplicando colores de textura..." + +msgid "Updating 3D view..." +msgstr "Actualizando la vista 3D..." + +msgid "Texture colors applied." +msgstr "Colores de textura aplicados." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Puedes mantener los perfiles modificados en el nuevo proyecto o descartarlos" @@ -8254,6 +8317,17 @@ msgstr "Guardar el archivo laminado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo." @@ -9338,6 +9412,9 @@ msgstr "Vaso en espiral" msgid "First layer filament sequence" msgstr "Secuencia de primera capa de filamento" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "La lista de filamentos contiene filamentos mixtos. La secuencia de filamentos personalizada no tendrá efecto." + msgid "By Layer" msgstr "Por Capa" @@ -9365,9 +9442,6 @@ msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicación fue cancelada" @@ -9383,6 +9457,64 @@ msgstr "Cargando datos" msgid "Jump to webpage" msgstr "Ir a la página web" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Guardar %s como" @@ -10670,11 +10802,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "No hay modificaciones que copiar." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Copiar parámetros" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modificar parámetros de %s" #, c-format, boost-format @@ -11181,27 +11313,6 @@ msgstr "Volúmenes de purgado para el cambio de filamentos" msgid "Please choose the filament colour" msgstr "Por favor, elija el color del filamento" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "No se pudo inicializar el receptor de vídeo nativo de Wayland GStreamer. Compruebe la instalación del plugin GTK de GStreamer." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Para esta tarea se necesita el Reproductor de Windows Media. ¿Desea activar el \"Reproductor de Windows Media\" en su sistema operativo?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource no se ha registrado correctamente para la reproducción multimedia. Pulse Sí para volver a registrarlo. Será promocionado dos veces" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "¡Falta el componente BambuSource para la reproducción de medios! Reinstale OrcaSlicer o busque ayuda en la comunidad." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Si utiliza una BambuSource de una instalación diferente, es posible que la reproducción de vídeo no funcione correctamente. Pulsa Sí para solucionarlo." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "A tu sistema le faltan los codecs H.264 para GStreamer, necesarios para reproducir vídeo. (Prueba a instalar los paquetes gstreamer1.0-plugins-bad o gstreamer1.0-libav y, a continuación, reinicia Orca Slicer...)." - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "El proveedor de servicios en la nube no está disponible. Reinicia OrcaSlicer e inténtalo de nuevo." @@ -11891,6 +12002,9 @@ msgstr "Si aún así quieres imprimir, puedes activar la opción en Preferencias msgid "No extrusions under current settings." msgstr "No hay extrusiones con los ajustes actuales." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Se está usando un filamento mixto con degradado, pero 'Subcapa de color mezclado' está desactivado. El degradado no se imprimirá." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Modo de timelapse suave no está soportado cuando la secuencia \"por objeto\" está activada." @@ -11927,6 +12041,9 @@ msgstr "Es posible que desee reducir el tamaño de su modelo o cambiar la config msgid "Variable layer height is not supported with Organic supports." msgstr "La altura de capa adaptativa no es compatible con los soportes orgánicos." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "El filamento de la torre de purga no puede ser un filamento mixto." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Diámetros de boquillas y diámetros de filamento diferentes pueden no funcionar correctamente cuando la torre de purga está activada. Esta función es experimental, así que proceda con cautela." @@ -12267,8 +12384,8 @@ msgstr "mm o %" msgid "Other layers" msgstr "Otras capas" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "Temperatura de la cama para las capas, excepto la inicial. Un valor de 0 significa que el filamento no es compatible con la Cama Fría SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no es compatible con la Cama Fría SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no admite la impresión en la Cama Fría." @@ -13611,6 +13728,7 @@ msgstr "Tiempo de capa" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "El ventilador de refrigeración de la pieza se activará para las capas cuyo tiempo estimado sea inferior a este valor. La velocidad del ventilador se interpola entre las velocidades mínima y máxima del ventilador en función del tiempo de impresión de cada capa." +msgctxt "second" msgid "s" msgstr "s" @@ -13916,6 +14034,50 @@ msgstr "Material de soporte" msgid "Support material is commonly used to print supports and support interfaces." msgstr "El material de soporte se utiliza habitualmente para imprimir soportes y la interfaz de los soportes." +msgid "Is mixed filament" +msgstr "Es filamento mixto" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Indica si esta ranura de filamento es un filamento mixto compuesto por varios filamentos físicos" + +msgid "Mixed filament components" +msgstr "Componentes del filamento mixto" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Índices (empezando en 1) de los filamentos componentes, separados por comas; p. ej. \"1,3\"" + +msgid "Mixed filament sublayer ratios" +msgstr "Proporciones de subcapa del filamento mixto" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Valores de proporción separados por comas cuya suma sea 1.0; p. ej. \"0.7,0.3\"" + +msgid "Mixed filament gradient" +msgstr "Degradado del filamento mixto" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Activa el modo de degradado en dirección Z para las subcapas del filamento mixto. Al activarlo, las proporciones de las subcapas varían linealmente entre capas." + +msgid "Mixed filament gradient range" +msgstr "Rango del degradado del filamento mixto" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Proporciones inicial y final del primer componente en el modo de degradado. Par separado por comas; p. ej. \"0.10,0.90\" significa del 10% al 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Curva del degradado del filamento mixto" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Curva personalizada opcional, al estilo de Photoshop, que asigna el progreso en Z a la proporción del primer componente. Se codifica como puntos de control separados por barras verticales, con el formato \"x,y\" (heredado) o \"x,y,m_in,m_out\" cuando se necesita anular la tangente (un valor vacío o \"nan\" usa el valor PCHIP predeterminado). x está en [0,1]; y se limita al rango de proporciones configurado; p. ej. \"0,0.15|0.5,0.50|1,0.85\". Si se deja vacío, se usa el gradient_range lineal." + +msgid "Mixed filament per-part gradient" +msgstr "Degradado por pieza del filamento mixto" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Cuando el modo de degradado está activado, aplica el degradado a cada pieza de un ensamblaje de forma independiente en lugar de tratar todo el ensamblaje como un único rango Z." + msgid "Filament printable" msgstr "Filamento imprimible" @@ -15150,6 +15312,7 @@ msgstr "Fuerza máxima del eje Y" msgid "The allowed maximum output force of Y axis" msgstr "La fuerza máxima permitida del eje Y" +msgctxt "Newton" msgid "N" msgstr "N" @@ -15159,6 +15322,7 @@ msgstr "Masa de la cama del eje Y" msgid "The machine bed mass load of Y axis" msgstr "La carga de la masa de la cama de la máquina del eje Y" +msgctxt "gram" msgid "g" msgstr "g" @@ -15470,7 +15634,7 @@ msgstr "Los puntos de inicio y fin, desde la zona de corte al cubo de basura." msgid "Reduce infill retraction" msgstr "Reducir la retracción del relleno" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Desactiva la retracción cuando el desplazamiento se realiza en su totalidad dentro de un área de relleno, donde los artefactos causados por un rezumado no son visibles. Puede reducir el número de retracciones y por ende el tiempo total de retracción al imprimir modelos complejos, reduciendo el tiempo total de impresión. Sin embargo, puede que las operaciones de laminado y de generación del archivo G-Code sean más lentas." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15635,7 +15799,7 @@ msgstr "Cantidad de retracción después de la limpieza" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "La longitud de la retracción rápida después de la limpieza, relativa a la longitud de retracción.\n" @@ -15682,7 +15846,7 @@ msgstr "Cuando se activa la retracción antes de un cambio de herramienta, el fi msgid "Z-hop height" msgstr "Altura de Salto en Z" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Cada vez que se realiza una retracción, la boquilla se levanta un poco para crear un pequeño margen entre la boquilla y la impresión. Esto evita que la boquilla golpee la pieza cuando se desplaza. El uso de la línea espiral para levantar z puede evitar la aparición de hilos." msgid "Z-hop lower boundary" @@ -16715,6 +16879,14 @@ msgstr "" "\n" "Fijando un valor en la cantidad de retracción antes del purgado se realizará cualquier exceso de retracción antes del purgado, de lo contrario se realizará después." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Subcapa de color mezclado" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Activa la división en subcapas de color mezclado. Al activarlo, las capas que contienen filamentos de color mezclado se dividen en subcapas para lograr efectos de mezcla de colores." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar la presión de la recámara en el interior de la boquilla, con el fin de evitar defectos visuales al imprimir objetos." @@ -17423,7 +17595,7 @@ msgid "Current Z-hop" msgstr "Z-Hop actual" msgid "Contains Z-hop present at the beginning of the custom G-code block." -msgstr "Contiene el z-hop presente al principio del bloque de G-Code personalizado." +msgstr "Contiene el Z-hop presente al principio del bloque de G-Code personalizado." msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back." msgstr "Posición del extrusor al comienzo del bloque de G-Code personalizado. Si el G-Code personalizado viaja a otro lugar, debe escribir en esta variable para que OrcaSlicer sepa desde dónde viaja cuando recupere el control." @@ -17771,6 +17943,10 @@ msgstr "La generación de la malla del archivo del modelo falló o no hay una fo msgid "The supplied file couldn't be read because it's empty." msgstr "No se ha podido leer el archivo proporcionado porque está vacío." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "El formato del archivo es incompatible y no se puede analizar." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato de archivo desconocido: el archivo de entrada debe tener extensión .STL, .obj o .amf (.xml)." @@ -19233,17 +19409,17 @@ msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de im msgid "Only display the filament names with changes to filament presets." msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de filamento." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Sólo se mostrarán los nombres de impresoras con perfiles de impresora de usuario, y cada perfil que elija se exportará como un archivo zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "Sólo se mostrarán los nombres de filamento con perfiles de filamento de usuario, y todos los perfiles de filamento de usuario de cada nombre de filamento que seleccione se exportarán como un archivo zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Sólo se mostrarán los nombres de impresoras con perfiles de procesos modificados, \n" "y todos los perfiles de procesos de usuario de cada nombre de impresora que seleccione se exportarán como un archivo zip." @@ -19472,7 +19648,7 @@ msgstr "Copiar información del sistema al portapapeles" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Necesitamos información para diagnosticar el origen del problema. Consulta la página wiki para una guía detallada." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "El botón Empaquetar recopila el archivo del proyecto y los registros de la sesión actual en un archivo zip." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19514,7 +19690,7 @@ msgstr "Nivel de registro" msgid "Stored logs" msgstr "Registros almacenados" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Empaqueta todos los registros almacenados en un archivo zip." msgid "Profiles" @@ -19581,7 +19757,7 @@ msgstr "No se ha encontrado el tipo de impresora; selecciónelo manualmente." msgid "Authorizing..." msgstr "Autorizando..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Error. No se puede obtener el token de la API para la autorización" msgid "Could not parse server response." @@ -20027,8 +20203,9 @@ msgstr "Eliminado" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Activar la asignación inteligente de filamento: asigna un filamento a varias boquillas para maximizar el ahorro" -msgid "Fila Saving" -msgstr "Ahorro de filamento" +# AI Translated +msgid "File Saving" +msgstr "Guardado de archivo" msgid "Don't remind me again" msgstr "No me recuerdes de nuevo" @@ -20310,6 +20487,15 @@ msgstr "Esta acción no se puede deshacer. ¿Continuar?" msgid "Skipping objects." msgstr "Omitiendo objetos." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Seleccionar Filamento" @@ -20387,6 +20573,9 @@ msgstr "Reiniciar ahora" msgid "NO RAMMING AT ALL" msgstr "NO CHOCAR EN ABSOLUTO" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Velocidad volumétrica" @@ -20963,6 +21152,36 @@ msgstr "" "Evita la deformación\n" "¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "No se pudo inicializar el receptor de vídeo nativo de Wayland GStreamer. Compruebe la instalación del plugin GTK de GStreamer." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Para esta tarea se necesita el Reproductor de Windows Media. ¿Desea activar el \"Reproductor de Windows Media\" en su sistema operativo?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource no se ha registrado correctamente para la reproducción multimedia. Pulse Sí para volver a registrarlo. Será promocionado dos veces" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "¡Falta el componente BambuSource para la reproducción de medios! Reinstale OrcaSlicer o busque ayuda en la comunidad." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Si utiliza una BambuSource de una instalación diferente, es posible que la reproducción de vídeo no funcione correctamente. Pulsa Sí para solucionarlo." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "A tu sistema le faltan los codecs H.264 para GStreamer, necesarios para reproducir vídeo. (Prueba a instalar los paquetes gstreamer1.0-plugins-bad o gstreamer1.0-libav y, a continuación, reinicia Orca Slicer...)." + +#~ msgid "N" +#~ msgstr "N" + +#~ msgid "g" +#~ msgstr "g" + +#~ msgid "Fila Saving" +#~ msgstr "Ahorro de filamento" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" @@ -21042,7 +21261,7 @@ msgstr "" #~ msgid "Select Filament && Hotends" #~ msgstr "Seleccionar Filamento && Hotends" -#~ msgid "External spools is not supported since Filament Track Switch has been installed. If you want to use external spool, please uninstall it." +#~ msgid "External spools are not supported since Filament Track Switch has been installed. If you want to use external spool, please uninstall it." #~ msgstr "Los carretes externos no son compatibles porque se ha instalado el Filament Track Switch. Si desea utilizar un carrete externo, desinstálelo." #, c-format, boost-format diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index 03e6d6685d..a475d76ab2 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana <mgoiogana@gmail.com>\n" "Language-Team: \n" @@ -2869,6 +2868,10 @@ msgstr "Editatu" msgid "Merge with" msgstr "Batu honekin" +# AI Translated +msgid "Decompose Color" +msgstr "Deskonposatu kolorea" + msgid "Delete this filament" msgstr "Ezabatu filamentu hau" @@ -3150,6 +3153,10 @@ msgstr "Multzoa" msgid "Merge parts to an object" msgstr "Batu piezak objektu batean" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Geruza-altuera aldakorra kolore nahasiaren azpigeruzarekin batera erabiltzeak kolore-nahasketaren kalitatea okertu dezake." + msgid "Add layers" msgstr "Geruzak gehitu" @@ -4670,7 +4677,7 @@ msgstr "" "\n" "Balioa 0ra berrezarriko da." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Horma gehigarri txandakatuak ez du ondo funtzionatzen \"Bermatu oskolaren lodiera bertikala\" Guztiak gisa ezarrita dagoenean." msgid "" @@ -4716,7 +4723,7 @@ msgstr "" "NO - 'Euskarrien Geruza-Altuera Independentea' mantendu" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height txigiagoa izan behar da layer_height baino.\n" @@ -4724,7 +4731,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Blokeo-sakonera gainazalaren sakonera baino txikiagoa izan behar da.\n" @@ -4764,6 +4771,9 @@ msgstr "" "Bai - Aldatu ezarpen hauek eta gaitu espiral/loreontzi modua automatikoki\n" "Ez - Utzi bertan behera espiral modua gaitzea" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Inprimatzen" @@ -5224,9 +5234,6 @@ msgstr "Patroi baliogabea. Erabili N, N#K edo komaz bereizitako zerrenda bat, sa msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formatuak ez du balio. Espero den formatu bektoriala: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Sistema-agenteak" @@ -6168,16 +6175,22 @@ msgstr "Gorde proiektua honela" msgid "Save current project as" msgstr "Gorde uneko proiektua honela" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Inportatu 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Modeloa kargatu" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Inportatu ZIP fitxategia" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Kargatu ZIP fitxategi baten barnean dauden modeloak" msgid "Import Configs" @@ -7680,6 +7693,10 @@ msgstr "Pertsonalizatu uneko plaka" msgid "The %s nozzle can not print %s." msgstr "%s pitak ezin du %s inprimatu." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Kolore nahasiko filamentua estrusore bakarreko inprimagailu batean inprimatzeak filamentu-aldaketa eta purgatze ugari eskatzen ditu, eta horrek nabarmen handitu ditzake hondakinak eta pita edo hondakin-hodia buxatzeko arriskua." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Ez da gomendatzen inprimatzean %1% eta %2% nahastea.\n" @@ -7802,12 +7819,44 @@ msgstr "Sinkronizatu filamentuen zerrenda AMSarekin" msgid "Set filaments to use" msgstr "Ezarri erabili beharreko filamentuak" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Gehitu filamentu nahasia" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filamentu nahasia" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Kendu azken filamentu nahasia" + +# AI Translated +msgid "Add mixed filament" +msgstr "Gehitu filamentu nahasia" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Filamentu nahasiak baliogabeko edo bat ez datozen osagaiak ditu. Editatu berriro kaltetutako sarrerak." + msgid "Search plate, object and part." msgstr "Bilatu plaka, objektua eta pieza." msgid "Pellets" msgstr "Pelletak" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Filamentu nahasiak hautsitako osagai-erreferentziak ditu" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Editatu / Ezabatu / Batu" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Helburuko filamentu nahasiak filamentu fisiko hau erabiltzen du osagai gisa. Batzeak filamentu fisiko hau ezabatuko du eta filamentu nahasia baliogabetu dezake. Jarraitu?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Eragiketa amaitzean, %s proiektua itxi eta proiektu berri bat sortuko da." @@ -7945,7 +7994,13 @@ msgstr "Berretsi aurrezarpen hauetako G-codea segurua dela, makinari kalterik ez msgid "Customized Preset" msgstr "Aurrezarpen pertsonalizatua" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "STEP fitxategiko osagai-izena(k) ez dago/daude UTF-8 formatuan!" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -7967,10 +8022,10 @@ msgstr "Objektuaren bolumena zero da" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "%s fitxategiko objektua txikiegia da, eta baliteke metrotan edo hazbetetan egotea.\n" -" Milimetroetara eskalatu nahi duzu?" +"Milimetroetara eskalatu nahi duzu?" msgid "Object too small" msgstr "Objektua txikiegia da" @@ -7986,6 +8041,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Pieza anitzeko objektua detektatu da" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Testurak filamentuekin parekatzen" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Testura inportatzeko abisua" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Kargatu fitxategi hauek pieza anitzeko objektu bakar gisa?\n" @@ -8190,6 +8253,22 @@ msgstr "" msgid "Sync now" msgstr "Sinkronizatu orain" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Testura inportatzeak huts egin du. Badirudi modeloak testura-datuak dituela, baina ezin izan da inportatze-prozesua osatu. Modeloa geometria gisa soilik inportatuko da." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Testura-koloreak aplikatzen..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D ikuspegia eguneratzen..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Testura-koloreak aplikatuta." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Aldatutako aurrezarpenak proiektu berrirako gorde edo baztertu ditzakezu" @@ -8321,6 +8400,17 @@ msgstr "Gorde xerratutako fitxategia honela:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s fitxategia inprimagailuaren biltegiratze-eremura bidali da eta inprimagailuan ikus daiteke." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Argitaratu" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Pita mota ez dago ezarrita. Ezarri pita eta saiatu berriro." @@ -9407,6 +9497,10 @@ msgstr "Espiral formako loreontzia" msgid "First layer filament sequence" msgstr "Lehen geruzako filamentuen sekuentzia" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Filamentu-zerrendak filamentu nahasiak ditu. Filamentu-sekuentzia pertsonalizatuak ez du eraginik izango." + msgid "By Layer" msgstr "Geruzaren arabera" @@ -9434,9 +9528,6 @@ msgstr "Joan modeloa argitaratzeko web-orrira" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Oharra: prestaketak minutu batzuk iraun ditzake. Izan pazientzia." -msgid "Publish" -msgstr "Argitaratu" - msgid "Publish was canceled" msgstr "Argitaratzea bertan behera utzi da" @@ -9452,6 +9543,64 @@ msgstr "Datuak igotzen" msgid "Jump to webpage" msgstr "Joan web-orrira" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Gorde %s honela" @@ -10765,11 +10914,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Ez dago kopiatu beharreko aldaketarik." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Kopiatu parametroak" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Aldatu %s-(r)en parametroak" #, c-format, boost-format @@ -11274,27 +11423,6 @@ msgstr "Filamentua aldatzeko purgatze-bolumenak" msgid "Please choose the filament colour" msgstr "Hautatu filamentuen kolorea" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Waylanden jatorrizko zuzeneko ikuspegiak GStreamer GTK bideo-hustubidea behar du. Instalatu GStreamerrerako gtksink plugina eta berrabiarazi OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Ezin izan da Waylanden jatorrizko GStreamer bideo-hustubidea hasieratu. Egiaztatu GStreamer GTK pluginaren instalazioa." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Windows Media Player behar da zeregin honetarako! 'Windows Media Player' gaitu nahi duzu zure sistema eragilean?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource ez da behar bezala erregistratu multimedia erreproduzitzeko! Sakatu Bai berriro erregistratzeko. Bi aldiz galdetuko zaizu" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Multimedia erreproduzitzeko erregistratutako BambuSource osagaia falta da! Berrinstalatu OrcaSlicer edo eskatu laguntza komunitateari." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Beste instalazio bateko BambuSource erabiltzen ari zara; baliteke bideo-erreprodukzioak behar bezala ez funtzionatzea! Sakatu Bai konpontzeko." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Zure sisteman GStreamer-erako H.264 kodekak falta dira, eta beharrezkoak dira bideoa erreproduzitzeko. (Saiatu gstreamer1.0-plugins-bad edo gstreamer1.0-libav paketeak instalatzen, eta berrabiarazi OrcaSlicer?)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Hodeiko agentea ez dago erabilgarri. Berrabiarazi OrcaSlicer eta saiatu berriro." @@ -11994,6 +12122,10 @@ msgstr "Hala ere inprimatu nahi baduzu, aukera hau gaitu dezakezu: Hobespenak / msgid "No extrusions under current settings." msgstr "Uneko ezarpenekin ez dago estrusiorik." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Gradientedun filamentu nahasi bat erabiltzen ari da, baina 'Kolore nahasiaren azpigeruza' desgaituta dago. Gradientea ez da inprimatuko." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Timelapsearen modu leuna ez da onartzen \"objektuka\" sekuentzia gaituta dagoenean." @@ -12030,6 +12162,10 @@ msgstr "Modeloaren tamaina txikitu edo uneko inprimatze-ezarpenak aldatu eta ber msgid "Variable layer height is not supported with Organic supports." msgstr "Geruza-altuera aldakorra ez da onartzen euskarri organikoekin." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Purgatze-dorrearen filamentua ezin da filamentu nahasia izan." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Pitaren diametro eta filamentu-diametro desberdinek agian ez dute ondo funtzionatuko purgatze-dorrea gaituta dagoenean. Oso esperimentala da; jarraitu kontuz." @@ -12379,8 +12515,8 @@ msgstr "mm edo %" msgid "Other layers" msgstr "Beste geruzak" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "Hasierakoa ez den geruzetarako ohearen tenperatura. 0 balioak filamentuak SuperTack Plaka hotzaren gainean inprimatzea ez duela onartzen esan nahi du." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgstr "Hau da lehenengoa ez den geruzetarako ohearen tenperatura. 0 balioak filamentuak SuperTack Plaka hotzaren gainean inprimatzea ez duela onartzen esan nahi du." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Hau da lehenengoa ez den geruzetarako ohearen tenperatura. 0 balioak filamentuak Plaka hotzaren gainean inprimatzea ez duela onartzen esan nahi du." @@ -13730,6 +13866,8 @@ msgstr "Geruza-denbora" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Piezaren hozte-haizagailua gaituko da estimatutako denbora balio hau baino laburragoa duten geruzetan. Haizagailuaren abiadura gutxienekoaren eta gehienekoaren artean interpolatuko da geruzaren inprimatze-denboraren arabera." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14035,6 +14173,62 @@ msgstr "Euskarri-materiala" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Euskarri-materiala euskarriak eta euskarri-interfazeak inprimatzeko erabiltzen da normalean." +# AI Translated +msgid "Is mixed filament" +msgstr "Filamentu nahasia da" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Filamentu-zirrikitu hau hainbat filamentu fisikoz osatutako filamentu nahasia den adierazten du" + +# AI Translated +msgid "Mixed filament components" +msgstr "Filamentu nahasiaren osagaiak" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Osagai-filamentuen indizeak, komaz bereizita eta 1etik hasita; adib. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Filamentu nahasiaren azpigeruza-ratioak" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Komaz bereizitako ratio-balioak, guztira 1.0 ematen dutenak; adib. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Filamentu nahasiaren gradientea" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Z norabideko gradiente modua gaitzen du filamentu nahasiaren azpigeruzetarako. Gaituta dagoenean, azpigeruzen ratioak linealki aldatzen dira geruzaz geruza." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Filamentu nahasiaren gradiente-barrutia" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Lehen osagaiaren hasierako eta amaierako ratioak gradiente moduan. Komaz bereizitako parea; adib. \"0.10,0.90\" %10etik %90era esan nahi du." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Filamentu nahasiaren gradiente-kurba" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Aukerako Photoshop estiloko kurba pertsonalizatua, Z progresioa lehen osagaiaren ratioarekin lotzen duena. Barra bertikalez bereizitako kontrol-puntu gisa kodetzen da, \"x,y\" (zaharra) edo \"x,y,m_in,m_out\" formatuan, tangentea gainidatzi behar denean (balio hutsak edo \"nan\" balioak PCHIP lehenetsia erabiltzen du). x [0,1] tartean dago; y konfiguratutako ratio-barrutira mugatzen da; adib. \"0,0.15|0.5,0.50|1,0.85\". Hutsik uzten bada, gradient_range lineala erabiltzen da haren ordez." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Filamentu nahasiaren gradientea pieza bakoitzeko" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Gradiente modua gaituta dagoenean, gradientea multzoko pieza bakoitzari modu independentean aplikatzen zaio, multzo osoa Z barruti bakar gisa hartu beharrean." + msgid "Filament printable" msgstr "Filamentua inprimagarria" @@ -15286,6 +15480,8 @@ msgstr "Y ardatzaren gehieneko indarra" msgid "The allowed maximum output force of Y axis" msgstr "Y ardatzaren gehieneko irteera-indar baimendua" +# AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15295,6 +15491,8 @@ msgstr "Y ardatzeko ohearen masa" msgid "The machine bed mass load of Y axis" msgstr "Y ardatzeko makinaren oheak jasaten duen masa-karga" +# AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15606,8 +15804,8 @@ msgstr "Mozteko eremutik hondakin-ontzira doazen hasierako eta amaierako puntuak msgid "Reduce infill retraction" msgstr "Murriztu betegarriaren atzera-egitea" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Ez egin atzera-egiterik mugimendua guztiz betegarriaren eremuan dagoenean. Horrek esan nahi du jarioa ez dela ikusiko. Honek modelo konplexuetan atzera-egite kopurua murriztu eta inprimatze-denbora aurreztu dezake, baina xerraketa eta G-codearen sorrera motelduko ditu. Kontuan izan z-hop mugimendua ez dela egiten atzera-egitea saihesten den eremuetan." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Ez egin atzera-egiterik mugimendua guztiz betegarriaren eremuan dagoenean. Horrek esan nahi du jarioa ez dela ikusiko. Honek modelo konplexuetan atzera-egite kopurua murriztu eta inprimatze-denbora aurreztu dezake, baina xerraketa eta G-codearen sorrera motelduko ditu. Kontuan izan Z-hop mugimendua ez dela egiten atzera-egitea saihesten den eremuetan." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "Aukera honek aktibo ez dauden estrusoreen tenperatura jaitsiko du, jarioa saihesteko." @@ -15771,7 +15969,7 @@ msgstr "Garbitu ondorengo atzera-egite kantitatea" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Garbiketa-mugimenduaren ondorengo atzera-egite azkarraren luzera, atzera-egitearen luzerari dagokionez.\n" @@ -15818,7 +16016,7 @@ msgstr "Erreminta aldatu aurretik atzera-egitea abiarazten denean, filamentua ze msgid "Z-hop height" msgstr "Z jauziaren altuera" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Atzera-egite bakoitzean pita apur bat altxatzen da pitaren eta inprimaketaren artean tartea sortzeko. Horrela, mugimenduetan pitak pieza jotzea saihesten da. Z altxatzeko espiral-lerroak erabiltzeak hariak sortzea murriztu dezake." msgid "Z-hop lower boundary" @@ -16860,6 +17058,14 @@ msgstr "" "\n" "Beheko garbitu aurreko atzera-egite kantitatearen ezarpenean balio batezarriz gero, gehiegizko atzera-egitea garbiketa baino lehen egingo da; bestela, ondoren egingo da." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Kolore nahasiaren azpigeruza" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Kolore nahasiaren azpigeruzatan zatitzea gaitzen du. Gaituta dagoenean, kolore nahasiko filamentuak dituzten geruzak azpigeruzatan zatitzen dira kolore-nahasketa efektuak lortzeko." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Purgatze-dorrea pitaren hondarrak garbitzeko eta pitaren barruko ganbera-presioa egonkortzeko erabil daiteke, objektuetan itxura-akatsak saihesteko." @@ -17918,6 +18124,10 @@ msgstr "Modelo-fitxategiaren sareztatzeak huts egin du edo ez dago baliozko form msgid "The supplied file couldn't be read because it's empty." msgstr "Emandako fitxategia ezin izan da irakurri hutsik dagoelako." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Fitxategi-formatua bateraezina da eta ezin da analizatu." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Fitxategi-formatu ezezaguna: sarrerako fitxategiak .stl, .obj edo .amf(.xml) luzapena izan behar du." @@ -19379,19 +19589,19 @@ msgstr "Inprimagailuaren, filamentuen edo prozesuen aurrezarpenetan aldaketak di msgid "Only display the filament names with changes to filament presets." msgstr "Bistaratu soilik filamentu-aurrezarpenetan aldaketak dituzten filamentu-izenak." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Erabiltzailearen inprimagailu-aurrezarpenak dituzten inprimagailu-izenak soilik bistaratuko dira, eta hautatzen duzun aurrezarpen bakoitza zip gisa esportatuko da." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Erabiltzailearen filamentu-aurrezarpenak dituzten filamentu-izenak soilik bistaratuko dira, \n" "eta hautatzen duzun filamentu-izen bakoitzeko erabiltzailearen filamentu-aurrezarpen guztiak zip gisa esportatuko dira." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Prozesu-aurrezarpen aldatuak dituzten inprimagailu-izenak soilik bistaratuko dira, \n" "eta hautatzen duzun inprimagailu-izen bakoitzeko erabiltzailearen prozesu-aurrezarpen guztiak zip gisa esportatuko dira." @@ -19620,7 +19830,7 @@ msgstr "Kopiatu sistemaren informazioa arbelera" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Arazoaren jatorria diagnostikatzeko informazioa behar dugu. Begiratu wiki-orria gida xehatua ikusteko." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Paketatu botoiak proiektu-fitxategia eta uneko saioko erregistroak ZIP fitxategi batean biltzen ditu." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19662,7 +19872,7 @@ msgstr "Erregistro-maila" msgid "Stored logs" msgstr "Gordetako erregistroak" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Gordetako erregistro guztiak ZIP fitxategi batean paketatzen ditu." msgid "Profiles" @@ -19729,7 +19939,7 @@ msgstr "Ez da inprimagailu mota aurkitu; hautatu eskuz." msgid "Authorizing..." msgstr "Baimena ematen..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Errorea. Ezin da baimenerako API tokena lortu" msgid "Could not parse server response." @@ -20180,8 +20390,9 @@ msgstr "Ezabatuta" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Gaitu filamentuen esleipen adimenduna: esleitu filamentua hainbat pitatara aurrezpena maximizatzeko" -msgid "Fila Saving" -msgstr "Filamentu-aurrezpena" +# AI Translated +msgid "File Saving" +msgstr "Fitxategia gordetzea" msgid "Don't remind me again" msgstr "Ez gogorarazi berriro" @@ -20463,6 +20674,15 @@ msgstr "Ekintza hau ezin da desegin. Jarraitu?" msgid "Skipping objects." msgstr "Objektuak saltatzen." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Hautatu filamentua" @@ -20542,6 +20762,9 @@ msgstr "Berrabiarazi orain" msgid "NO RAMMING AT ALL" msgstr "MUTURRAREN MOLDAKETARIK EZ INONDIK INORA" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Abiadura bolumetrikoa" @@ -21118,6 +21341,36 @@ msgstr "" "Saihestu okertzea\n" "Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Waylanden jatorrizko zuzeneko ikuspegiak GStreamer GTK bideo-hustubidea behar du. Instalatu GStreamerrerako gtksink plugina eta berrabiarazi OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Ezin izan da Waylanden jatorrizko GStreamer bideo-hustubidea hasieratu. Egiaztatu GStreamer GTK pluginaren instalazioa." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Windows Media Player behar da zeregin honetarako! 'Windows Media Player' gaitu nahi duzu zure sistema eragilean?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource ez da behar bezala erregistratu multimedia erreproduzitzeko! Sakatu Bai berriro erregistratzeko. Bi aldiz galdetuko zaizu" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Multimedia erreproduzitzeko erregistratutako BambuSource osagaia falta da! Berrinstalatu OrcaSlicer edo eskatu laguntza komunitateari." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Beste instalazio bateko BambuSource erabiltzen ari zara; baliteke bideo-erreprodukzioak behar bezala ez funtzionatzea! Sakatu Bai konpontzeko." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Zure sisteman GStreamer-erako H.264 kodekak falta dira, eta beharrezkoak dira bideoa erreproduzitzeko. (Saiatu gstreamer1.0-plugins-bad edo gstreamer1.0-libav paketeak instalatzen, eta berrabiarazi OrcaSlicer?)" + +#~ msgid "N" +#~ msgstr "N" + +#~ msgid "g" +#~ msgstr "g" + +#~ msgid "Fila Saving" +#~ msgstr "Filamentu-aurrezpena" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" @@ -22259,20 +22512,12 @@ msgstr "" #~ msgid "The 3mf has the following customized filament or printer presets:" #~ msgstr "3mf-ak pertsonalizatutako filamentuen edo inprimagailuaren aurrezarpen hauek dauzka:" -#~ msgid "Name of components inside step file is not UTF8 format!" -#~ msgstr "Step fitxategiko osagaien izena ez dago UTF8 formatuan!" +#~ msgid "Name of components inside step file is not UTF-8 format!" +#~ msgstr "Step fitxategiko osagaien izena ez dago UTF-8 formatuan!" #~ msgid "The name may show garbage characters!" #~ msgstr "Izenak karaktere ulergaitzak erakuts ditzake!" -#, c-format, boost-format -#~ msgid "" -#~ "The object from file %s is too small, and maybe in meters or inches.\n" -#~ " Do you want to scale to millimeters?" -#~ msgstr "" -#~ "%s fitxategiko objektua txikiegia da, eta baliteke metroetan edo hazbetetan egotea.\n" -#~ " Milimetrotara eskalatu nahi duzu?" - #~ msgid "" #~ "This file contains several objects positioned at multiple heights.\n" #~ "Instead of considering them as multiple objects, should \n" @@ -23123,24 +23368,6 @@ msgstr "" #~ msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable." #~ msgstr "Hormak gurutzatzea saihesteko gehieneko desbideratze-distantzia. Ez desbideratu distantzia balio hau baino handiagoa bada. Desbideratze-luzera balio absolutu gisa edo lekualdatze-ibilbide zuzenaren ehuneko gisa zehaztu daiteke (adibidez, 50%). Zero, desgaitzeko." -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate." -#~ msgstr "Ohearen tenperatura hasierakoa ez diren geruzetarako. 0 balioak esan nahi du filamentuak ez duela plaka hotzean inprimatzea onartzen." - -#~ msgid "°C" -#~ msgstr "°C" - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured Cool Plate." -#~ msgstr "Ohearen tenperatura hasierakoa ez diren geruzetarako. 0 balioak esan nahi du filamentuak ez duela testuradun plaka hotzean inprimatzea onartzen." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Engineering Plate." -#~ msgstr "Ohearen tenperatura hasierakoa ez diren geruzetarako. 0 balioak esan nahi du filamentuak ez duela ingeniaritza-plakan inprimatzea onartzen." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the High Temp Plate." -#~ msgstr "Ohearen tenperatura hasierakoa ez diren geruzetarako. 0 balioak esan nahi du filamentuak ez duela tenperatura altuko plakan inprimatzea onartzen." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured PEI Plate." -#~ msgstr "Ohearen tenperatura hasierakoa ez diren geruzetarako. 0 balioak esan nahi du filamentuak ez duela testuradun PEI plakan inprimatzea onartzen." - #~ msgid "Initial layer" #~ msgstr "Hasierako geruza" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index fc58381106..de356edd7d 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.9\n" # AI Translated msgid "Main Extruder" @@ -2896,6 +2896,10 @@ msgstr "Éditer" msgid "Merge with" msgstr "Fusionner avec" +# AI Translated +msgid "Decompose Color" +msgstr "Décomposer la couleur" + msgid "Delete this filament" msgstr "Supprimer ce filament" @@ -3178,6 +3182,10 @@ msgstr "Assemblé" msgid "Merge parts to an object" msgstr "Fusionner les pièces en un objet" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "L’utilisation d’une hauteur de couche variable avec la sous-couche de couleur mixte peut dégrader la qualité du mélange des couleurs." + msgid "Add layers" msgstr "Ajouter des couches" @@ -4707,7 +4715,7 @@ msgstr "" "\n" "La valeur sera remise à 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "La paroi supplémentaire alternée ne fonctionne pas bien lorsque le paramètre Assurer l’épaisseur de la coque verticale est réglée sur Tous." msgid "" @@ -4753,7 +4761,7 @@ msgstr "" "NON - Conserver la hauteur de la couche de support indépendante" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height doit être inférieur à la hauteur de couche.\n" @@ -4761,7 +4769,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "La profondeur de verrouillage doit être inférieure à la profondeur de la peau.\n" @@ -4801,6 +4809,9 @@ msgstr "" "Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/vase\n" "Non - Annuler l'activation du mode spirale" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Impression" @@ -5260,9 +5271,6 @@ msgstr "Motif invalide. Utilisez N, N#K, ou une liste séparée par des virgules msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Agents système" @@ -6215,16 +6223,22 @@ msgstr "Enregistrer le projet sous" msgid "Save current project as" msgstr "Enregistrer le projet actuel sous" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importer des fichiers 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Charger un modèle" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importer une archive Zip" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Charger les modèles contenus dans une archive zip" msgid "Import Configs" @@ -7733,6 +7747,10 @@ msgstr "Personnaliser le plateau actuel" msgid "The %s nozzle can not print %s." msgstr "La buse %s ne peut pas imprimer %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "L’impression d’un filament de couleur mixte sur une imprimante à extrudeur unique nécessite des changements de filament et des purges fréquents, ce qui peut augmenter considérablement les déchets et le risque d’obstruction de la buse ou de la goulotte à déchets." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Le mélange de %1% avec %2% lors de l'impression n'est pas recommandé.\n" @@ -7858,12 +7876,44 @@ msgstr "Synchroniser la liste des filaments depuis l'AMS" msgid "Set filaments to use" msgstr "Définir les filaments à utiliser" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Ajouter un filament mixte" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filament mixte" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Supprimer le dernier filament mixte" + +# AI Translated +msgid "Add mixed filament" +msgstr "Ajouter un filament mixte" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Le filament mixte comporte des composants invalides ou incohérents. Veuillez modifier à nouveau les entrées concernées." + msgid "Search plate, object and part." msgstr "Recherche de plaque, d'objet et de pièce." msgid "Pellets" msgstr "Granulés" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Le filament mixte comporte des références de composants invalides" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Éditer / Supprimer / Fusionner" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Le filament mixte cible utilise ce filament physique comme composant. La fusion supprimera ce filament physique et risque de rendre le filament mixte invalide. Continuer ?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Une fois votre opération terminée, le projet %s sera fermé et un nouveau projet sera créé." @@ -8000,7 +8050,13 @@ msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs af msgid "Customized Preset" msgstr "Préréglage personnalisé" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Le nom des composants dans le fichier STEP n'est pas au format UTF-8 !" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8022,10 +8078,10 @@ msgstr "Le volume de l'objet est nul" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "L’objet du fichier %s est trop petit, et est peut-être en mètres ou en pouces.\n" -" Voulez-vous le mettre à l’échelle en millimètres ?" +"Voulez-vous le mettre à l’échelle en millimètres ?" msgid "Object too small" msgstr "Objet trop petit" @@ -8042,6 +8098,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objet en plusieurs pièces détecté" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Association des textures aux filaments" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Avertissement d’importation de texture" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Charger ces fichiers en tant qu'objet unique avec plusieurs parties ?\n" @@ -8246,6 +8310,22 @@ msgstr "" msgid "Sync now" msgstr "Synchroniser maintenant" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Échec de l’importation de la texture. Le modèle semble contenir des données de texture, mais le processus d’importation n’a pas pu être mené à son terme. Le modèle sera importé en tant que géométrie uniquement." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Application des couleurs de texture..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Mise à jour de la vue 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Couleurs de texture appliquées." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Vous pouvez conserver les préréglages modifiés dans le nouveau projet ou les supprimer" @@ -8377,6 +8457,17 @@ msgstr "Enregistrer le fichier découpé sous :" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publier" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Le type de buse n'est pas défini. Veuillez définir la buse et réessayer." @@ -9477,6 +9568,10 @@ msgstr "Vase spirale" msgid "First layer filament sequence" msgstr "Séquence d’impression de la première couche" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "La liste des filaments contient des filaments mixtes. La séquence de filaments personnalisée ne sera pas appliquée." + msgid "By Layer" msgstr "Par Couche" @@ -9504,9 +9599,6 @@ msgstr "Accéder à la page internet de publication des modèles" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter." -msgid "Publish" -msgstr "Publier" - msgid "Publish was canceled" msgstr "La publication a été annulée" @@ -9522,6 +9614,64 @@ msgstr "Téléversement des données" msgid "Jump to webpage" msgstr "Ouvrir la page internet" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Enregistrer %s sous" @@ -10707,7 +10857,7 @@ msgid "Acceleration limitation" msgstr "Limitation d'accélération" msgid "Jerk limitation" -msgstr "Limitation des secousses" +msgstr "Limitation du jerk" msgid "Single extruder multi-material setup" msgstr "Configuration multi-matériaux pour extrudeur unique" @@ -10854,11 +11004,11 @@ msgstr "%s : %s" msgid "No modifications need to be copied." msgstr "Aucune modification à copier." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Copier les paramètres" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modifier les paramètres de %s" #, c-format, boost-format @@ -11369,27 +11519,6 @@ msgstr "Volumes de purge pour le changement de filament" msgid "Please choose the filament colour" msgstr "Veuillez choisir la couleur du filament" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "L’aperçu en direct natif sous Wayland nécessite le récepteur vidéo GStreamer GTK. Veuillez installer le plugin gtksink pour GStreamer, puis redémarrer OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Échec de l’initialisation du récepteur vidéo GStreamer natif sous Wayland. Veuillez vérifier l’installation de votre plugin GStreamer GTK." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Windows Media Player est nécessaire pour cette tâche ! Voulez-vous activer ‘Windows Media Player’ pour votre système d’exploitation ?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource n’a pas été correctement enregistré pour la lecture de médias ! Appuyez sur Oui pour le réenregistrer. Vous recevrez deux fois la demande de permission" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Composant BambuSource manquant pour la lecture multimédia ! Veuillez réinstaller OrcaSlicer ou demander de l'aide à la communauté." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Si vous utilisez une BambuSource provenant d’une autre installation, la lecture de la vidéo peut ne pas fonctionner correctement ! Appuyez sur Oui pour résoudre le problème." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Il manque à votre système les codecs H.264 pour GStreamer, qui sont nécessaires pour lire la vidéo. (Essayez d’installer les paquets gstreamer1.0-plugins-bad ou gstreamer1.0-libav, puis redémarrez Orca Slicer)." - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "L’agent cloud n’est pas disponible. Veuillez redémarrer OrcaSlicer et réessayer." @@ -12092,6 +12221,10 @@ msgstr "Si vous souhaitez tout de même imprimer, vous pouvez activer l’option msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Un filament mixte avec dégradé est utilisé, mais « Sous-couche de couleur mixte » est désactivé. Le dégradé ne sera pas imprimé." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Le mode fluide du timelapse n'est pas pris en charge lorsque le mode d'impression « par objet » est activé." @@ -12128,6 +12261,10 @@ msgstr "Vous devez réduire la taille de votre modèle ou modifier les paramètr msgid "Variable layer height is not supported with Organic supports." msgstr "La hauteur de couche variable n’est pas prise en charge avec les supports organiques." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Le filament de la tour d’essuyage ne peut pas être un filament mixte." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Différents diamètres de buses et de filaments peuvent ne pas fonctionner correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet très expérimental, il convient donc de procéder avec prudence." @@ -12226,7 +12363,7 @@ msgid "Plate %d: %s does not support filament %s" msgstr "Plaque %d : %s ne prend pas en charge le filament %s" msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" -msgstr "Un réglage trop bas de la vitesse de saccade peut entraîner des artefacts sur les surfaces courbes" +msgstr "Un réglage trop bas de la vitesse de jerk peut entraîner des artefacts sur les surfaces courbes" msgid "" "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\n" @@ -12234,7 +12371,7 @@ msgid "" "You can adjust the maximum jerk setting in your printer's configuration to get higher speeds." msgstr "" "Le réglage du jerk dépasse le jerk maximum de l’imprimante (machine_max_jerk_x/machine_max_jerk_y).\n" -"Orca plafonne automatiquement la vitesse de l’impulsion pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" +"Orca plafonne automatiquement la vitesse du jerk pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" "Vous pouvez ajuster le réglage du jerk maximum dans la configuration de votre imprimante pour obtenir des vitesses plus élevées." msgid "" @@ -12475,7 +12612,7 @@ msgstr "mm ou %" msgid "Other layers" msgstr "Autres couches" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Température du plateau pour les couches sauf la première. Une valeur de 0 signifie que le filament ne prend pas en charge l'impression sur la Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13831,6 +13968,8 @@ msgstr "Temps de couche" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Le ventilateur de refroidissement des pièces sera activé pour les couches dont le temps estimé est inférieur à cette valeur. La vitesse du ventilateur est interpolée entre les vitesses minimale et maximale du ventilateur en fonction du temps d'impression de la couche" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14137,6 +14276,62 @@ msgstr "Supports" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Le matériau de support est généralement utilisé pour imprimer le support et les interfaces de support" +# AI Translated +msgid "Is mixed filament" +msgstr "Est un filament mixte" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Indique si cet emplacement de filament est un filament mixte composé de plusieurs filaments physiques" + +# AI Translated +msgid "Mixed filament components" +msgstr "Composants du filament mixte" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Indices (à partir de 1) des filaments composants, séparés par des virgules ; par ex. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Proportions des sous-couches du filament mixte" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Valeurs de proportion séparées par des virgules dont la somme vaut 1.0 ; par ex. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Dégradé du filament mixte" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Active le mode dégradé dans la direction Z pour les sous-couches du filament mixte. Lorsqu’il est activé, les proportions des sous-couches varient linéairement d’une couche à l’autre." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Plage du dégradé du filament mixte" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Proportions de début et de fin du premier composant en mode dégradé. Paire séparée par une virgule ; par ex. \"0.10,0.90\" signifie de 10% à 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Courbe du dégradé du filament mixte" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Courbe personnalisée facultative, de style Photoshop, associant la progression en Z à la proportion du premier composant. Encodée sous forme de points de contrôle séparés par des barres verticales, au format \"x,y\" (ancien) ou \"x,y,m_in,m_out\" lorsqu’une tangente doit être forcée (une valeur vide ou \"nan\" utilise la valeur PCHIP par défaut). x est compris dans [0,1] ; y est limité à la plage de proportions configurée ; par ex. \"0,0.15|0.5,0.50|1,0.85\". Si le champ est vide, le gradient_range linéaire est utilisé à la place." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Dégradé par pièce du filament mixte" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Lorsque le mode dégradé est activé, applique le dégradé à chaque pièce d’un assemblage indépendamment au lieu de traiter l’assemblage entier comme une seule plage Z." + msgid "Filament printable" msgstr "Filament imprimable" @@ -15382,6 +15577,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Force de sortie maximale autorisée sur l'axe Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15392,6 +15588,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Charge massique du plateau de la machine sur l'axe Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15703,7 +15900,7 @@ msgstr "Les points de départ et d'arrivée qui se situent entre la zone de coup msgid "Reduce infill retraction" msgstr "Réduire la rétraction du remplissage" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Ne pas effectuer de rétraction lors de déplacement en zone de remplissage car même si l’extrudeur suinte, les coulures ne seraient pas visibles. Cela peut réduire les rétractions pour les modèles complexes et économiser du temps d’impression, mais ralentit la découpe et la génération du G-code" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15873,7 +16070,7 @@ msgstr "Quantité de rétraction après essuyage" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "La longueur de la rétraction rapide après l'essuyage, relative à la longueur de rétraction.\n" @@ -15920,7 +16117,7 @@ msgstr "Lorsque la rétraction est déclenchée avant un changement d’outil, l msgid "Z-hop height" msgstr "Hauteur du saut en Z" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Chaque fois que la rétraction est effectuée, la buse est légèrement soulevée pour créer un espace entre la buse et l'impression. Il empêche la buse de toucher l'impression lors du déplacement. L'utilisation d'une ligne en spirale pour soulever z peut empêcher l'enfilage" msgid "Z-hop lower boundary" @@ -16965,6 +17162,14 @@ msgstr "" "\n" "Le réglage d’une valeur dans le paramètre de quantité de rétraction avant essuyage ci-dessous permet d’effectuer toute rétraction excédentaire avant l’essuyage, sinon elle sera effectuée après l’essuyage." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Sous-couche de couleur mixte" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Active la division en sous-couches de couleur mixte. Lorsqu’elle est activée, les couches contenant des filaments de couleur mixte sont divisées en sous-couches afin d’obtenir des effets de mélange de couleurs." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La tour de purge peut être utilisée pour nettoyer les résidus sur la buse et stabiliser la pression du caisson à l'intérieur de la buse afin d'éviter les défauts d'apparence lors de l'impression d'objets." @@ -18031,6 +18236,10 @@ msgstr "Le maillage d'un fichier modèle a échoué ou la forme n'est pas valide msgid "The supplied file couldn't be read because it's empty." msgstr "Le fichier fourni n'a pas pu être lu car il est vide" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Le format du fichier est incompatible et ne peut pas être analysé." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Format de fichier inconnu : le fichier d'entrée doit porter l'extension .stl, .obj ou .amf (.xml)." @@ -19492,19 +19701,19 @@ msgstr "N’afficher que les noms d’imprimantes avec les modifications apport msgid "Only display the filament names with changes to filament presets." msgstr "N’affichez que les noms des filaments lorsque vous modifiez les préréglages des filaments." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Seuls les noms d’imprimantes avec des préréglages d’imprimante utilisateur seront affichés, et chaque préréglage que vous choisissez sera exporté sous forme de fichier zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Seuls les noms de filaments contenant des préréglages de filaments utilisateur seront affichés, \n" "et tous les préréglages de filament d’utilisateur dans chaque nom de filament que vous sélectionnez seront exportés sous forme de fichier zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Seuls les noms d’imprimantes dont les préréglages de traitement ont été modifiés seront affichés, \n" "et tous les préréglages de processus de l’utilisateur dans chaque nom d’imprimante que vous sélectionnez seront exportés sous forme de fichier zip." @@ -19733,7 +19942,7 @@ msgstr "Copier les informations système dans le presse-papiers" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Nous avons besoin d’informations pour diagnostiquer l’origine du problème. Consultez la page wiki pour un guide détaillé." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Le bouton Compresser rassemble le fichier de projet et les journaux de la session actuelle dans un fichier ZIP." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19775,7 +19984,7 @@ msgstr "Niveau de journalisation" msgid "Stored logs" msgstr "Journaux stockés" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Compresse tous les journaux stockés dans un fichier ZIP." msgid "Profiles" @@ -19842,7 +20051,7 @@ msgstr "Type d’imprimante introuvable, veuillez le sélectionner manuellement. msgid "Authorizing..." msgstr "Autorisation en cours…" -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Erreur : impossible d’obtenir le jeton d’API pour l’autorisation" msgid "Could not parse server response." @@ -20290,8 +20499,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Activer l'attribution intelligente de filament : attribuer un filament à plusieurs buses pour maximiser les économies" # AI Translated -msgid "Fila Saving" -msgstr "Économie de filament" +msgid "File Saving" +msgstr "Enregistrement du fichier" msgid "Don't remind me again" msgstr "Ne plus me rappeler" @@ -20577,6 +20786,15 @@ msgstr "Cette action ne peut pas être annulée. Continuer ?" msgid "Skipping objects." msgstr "Ignorer des objets." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Sélectionner le filament" @@ -20656,6 +20874,9 @@ msgstr "Redémarrer maintenant" msgid "NO RAMMING AT ALL" msgstr "AUCUN BOURRAGE" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Vitesse volumétrique" @@ -21278,6 +21499,39 @@ msgstr "" "Éviter la déformation\n" "Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "L’aperçu en direct natif sous Wayland nécessite le récepteur vidéo GStreamer GTK. Veuillez installer le plugin gtksink pour GStreamer, puis redémarrer OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Échec de l’initialisation du récepteur vidéo GStreamer natif sous Wayland. Veuillez vérifier l’installation de votre plugin GStreamer GTK." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Windows Media Player est nécessaire pour cette tâche ! Voulez-vous activer ‘Windows Media Player’ pour votre système d’exploitation ?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource n’a pas été correctement enregistré pour la lecture de médias ! Appuyez sur Oui pour le réenregistrer. Vous recevrez deux fois la demande de permission" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Composant BambuSource manquant pour la lecture multimédia ! Veuillez réinstaller OrcaSlicer ou demander de l'aide à la communauté." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Si vous utilisez une BambuSource provenant d’une autre installation, la lecture de la vidéo peut ne pas fonctionner correctement ! Appuyez sur Oui pour résoudre le problème." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Il manque à votre système les codecs H.264 pour GStreamer, qui sont nécessaires pour lire la vidéo. (Essayez d’installer les paquets gstreamer1.0-plugins-bad ou gstreamer1.0-libav, puis redémarrez Orca Slicer)." + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Économie de filament" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" @@ -22161,8 +22415,8 @@ msgstr "" #~ msgid "The 3mf has the following customized filament or printer presets:" #~ msgstr "Le 3mf dispose de filaments personnalisés ou de préréglages d'imprimante :" -#~ msgid "Name of components inside step file is not UTF8 format!" -#~ msgstr "Le nom des composants à l'intérieur du fichier .step n'est pas au format UTF8 !" +#~ msgid "Name of components inside step file is not UTF-8 format!" +#~ msgstr "Le nom des composants à l'intérieur du fichier .step n'est pas au format UTF-8 !" #~ msgid "Should printer/filament/process settings be loaded when opening a .3mf?" #~ msgstr "Les paramètres de l’imprimante/du filament/du processus doivent-ils être chargés lors de l’ouverture d’un fichier .3mf ?" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 9f8a849884..2c00949e15 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2948,6 +2948,10 @@ msgstr "Szerkesztés" msgid "Merge with" msgstr "Egyesítés ezzel" +# AI Translated +msgid "Decompose Color" +msgstr "Szín szétbontása" + msgid "Delete this filament" msgstr "Filament törlése" @@ -3247,6 +3251,10 @@ msgstr "Összeállítás" msgid "Merge parts to an object" msgstr "Tárgyak egyesítése egy objektummá" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "A változó rétegmagasság és a kevert színű alréteg együttes használata ronthatja a színkeverés minőségét." + # AI Translated msgid "Add layers" msgstr "Rétegek hozzáadása" @@ -4803,7 +4811,7 @@ msgstr "" "\n" "Az érték 0-ra áll vissza." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "A váltakozó extra fal nem működik jól, ha a függőleges héjvastagság biztosítása \"Mind\" értékre van állítva." msgid "" @@ -4849,7 +4857,7 @@ msgstr "" "NEM - Független támasz rétegmagasság megtartása" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "A seam_slope_start_height értékének kisebbnek kell lennie, mint a layer_height.\n" @@ -4857,7 +4865,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "A rögzítési mélységnek kisebbnek kell lennie, mint a felületi réteg mélysége.\n" @@ -4897,6 +4905,10 @@ msgstr "" "Igen - Módosítsd ezeket a beállításokat, és automatikusan kapcsold be a spirál módot\n" "Nem - Most ne kapcsold be a spirál módot" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Nyomtatás" @@ -5356,10 +5368,6 @@ msgstr "Érvénytelen minta. Használj N, N#K formátumot, vagy vesszővel elvá msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Rendszerügynökök" @@ -6317,16 +6325,22 @@ msgstr "Projekt mentése másként" msgid "Save current project as" msgstr "Jelenlegi projekt mentése másként" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Modell betöltése" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Zip archívum importálása" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Zip archívumban található modellek betöltése" msgid "Import Configs" @@ -7847,6 +7861,10 @@ msgstr "Aktuális tálca testreszabása" msgid "The %s nozzle can not print %s." msgstr "A(z) %s fúvóka nem tudja nyomtatni ezt: %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "A kevert színű filament nyomtatása egyextruderes nyomtatón gyakori filamentcserét és öblítést igényel, ami jelentősen növelheti a hulladék mennyiségét, valamint a fúvóka vagy a hulladékcsúszda eltömődésének kockázatát." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "A(z) %1% és %2% keverése nyomtatás közben nem ajánlott.\n" @@ -7972,12 +7990,44 @@ msgstr "Filamentlista szinkronizálása az AMS-ből" msgid "Set filaments to use" msgstr "Használni kívánt filament beállítása" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Kevert filament hozzáadása" + +# AI Translated +msgid "Mixed Filament" +msgstr "Kevert filament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Utolsó kevert filament eltávolítása" + +# AI Translated +msgid "Add mixed filament" +msgstr "Kevert filament hozzáadása" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "A kevert filament érvénytelen vagy nem egyező összetevőket tartalmaz. Szerkessze újra az érintett bejegyzéseket." + msgid "Search plate, object and part." msgstr "Tálca, objektum és tárgy keresése." msgid "Pellets" msgstr "Pelletek" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "A kevert filament hibás összetevő-hivatkozásokat tartalmaz" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Szerkesztés / Törlés / Egyesítés" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "A cél kevert filament ezt a fizikai filamentet használja összetevőként. Az egyesítés eltávolítja ezt a fizikai filamentet, és a kevert filament érvénytelenné válhat. Folytatja?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "A művelet befejezésekor a(z) %s projekt bezárul, majd új projekt jön létre." @@ -8115,7 +8165,13 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k msgid "Customized Preset" msgstr "Egyedi beállítás" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!" # AI Translated @@ -8139,10 +8195,10 @@ msgstr "Az objektum térfogata nulla" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "A(z) %s fájlból származó objektum túl kicsi, lehet, hogy méterben vagy hüvelykben lett létrehozva.\n" -" Szeretnéd milliméterre méretezni?" +"Szeretnéd milliméterre méretezni?" msgid "Object too small" msgstr "Objektum túl kicsi" @@ -8160,6 +8216,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Több részből álló objektum észlelve" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Textúrák hozzárendelése a filamentekhez" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Textúraimportálási figyelmeztetés" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Betöltöd ezeket a fájlokat több részből álló egyetlen objektumként?\n" @@ -8371,6 +8435,22 @@ msgstr "" msgid "Sync now" msgstr "Szinkronizálás most" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "A textúra importálása sikertelen. Úgy tűnik, hogy a modell textúraadatokat tartalmaz, de az importálási folyamatot nem sikerült befejezni. A modell csak geometriaként lesz importálva." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Textúraszínek alkalmazása..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D nézet frissítése..." + +# AI Translated +msgid "Texture colors applied." +msgstr "A textúraszínek alkalmazva." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Megtarthatod az új projekt módosított beállításait, vagy elvetheted őket" @@ -8503,6 +8583,17 @@ msgstr "Szeletelt fájl mentése mint:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Közzététel" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra." @@ -9633,6 +9724,10 @@ msgstr "Spirál (váza)" msgid "First layer filament sequence" msgstr "Kezdőréteg filament sorrendje" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "A filamentlista kevert filamenteket tartalmaz. Az egyéni filamentsorrend nem lép érvénybe." + # AI Translated msgid "By Layer" msgstr "Rétegenként" @@ -9664,9 +9759,6 @@ msgstr "Ugrás a modell közzététele weboldalra" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Megjegyzés: Az előkészítés több percig is eltarthat. Kérlek, várj." -msgid "Publish" -msgstr "Közzététel" - msgid "Publish was canceled" msgstr "A közzététel törlésre került" @@ -9682,6 +9774,64 @@ msgstr "Adatok feltöltése" msgid "Jump to webpage" msgstr "Ugrás a weboldalra" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s mentése" @@ -11030,12 +11180,12 @@ msgid "No modifications need to be copied." msgstr "Nincs másolandó módosítás." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Paraméterek másolása" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "A(z) %s paramétereinek módosítása" # AI Translated @@ -11552,27 +11702,6 @@ msgstr "Filamentcsere öblítési mennyisége" msgid "Please choose the filament colour" msgstr "Kérlek, válaszd ki a filament színét" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Nem sikerült inicializálni a natív Wayland GStreamer videonyelőt. Ellenőrizd a GStreamer GTK bővítmény telepítését." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Ehhez a művelethez Windows Media Player szükséges. Szeretnéd engedélyezni a \"Windows Media Player\"-t az operációs rendszerben?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "A BambuSource nincs megfelelően regisztrálva médialejátszáshoz. Kattints az Igen gombra az újbóli regisztráláshoz. Kétszer kapsz majd megerősítési kérést." - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "A médialejátszáshoz szükséges BambuSource-összetevő hiányzik. Kérlek, telepítsd újra az OrcaSlicert, vagy kérj segítséget a közösségtől." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Ha egy másik telepítésből származó BambuSource van használatban, előfordulhat, hogy a videólejátszás nem működik megfelelően. Kattints az Igen gombra a javításhoz." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "A rendszerből hiányoznak a GStreamer H.264 kodekjei, amelyek szükségesek a videolejátszáshoz. (Próbáld telepíteni a gstreamer1.0-plugins-bad vagy a gstreamer1.0-libav csomagokat, majd indítsd újra az Orca Slicert.)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "A felhőszolgáltatás nem érhető el. Indítsd újra az OrcaSlicert, majd próbáld újra." @@ -12282,6 +12411,10 @@ msgstr "Ha továbbra is szeretnél nyomtatni, engedélyezheted az opciót itt: B msgid "No extrusions under current settings." msgstr "A jelenlegi beállításokkal nincsenek extrudálások." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Színátmenetes kevert filament van használatban, de a 'Kevert színű alréteg' ki van kapcsolva. A színátmenet nem lesz kinyomtatva." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "A sima Timelapse nem használható, ha a nyomtatási sorrend \"Tárgyanként\"." @@ -12318,6 +12451,10 @@ msgstr "Próbáld meg csökkenteni a modell méretét vagy módosítani a jelenl msgid "Variable layer height is not supported with Organic supports." msgstr "A változó rétegmagasság nem működik az organikus támaszokkal." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "A törlőtorony filamentje nem lehet kevert filament." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Eltérő fúvókaátmérők és eltérő filamentátmérők mellett a törlőtorony nem biztos, hogy megfelelően működik. Ez nagyon kísérleti funkció, ezért körültekintően használd." @@ -12685,7 +12822,7 @@ msgstr "mm vagy %" msgid "Other layers" msgstr "Többi réteg" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "A kezdőréteg utáni asztalhőmérséklet. A 0 azt jelenti, hogy a filament nem nyomtatható a SuperTack hűvös tálcára." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14063,6 +14200,8 @@ msgstr "Rétegidő" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "A tárgyhűtő ventilátor azon rétegek esetében lesz engedélyezve, amelyek becsült ideje rövidebb ennél az értéknél. A ventilátor fordulatszáma a rétegnyomtatási időnek megfelelően skálázódik a minimális és maximális ventilátor fordulatszám között" +# AI Translated +msgctxt "second" msgid "s" msgstr "mp" @@ -14370,6 +14509,62 @@ msgstr "Támaszanyag" msgid "Support material is commonly used to print supports and support interfaces." msgstr "A támaszanyagot általában a támaszok és azok érintkező felületeinek nyomtatására használják." +# AI Translated +msgid "Is mixed filament" +msgstr "Kevert filament-e" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Megadja, hogy ez a filamenthely több fizikai filamentből álló kevert filament-e" + +# AI Translated +msgid "Mixed filament components" +msgstr "Kevert filament összetevői" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Az összetevő filamentek vesszővel elválasztott, 1-től induló indexei, pl. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Kevert filament alréteg-arányai" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Vesszővel elválasztott arányértékek, amelyek összege 1.0, pl. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Kevert filament színátmenete" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Bekapcsolja a Z irányú színátmenet módot a kevert filament alrétegeihez. Bekapcsolva az alrétegek arányai lineárisan változnak a rétegek mentén." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Kevert filament színátmenetének tartománya" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Az első összetevő kezdő és záró aránya színátmenet módban. Vesszővel elválasztott számpár, pl. a \"0.10,0.90\" 10%-tól 90%-ig tartót jelent." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Kevert filament színátmenet-görbéje" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Opcionális, Photoshop stílusú egyéni görbe, amely a Z irányú haladást az első összetevő arányához rendeli. Függőleges vonallal elválasztott vezérlőpontokként van kódolva, \"x,y\" (régi) vagy \"x,y,m_in,m_out\" formában, ha az érintő felülbírálására van szükség (üres érték vagy \"nan\" esetén a PCHIP alapértelmezés érvényes). x a [0,1] tartományban van; y a beállított aránytartományra van korlátozva, pl. \"0,0.15|0.5,0.50|1,0.85\". Ha üresen marad, helyette a lineáris gradient_range kerül felhasználásra." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Kevert filament színátmenete tárgyanként" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Ha a színátmenet mód be van kapcsolva, a színátmenet az összeállítás minden tárgyára külön-külön érvényesül, ahelyett hogy az egész összeállítást egyetlen Z tartományként kezelné." + msgid "Filament printable" msgstr "Filament nyomtatható" @@ -15633,6 +15828,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Az Y tengely megengedett maximális kimeneti ereje" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15643,6 +15839,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Az Y tengely gépasztaltömeg-terhelése" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15957,7 +16154,7 @@ msgid "Reduce infill retraction" msgstr "Csökkentett visszahúzás kitöltésnél" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Nem történik visszahúzás, amikor a fej csak kitöltés felett halad el, mert az itt történő szivárgás egyébként sem látható. Ez az opció lerövidítheti a nyomtatási időt a visszahúzások csökkentésével komplex modelleknél, de egyúttal lassabbá teszi a szeletelést és a G-kód generálást. Vedd figyelembe, hogy a Z-emelés sem történik meg azokon a területeken, ahol a visszahúzás ki van hagyva." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16131,7 +16328,7 @@ msgstr "Visszahúzás mértéke törlés után" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "A törlés utáni gyors visszahúzás hossza a visszahúzási hosszhoz viszonyítva.\n" @@ -16178,7 +16375,7 @@ msgstr "Amikor a visszahúzás eszközváltás előtt aktiválódik, a filament msgid "Z-hop height" msgstr "Z-emelés magassága" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Visszahúzáskor a fúvóka egy kicsit megemelkedik, hogy a fúvóka és a nyomtatott tárgy között rés keletkezzen. Ez megakadályozza, hogy a fúvóka nagyobb mozgás közben a tárgynak ütközzön. A Z tengely emelésekor használt körkörös mozgás megelőzheti a szálazást." msgid "Z-hop lower boundary" @@ -17233,6 +17430,14 @@ msgstr "" "\n" "Ha az alábbi \"visszahúzási mennyiség törlés előtt\" beállításban értéket adsz meg, akkor az esetleges többletvisszahúzás a törlés előtt történik meg, különben utána." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Kevert színű alréteg" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Bekapcsolja a kevert színű alrétegekre bontást. Bekapcsolva a kevert színű filamentet tartalmazó rétegek alrétegekre lesznek bontva a színkeverési hatás eléréséhez." + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "A törlőtorony a fúvókán lévő maradék eltávolítására és a fúvóka belsejében lévő nyomás stabilizálására szolgál, hogy elkerülhetők legyenek a megjelenésbeli hibák az objektumok nyomtatásakor." @@ -18306,6 +18511,10 @@ msgstr "A modellfájl hálósítása sikertelen volt, vagy nincs érvényes alak msgid "The supplied file couldn't be read because it's empty." msgstr "A megadott fájl nem olvasható be, mert üres" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "A fájlformátum nem kompatibilis, ezért nem értelmezhető." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Ismeretlen fájlformátum. A bemeneti fájlnak .stl, .obj vagy .amf(.xml) kiterjesztésűnek kell lennie." @@ -19796,19 +20005,19 @@ msgstr "Csak azok a nyomtatók jelennek meg, amelyeknél változtak a nyomtató- msgid "Only display the filament names with changes to filament presets." msgstr "Csak azok a filamentnevek jelennek meg, ahol változtak a filamentbeállítások." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Csak azok a nyomtatónevek jelennek meg, amelyekhez tartoznak felhasználói beállítások. A kiválasztott beállítások ZIP fájlként kerülnek exportálásra." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Csak azok a filamentnevek jelennek meg, amelyekhez tartoznak felhasználói filamentbeállítások,\n" "és a kiválasztott filamentnevekhez tartozó összes felhasználói filamentbeállítás ZIP-fájlként lesz exportálva." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Csak azok a nyomtatónevek jelennek meg, amelyekhez módosított folyamatbeállítások tartoznak,\n" "és a kiválasztott nyomtatónevekhez tartozó összes felhasználói folyamatbeállítás ZIP-fájlként lesz exportálva." @@ -20054,7 +20263,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Információra van szükségünk a probléma forrásának feltárásához. A részletes útmutatót a wiki oldalon találod." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "A Csomagolás gomb egy zip fájlba gyűjti a projektfájlt és az aktuális munkamenet naplóit." # AI Translated @@ -20110,7 +20319,7 @@ msgid "Stored logs" msgstr "Tárolt naplók" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Az összes tárolt naplót egy zip fájlba csomagolja." # AI Translated @@ -20198,7 +20407,7 @@ msgid "Authorizing..." msgstr "Engedélyezés..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Hiba. Nem sikerült API-tokent szerezni az engedélyezéshez" # AI Translated @@ -20654,8 +20863,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Intelligens filament-hozzárendelés bekapcsolása: egy filament több fúvókához rendelése a megtakarítás maximalizálásához" # AI Translated -msgid "Fila Saving" -msgstr "Filamentmegtakarítás" +msgid "File Saving" +msgstr "Fájl mentése" msgid "Don't remind me again" msgstr "Ne emlékeztessen újra" @@ -20979,6 +21188,15 @@ msgstr "Ez a művelet nem vonható vissza. Folytatod?" msgid "Skipping objects." msgstr "Objektumok kihagyása." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Filament kiválasztása" @@ -21058,6 +21276,9 @@ msgstr "Újraindítás most" msgid "NO RAMMING AT ALL" msgstr "EGYÁLTALÁN NINCS TÖMÖRÍTÉS" +msgid "s" +msgstr "mp" + msgid "Volumetric speed" msgstr "Volumetrikus sebesség" @@ -21709,6 +21930,39 @@ msgstr "" "Kunkorodás elkerülése\n" "Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Nem sikerült inicializálni a natív Wayland GStreamer videonyelőt. Ellenőrizd a GStreamer GTK bővítmény telepítését." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Ehhez a művelethez Windows Media Player szükséges. Szeretnéd engedélyezni a \"Windows Media Player\"-t az operációs rendszerben?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "A BambuSource nincs megfelelően regisztrálva médialejátszáshoz. Kattints az Igen gombra az újbóli regisztráláshoz. Kétszer kapsz majd megerősítési kérést." + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "A médialejátszáshoz szükséges BambuSource-összetevő hiányzik. Kérlek, telepítsd újra az OrcaSlicert, vagy kérj segítséget a közösségtől." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Ha egy másik telepítésből származó BambuSource van használatban, előfordulhat, hogy a videólejátszás nem működik megfelelően. Kattints az Igen gombra a javításhoz." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "A rendszerből hiányoznak a GStreamer H.264 kodekjei, amelyek szükségesek a videolejátszáshoz. (Próbáld telepíteni a gstreamer1.0-plugins-bad vagy a gstreamer1.0-libav csomagokat, majd indítsd újra az Orca Slicert.)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Filamentmegtakarítás" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index bc36e08d25..1aa2f15701 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2953,6 +2953,10 @@ msgstr "Modifica" msgid "Merge with" msgstr "Unisci con" +# AI Translated +msgid "Decompose Color" +msgstr "Scomponi colore" + msgid "Delete this filament" msgstr "Elimina questo filamento" @@ -3252,6 +3256,10 @@ msgstr "Assemblaggio" msgid "Merge parts to an object" msgstr "Unisci parti in un oggetto" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "L'uso dell'altezza strato variabile insieme al sottostrato di colore misto può ridurre la qualità della miscelazione dei colori." + # AI Translated msgid "Add layers" msgstr "Aggiungi strati" @@ -4805,7 +4813,7 @@ msgstr "" "\n" "Il valore verrà reimpostato a 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Parete aggiuntiva alternativa non funziona bene quando \"Garantisci spessore verticale del guscio\" è impostato su Tutto." msgid "" @@ -4851,7 +4859,7 @@ msgstr "" "NO - Mantieni Altezza strato di supporto indipendente" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height deve essere inferiore a layer_height.\n" @@ -4859,7 +4867,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "La profondità di intersezione deve essere inferiore alla profondità della pelle.\n" @@ -4899,6 +4907,9 @@ msgstr "" "Sì - Modifica queste impostazioni ed abilita la modalità spirale automaticamente\n" "No - Annulla l'attivazione della modalità a spirale" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Stampa" @@ -5358,9 +5369,6 @@ msgstr "Schema non valido. Utilizzare N, N#K o un elenco separato da virgole con msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agenti di sistema" @@ -6319,16 +6327,22 @@ msgstr "Salva progetto con nome" msgid "Save current project as" msgstr "Salva progetto corrente con nome" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Carica modello" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importa archivio Zip" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Carica i modelli contenuti in un archivio zip" msgid "Import Configs" @@ -7851,6 +7865,10 @@ msgstr "Personalizza il piatto corrente" msgid "The %s nozzle can not print %s." msgstr "L'ugello %s non può stampare %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "La stampa di filamento a colore misto su una stampante a estrusore singolo richiede frequenti cambi di filamento e spurghi, il che può aumentare notevolmente gli scarti e il rischio di intasamento dell'ugello o dello scivolo di scarto." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Non è consigliato miscelare %1% con %2% nella stampa.\n" @@ -7976,12 +7994,44 @@ msgstr "Sincronizza l'elenco filamenti dall'AMS" msgid "Set filaments to use" msgstr "Imposta filamenti da usare" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Aggiungi filamento misto" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filamento misto" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Rimuovi l'ultimo filamento misto" + +# AI Translated +msgid "Add mixed filament" +msgstr "Aggiungi filamento misto" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Il filamento misto ha componenti non validi o incoerenti. Modificare nuovamente le voci interessate." + msgid "Search plate, object and part." msgstr "Cerca piatto, oggetto e parte." msgid "Pellets" msgstr "Granuli" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Il filamento misto ha riferimenti a componenti non validi" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Modifica / Elimina / Unisci" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Il filamento misto di destinazione utilizza questo filamento fisico come componente. L'unione rimuoverà questo filamento fisico e potrebbe invalidare il filamento misto. Continuare?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Al completamento dell'operazione, il progetto %s verrà chiuso e ne verrà creato uno nuovo." @@ -8119,8 +8169,14 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s msgid "Customized Preset" msgstr "Profilo personalizzato" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF8!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "A causa di una codifica del testo non supportata, potrebbero apparire caratteri inutili!" @@ -8141,10 +8197,10 @@ msgstr "Il volume dell'oggetto è zero" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "L'oggetto del file %s è troppo piccolo e può essere in metri o pollici.\n" -" Si desidera scalare in millimetri?" +"Si desidera scalare in millimetri?" msgid "Object too small" msgstr "Oggetto troppo piccolo" @@ -8161,6 +8217,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Rilevato oggetto in più parti" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Associazione delle trame ai filamenti" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Avviso di importazione trama" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Caricare questi file come un singolo oggetto con più parti?\n" @@ -8371,6 +8435,22 @@ msgstr "" msgid "Sync now" msgstr "Sincronizza ora" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Importazione della trama non riuscita. Il modello sembra contenere dati di trama, ma non è stato possibile completare il processo di importazione. Il modello verrà importato solo come geometria." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Applicazione dei colori della trama..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Aggiornamento della vista 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Colori della trama applicati." + msgid "You can keep the modified presets for the new project or discard them" msgstr "È possibile conservare i profili modificati per il nuovo progetto o scartarli" @@ -8502,6 +8582,17 @@ msgstr "Salva file elaborato con nome:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Pubblica" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare." @@ -9654,6 +9745,10 @@ msgstr "Vaso a spirale" msgid "First layer filament sequence" msgstr "Sequenza filamenti primo strato" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "L'elenco dei filamenti contiene filamenti misti. La sequenza di filamenti personalizzata non avrà effetto." + msgid "By Layer" msgstr "Per strato" @@ -9682,9 +9777,6 @@ msgstr "Vai alla pagina web di pubblicazione del modello" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza." -msgid "Publish" -msgstr "Pubblica" - msgid "Publish was canceled" msgstr "La pubblicazione è stata annullata" @@ -9700,6 +9792,64 @@ msgstr "Caricamento dati" msgid "Jump to webpage" msgstr "Vai alla pagina web" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salva %s con nome" @@ -11044,12 +11194,12 @@ msgid "No modifications need to be copied." msgstr "Non è necessario copiare alcuna modifica." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Copia parametri" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modifica i parametri di %s" # AI Translated @@ -11571,27 +11721,6 @@ msgstr "Volumi di spurgo per cambio filamento" msgid "Please choose the filament colour" msgstr "Scegliere il colore del filamento" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. Verificare l'installazione del modulo GTK di GStreamer." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Per questa operazione è necessario Windows Media Player! Desideri abilitare 'Windows Media Player' sul il tuo sistema operativo?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource non è stato registrato correttamente per la riproduzione multimediale! Fare clic su Sì per effettuare nuovamente la registrazione. Sarai promosso due volte" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Componente BambuSource mancante per la riproduzione multimediale! Reinstallare OrcaSlicer o cercare aiuto nella comunità." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "È in uso una versione di BambuSource da un'installazione diversa. La riproduzione video potrebbe non funzionare correttamente! Fare clic su Sì per risolvere il problema." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Nel tuo sistema mancano i codec H.264 per GStreamer, necessari per riprodurre i video. (Provare a installare i pacchetti gstreamer1.0-plugins-bad o gstreamer1.0-libav e riavviare OrcaSlicer?)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Il fornitore di servizi cloud non è disponibile. Riavviare OrcaSlicer e riprovare." @@ -12303,6 +12432,10 @@ msgstr "Se desideri comunque stampare, puoi abilitare l'opzione in Preferenze / msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "È in uso un filamento misto con gradiente, ma 'Sottostrato di colore misto' è disattivato. Il gradiente non verrà stampato." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "La modalità fluida del timelapse non è supportata quando è abilitata la sequenza \"Per oggetto\"." @@ -12339,6 +12472,10 @@ msgstr "È possibile ridurre le dimensioni del modello o modificare le impostazi msgid "Variable layer height is not supported with Organic supports." msgstr "Altezza strato adattiva non è compatibile con i Supporti organici." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Il filamento della torre di spurgo non può essere un filamento misto." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Ugelli e filamenti di diverso diametro potrebbero non funzionare correttamente quando è abilitata la torre di spurgo. Questa funzione è sperimentale, quindi procedere con cautela." @@ -12705,8 +12842,8 @@ msgstr "mm o %" msgid "Other layers" msgstr "Altri strati" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." -msgstr "Temperatura del piatto per gli strati diversi dal primo. Un valore di 0 significa che il filamento non supporta la stampa su Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgstr "Indica la temperatura del piatto per tutti gli strati eccetto il primo. Un valore di 0 significa che il filamento non supporta la stampa su Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Indica la temperatura del piatto per tutti gli strati eccetto il primo. Un valore pari a 0 indica che il filamento non supporta la stampa su Piatto a bassa temperatura." @@ -14082,6 +14219,8 @@ msgstr "Durata strato" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "La ventola di raffreddamento verrà attivata per gli strati in cui il tempo stimato è inferiore a questo valore. La velocità della ventola varierà tra la velocità minima e massima in base alla durata stimata di stampa dello strato." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14388,6 +14527,62 @@ msgstr "Materiale di supporto" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Il materiale di supporto viene comunemente utilizzato per stampare supporti e interfacce di supporto." +# AI Translated +msgid "Is mixed filament" +msgstr "È filamento misto" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Indica se questo slot di filamento è un filamento misto composto da più filamenti fisici" + +# AI Translated +msgid "Mixed filament components" +msgstr "Componenti del filamento misto" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Indici (a partire da 1) dei filamenti componenti, separati da virgole; es. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Proporzioni dei sottostrati del filamento misto" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Valori di proporzione separati da virgole la cui somma sia 1.0; es. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradiente del filamento misto" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Attiva la modalità gradiente in direzione Z per i sottostrati del filamento misto. Se attivata, le proporzioni dei sottostrati variano linearmente tra gli strati." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Intervallo del gradiente del filamento misto" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Proporzioni iniziale e finale del primo componente in modalità gradiente. Coppia separata da virgola; es. \"0.10,0.90\" significa dal 10% al 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Curva del gradiente del filamento misto" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Curva personalizzata opzionale, in stile Photoshop, che mappa l'avanzamento in Z sulla proporzione del primo componente. Codificata come punti di controllo separati da barre verticali, nel formato \"x,y\" (legacy) oppure \"x,y,m_in,m_out\" quando è necessario forzare la tangente (un valore vuoto o \"nan\" usa il valore PCHIP predefinito). x è compreso in [0,1]; y viene limitato all'intervallo di proporzioni configurato; es. \"0,0.15|0.5,0.50|1,0.85\". Se vuoto, viene usato il gradient_range lineare." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradiente per parte del filamento misto" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Quando la modalità gradiente è attiva, applica il gradiente a ciascuna parte di un assemblaggio in modo indipendente anziché trattare l'intero assemblaggio come un unico intervallo Z." + msgid "Filament printable" msgstr "Filamento stampabile" @@ -15655,6 +15850,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "La forza di uscita massima consentita dell'asse Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15665,6 +15861,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Il carico di massa del piano della macchina sull'asse Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15976,7 +16173,7 @@ msgid "Reduce infill retraction" msgstr "Evita retrazione nel riempimento" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Non ritrarre quando gli spostamenti si trovano interamente in un'area di riempimento. Ciò significa che il trasudo del materiale non è visibile. Questo può ridurre i tempi di retrazione per i modelli complessi e far risparmiare tempo di stampa, ma rende più lente l'elaborazione e la generazione del G-code. Nota che anche il sollevamento Z non viene eseguito nelle aree in cui la retrazione viene saltata." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16150,7 +16347,7 @@ msgstr "Quantità di retrazione dopo la pulizia" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "La lunghezza della retrazione rapida dopo la pulizia, relativa alla lunghezza di retrazione.\n" @@ -16197,7 +16394,7 @@ msgstr "Quando la retrazione viene attivata prima di un cambio testina, il filam msgid "Z-hop height" msgstr "Altezza sollevamento Z" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Ogni volta che si verifica una retrazione, l'ugello viene sollevato leggermente per creare spazio tra ugello e stampa. Ciò impedisce all'ugello di colpire la stampa negli spostamenti. L'uso di linee a spirale per il sollevamento sull'asse Z può evitare gli sfilacciamenti sulla stampa." msgid "Z-hop lower boundary" @@ -17258,6 +17455,14 @@ msgstr "" "\n" "Impostando un valore di quantità di retrazione prima dell'impostazione di spurgo di seguito, verra eseguita qualsiasi retrazione in eccesso prima dello spurgo. Altrimenti verrà eseguita dopo." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Sottostrato di colore misto" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Attiva la suddivisione in sottostrati di colore misto. Se attivata, gli strati che contengono filamenti a colore misto vengono suddivisi in sottostrati per ottenere effetti di miscelazione dei colori." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La torre di spurgo può essere utilizzata per pulire i residui presenti sull'ugello e stabilizzare la pressione della camera all'interno dell'ugello, al fine di evitare difetti estetici durante la stampa." @@ -18329,6 +18534,10 @@ msgstr "La generazione della mesh del file del modello è fallita o la forma non msgid "The supplied file couldn't be read because it's empty." msgstr "Impossibile leggere il file fornito perché è vuoto" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Il formato del file non è compatibile e non può essere interpretato." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato file sconosciuto: il file di input deve avere un'estensione .stl, .obj o .amf(.xml)." @@ -19813,21 +20022,21 @@ msgstr "Vengono visualizzate solo le stampanti con modifiche ai profili di stamp msgid "Only display the filament names with changes to filament presets." msgstr "Nomi dei filamenti con modifiche ai profili di filamento." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "" "Nomi delle stampanti con profili creati dell'utente.\n" "Tutti i profili selezionati saranno esportati come file zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Nomi dei filamenti con profili creati dell'utente.\n" "Tutti i profili selezionati saranno esportati come file zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Nomi delle stampanti con profili di processo modificati.\n" "Tutti i profili selezionati saranno esportati come file zip." @@ -20072,7 +20281,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Abbiamo bisogno di informazioni per diagnosticare l'origine del problema. Consulta la pagina wiki per una guida dettagliata." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Il pulsante Comprimi raccoglie il file di progetto e i log della sessione corrente in un file zip." # AI Translated @@ -20128,7 +20337,7 @@ msgid "Stored logs" msgstr "Log memorizzati" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Comprime tutti i log memorizzati in un file zip." # AI Translated @@ -20216,7 +20425,7 @@ msgid "Authorizing..." msgstr "Autorizzazione in corso..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Errore. Impossibile ottenere il token API per l'autorizzazione" # AI Translated @@ -20672,8 +20881,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Abilita l'assegnazione intelligente del filamento: assegna un filamento a più ugelli per massimizzare il risparmio" # AI Translated -msgid "Fila Saving" -msgstr "Risparmio filamento" +msgid "File Saving" +msgstr "Salvataggio file" msgid "Don't remind me again" msgstr "Non ricordarmelo più" @@ -21003,6 +21212,15 @@ msgstr "Questa azione non può essere annullata. Continuare?" msgid "Skipping objects." msgstr "Salto degli oggetti." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Seleziona filamento" @@ -21082,6 +21300,9 @@ msgstr "Riavvia ora" msgid "NO RAMMING AT ALL" msgstr "NESSUNA SPINTA" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Velocità volumetrica" @@ -21733,6 +21954,39 @@ msgstr "" "Evita le deformazioni\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. Verificare l'installazione del modulo GTK di GStreamer." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Per questa operazione è necessario Windows Media Player! Desideri abilitare 'Windows Media Player' sul il tuo sistema operativo?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource non è stato registrato correttamente per la riproduzione multimediale! Fare clic su Sì per effettuare nuovamente la registrazione. Sarai promosso due volte" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Componente BambuSource mancante per la riproduzione multimediale! Reinstallare OrcaSlicer o cercare aiuto nella comunità." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "È in uso una versione di BambuSource da un'installazione diversa. La riproduzione video potrebbe non funzionare correttamente! Fare clic su Sì per risolvere il problema." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Nel tuo sistema mancano i codec H.264 per GStreamer, necessari per riprodurre i video. (Provare a installare i pacchetti gstreamer1.0-plugins-bad o gstreamer1.0-libav e riavviare OrcaSlicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Risparmio filamento" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 1b70ddbf67..9067928361 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2969,6 +2969,10 @@ msgstr "編集" msgid "Merge with" msgstr "結合" +# AI Translated +msgid "Decompose Color" +msgstr "色を分解" + msgid "Delete this filament" msgstr "このフィラメントを削除" @@ -3266,6 +3270,10 @@ msgstr "アセンブリ" msgid "Merge parts to an object" msgstr "パーツをオブジェクトに結合" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "可変積層ピッチと混色サブレイヤーを併用すると、混色の品質が低下する場合があります。" + # AI Translated msgid "Add layers" msgstr "積層を追加" @@ -4818,7 +4826,7 @@ msgstr "" "\n" "値は0にリセットされます。" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "垂直シェル厚さを「すべて」に設定すると、交互追加壁が適切に機能しません。" msgid "" @@ -4864,7 +4872,7 @@ msgstr "" "いいえ - 「独立サポート積層ピッチ」を有効にする" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_heightはlayer_heightより小さくする必要があります。\n" @@ -4872,7 +4880,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "ロック深さはスキン深さより小さくする必要があります。\n" @@ -4912,6 +4920,10 @@ msgstr "" "はい - 変更して、スパイラルモードを有効にします\n" "いいえ - 変更せず、スパイラルモードを有効しません" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "造形中" @@ -5370,10 +5382,6 @@ msgstr "無効なパターンです。N、N#K、またはオプション#K付き msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無効なフォーマット、%1%であるはずです。" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "システムエージェント" @@ -6328,16 +6336,22 @@ msgstr "プロジェクトを名前を付けて保存" msgid "Save current project as" msgstr "プロジェクトを名前を付けて保存" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMFをインポート" msgid "Load a model" msgstr "モデルを読み込む" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "ZIPアーカイブをインポート" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "ZIPアーカイブ内のモデルをロード" msgid "Import Configs" @@ -7859,6 +7873,10 @@ msgstr "現在のプレートをカスタマイズ" msgid "The %s nozzle can not print %s." msgstr "%sノズルは%sを印刷できません。" +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "単一押出機のプリンターで混色フィラメントを印刷すると、フィラメント交換とフラッシュが頻繁に発生し、廃材やノズル/廃棄シュートの詰まりのリスクが大幅に増加する可能性があります。" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "%1%と%2%を混合して印刷することは推奨されません。\n" @@ -7984,12 +8002,44 @@ msgstr "AMSと素材を同期" msgid "Set filaments to use" msgstr "フィラメントを選択" +# AI Translated +msgid "Add Mixed Filament" +msgstr "混合フィラメントを追加" + +# AI Translated +msgid "Mixed Filament" +msgstr "混合フィラメント" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "最後の混合フィラメントを削除" + +# AI Translated +msgid "Add mixed filament" +msgstr "混合フィラメントを追加" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "混合フィラメントのコンポーネントが無効か一致していません。該当する項目を編集し直してください。" + msgid "Search plate, object and part." msgstr "プレート、オブジェクト、パーツを検索。" msgid "Pellets" msgstr "ペレット" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "混合フィラメントのコンポーネント参照が壊れています" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "編集 / 削除 / 結合" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "対象の混合フィラメントはこの物理フィラメントをコンポーネントとして使用しています。結合するとこの物理フィラメントは削除され、混合フィラメントが無効になる可能性があります。続行しますか?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "操作完了後、%sプロジェクトが閉じられ、新しいプロジェクトが作成されます。" @@ -8133,8 +8183,14 @@ msgstr "これらのプリセット内のG-codeがマシンに損傷を与えな msgid "Customized Preset" msgstr "カスタマイズされたプリセット" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "ファイルのエンコーディング方式はUTF8形式ではありません" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "ファイルのエンコーディング方式はUTF-8形式ではありません" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "文字化けがあるようです、ご確認ください" @@ -8155,7 +8211,7 @@ msgstr "オブジェクトの体積が0です" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "ファイル %s 中のオブジェクトが小さいすぎます、ファイルの単位をご確認ください。\n" "mm単位に変換しますか?" @@ -8176,6 +8232,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "マルチパーツ検出" +# AI Translated +msgid "Matching textures to filaments" +msgstr "テクスチャをフィラメントに対応付けています" + +# AI Translated +msgid "Texture Import Warning" +msgstr "テクスチャインポートの警告" + msgid "Load these files as a single object with multiple parts?\n" msgstr "これらのファイルを一つのオブジェクトとしてロードしますか?\n" @@ -8389,6 +8453,22 @@ msgstr "" msgid "Sync now" msgstr "今すぐ同期" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "テクスチャのインポートに失敗しました。モデルにテクスチャデータが含まれているようですが、インポート処理を完了できませんでした。モデルはジオメトリのみとしてインポートされます。" + +# AI Translated +msgid "Applying texture colors..." +msgstr "テクスチャの色を適用しています..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3Dビューを更新しています..." + +# AI Translated +msgid "Texture colors applied." +msgstr "テクスチャの色を適用しました。" + msgid "You can keep the modified presets for the new project or discard them" msgstr "変更したプリセットをプロジェクト内に保存するか、破棄もできます" @@ -8521,6 +8601,17 @@ msgstr "名前を付けて保存:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%sを送信しました、プリンターにて確認できます" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "公開する" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ノズルタイプが設定されていません。ノズルを設定して再試行してください。" @@ -9676,6 +9767,10 @@ msgstr "スパイラル" msgid "First layer filament sequence" msgstr "初期レイヤーフィラメント順序" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "フィラメントリストに混合フィラメントが含まれています。カスタムフィラメント順序は適用されません。" + msgid "By Layer" msgstr "レイヤー別" @@ -9704,9 +9799,6 @@ msgstr "モデル公開ページに移動" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "注意: 準備するには数分かかる場合があります、暫くお待ち下さい。" -msgid "Publish" -msgstr "公開する" - msgid "Publish was canceled" msgstr "公開は取り消しました" @@ -9722,6 +9814,64 @@ msgstr "データをアップロード中" msgid "Jump to webpage" msgstr "ウェブページに移動" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%sを名前つけて保存" @@ -10617,7 +10767,7 @@ msgid "Junction Deviation" msgstr "接合偏差" msgid "Jerk(XY)" -msgstr "ジャーク(XY)" +msgstr "Jerk(XY)" msgid "Raft" msgstr "ラフト" @@ -10914,7 +11064,7 @@ msgid "Acceleration limitation" msgstr "加速制限" msgid "Jerk limitation" -msgstr "振動特性" +msgstr "Jerk制限" msgid "Single extruder multi-material setup" msgstr "シングルエクストルーダー マルチマテリアル設定" @@ -11068,12 +11218,12 @@ msgid "No modifications need to be copied." msgstr "コピーが必要な変更はありません。" # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "パラメータをコピー" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "%sのパラメータを変更" # AI Translated @@ -11591,33 +11741,6 @@ msgstr "フィラメントを入替える為のフラッシュ量" msgid "Please choose the filament colour" msgstr "フィラメントの色を選択してください" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "ネイティブWaylandのライブビューにはGStreamer GTKビデオシンクが必要です。GStreamer用のgtksinkプラグインをインストールし、OrcaSlicerを再起動してください。" - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "ネイティブWaylandのGStreamerビデオシンクの初期化に失敗しました。GStreamer GTKプラグインのインストール状況をご確認ください。" - -# AI Translated -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "このタスクにはWindows Media Playerが必要です!お使いのOSで「Windows Media Player」を有効にしますか?" - -# AI Translated -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "メディア再生用のBambuSourceが正しく登録されていません!「はい」を押して再登録してください。確認が2回表示されます" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "メディア再生用のBambuSourceコンポーネントが見つかりません!OrcaSlicerを再インストールするかコミュニティに助けを求めてください。" - -# AI Translated -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "別のインストール環境のBambuSourceを使用しているため、動画が正しく再生されない可能性があります!「はい」を押して修正してください。" - -# AI Translated -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "お使いのシステムには、動画再生に必要なGStreamer用のH.264コーデックがありません。(gstreamer1.0-plugins-badまたはgstreamer1.0-libavパッケージをインストールし、Orca Slicerを再起動してみてください)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "クラウドエージェントが利用できません。OrcaSlicerを再起動して再試行してください。" @@ -12343,6 +12466,10 @@ msgstr "それでも印刷する場合は、環境設定 / 制御 / スライス msgid "No extrusions under current settings." msgstr "現在の設定では造形しません" +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "グラデーション付きの混合フィラメントが使用されていますが、「混色サブレイヤー」が無効です。グラデーションは印刷されません。" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "オブジェクト順で造形するでは、この機能を使用できません。" @@ -12379,6 +12506,10 @@ msgstr "モデルのサイズを小さくするか、現在のプリント設定 msgid "Variable layer height is not supported with Organic supports." msgstr "可変レイヤー高さはオーガニックサポートではサポートされていません。" +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "ワイプタワーのフィラメントに混合フィラメントは使用できません。" + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "ノズル径やフィラメント径が異なる場合、プライムタワーを有効にすると正しく動作しないことがあります。非常に実験的な機能ですので、慎重にお進みください。" @@ -12485,7 +12616,7 @@ msgid "Plate %d: %s does not support filament %s" msgstr "プレート %d: %s がフィラメント %s を使用できません" msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" -msgstr "ジャーク速度を低く設定しすぎると曲面にアーティファクトが発生する可能性があります" +msgstr "Jerk速度を低く設定しすぎると曲面にアーティファクトが発生する可能性があります" # AI Translated msgid "" @@ -12756,14 +12887,12 @@ msgstr "mm 或は %" msgid "Other layers" msgstr "他の層" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "1層目を除く各層のベッド温度です。0の場合、そのフィラメントはCool Plate SuperTackでの印刷に対応していません。" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "ベッドの温度です(1層目以外)。値が0の場合、フィラメントが常温プレートで使用できないという意味です。" -# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured Cool Plate." msgstr "1層目を除く各層のベッド温度です。0の場合、そのフィラメントはTextured Cool Plateでの印刷に対応していません。" @@ -12774,7 +12903,7 @@ msgid "This is the bed temperature for layers except for the first one. A value msgstr "ベッドの温度です(1層目以外)。値が0の場合、フィラメントが高温プレートで使用できないという意味です。" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured PEI Plate." -msgstr "1層目以外のベッド温度。値が0の場合、フィラメントがPEIプレートをサポートしない意味をします。" +msgstr "1層目を除く各層のベッド温度です。0の場合、そのフィラメントはTextured PEI Plateでの印刷に対応していません。" msgid "First layer" msgstr "1層目" @@ -14200,6 +14329,8 @@ msgstr "積層時間" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "パーツ冷却ファンは、積層造形時間がこの値より短い時に作動します。" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14518,6 +14649,62 @@ msgstr "サポート材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "サポート素材は、サポート又はサポート接触面の造形によく使われます。" +# AI Translated +msgid "Is mixed filament" +msgstr "混合フィラメントかどうか" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "このフィラメントスロットが複数の物理フィラメントで構成される混合フィラメントかどうか" + +# AI Translated +msgid "Mixed filament components" +msgstr "混合フィラメントのコンポーネント" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "構成フィラメントの番号(1 始まり)をカンマ区切りで指定します。例: \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "混合フィラメントのサブレイヤー比率" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "合計が 1.0 になる比率をカンマ区切りで指定します。例: \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "混合フィラメントのグラデーション" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "混合フィラメントのサブレイヤーに対して Z 方向のグラデーションモードを有効にします。有効にすると、サブレイヤーの比率が積層ごとに直線的に変化します。" + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "混合フィラメントのグラデーション範囲" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "グラデーションモードにおける最初のコンポーネントの開始比率と終了比率。カンマ区切りの 2 つの値で指定します。例: \"0.10,0.90\" は 10% から 90% を意味します。" + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "混合フィラメントのグラデーションカーブ" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Z 方向の進行度を最初のコンポーネントの比率に対応付ける、Photoshop 風のカスタムカーブ(省略可)。制御点を縦棒区切りでエンコードし、\"x,y\"(旧形式)または接線を上書きする場合は \"x,y,m_in,m_out\" の形式で指定します(空欄または \"nan\" は PCHIP の既定値を使用します)。x は [0,1] の範囲で、y は設定された比率範囲に制限されます。例: \"0,0.15|0.5,0.50|1,0.85\"。空欄の場合は線形の gradient_range が使用されます。" + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "混合フィラメントのパーツ別グラデーション" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "グラデーションモードが有効な場合、アセンブリ全体を 1 つの Z 範囲として扱うのではなく、アセンブリ内の各パーツに個別にグラデーションを適用します。" + msgid "Filament printable" msgstr "フィラメント印刷可能" @@ -14750,7 +14937,7 @@ msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration. msgstr "Klipperのmax_accel_to_decelが、加速度のこの%%に調整されます。" msgid "Default jerk." -msgstr "デフォルトジャーク。" +msgstr "デフォルトのJerkです。" # AI Translated msgid "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk setting)." @@ -15841,28 +16028,28 @@ msgid "Maximum acceleration of the E axis" msgstr "E軸最大加速度" msgid "Maximum jerk X" -msgstr "最大振動 X" +msgstr "最大Jerk X" msgid "Maximum jerk Y" -msgstr "最大振動 Y" +msgstr "最大Jerk Y" msgid "Maximum jerk Z" -msgstr "最大振動 Z" +msgstr "最大Jerk Z" msgid "Maximum jerk E" -msgstr "最大振動 E" +msgstr "最大Jerk E" msgid "Maximum jerk of the X axis" -msgstr "最大振動 X" +msgstr "X軸最大Jerk" msgid "Maximum jerk of the Y axis" -msgstr "最大振動 Y" +msgstr "Y軸最大Jerk" msgid "Maximum jerk of the Z axis" -msgstr "最大振動 Z" +msgstr "Z軸最大Jerk" msgid "Maximum jerk of the E axis" -msgstr "最大振動 E" +msgstr "E軸最大Jerk" msgid "Maximum Junction Deviation" msgstr "最大接合偏差" @@ -15894,6 +16081,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Y軸の許容最大出力" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15904,6 +16092,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Y軸のマシンベッド質量" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16238,7 +16427,7 @@ msgstr "カッター領域から廃料排出口までの終始点" msgid "Reduce infill retraction" msgstr "インフィルのリトラクション低減" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "インフィル領域内の移動はリトラクションしません。造形時間を節約できます。" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16423,7 +16612,7 @@ msgstr "ワイプ後のリトラクション量" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "ワイプ後の高速リトラクションの長さで、リトラクション長に対する割合です。\n" @@ -16474,7 +16663,7 @@ msgstr "ツール交換の前にリトラクションが行われるとき、指 msgid "Z-hop height" msgstr "Zホップの高さ" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "リトラクション時に、ノズルを少し上げてから移動します。この動作でモデルとの衝突を回避できます。" # AI Translated @@ -17633,6 +17822,14 @@ msgstr "" "\n" "下の「ワイプ前のリトラクション量」設定に値を設定すると、超過分のリトラクションはワイプの前に行われます。それ以外の場合はワイプの後に行われます。" +# AI Translated +msgid "Mixed color sublayer" +msgstr "混色サブレイヤー" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "混色サブレイヤーへの分割を有効にします。有効にすると、混色フィラメントを含む積層がサブレイヤーに分割され、色を混ぜる効果が得られます。" + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "ワイプタワーは、ノズルに残った樹脂を除去し、ノズル内のチャンバー圧力を安定させることで、オブジェクト印刷時の外観不良を防ぐために使用できます。" @@ -18439,10 +18636,10 @@ msgid "Allow 3MF with newer version to be sliced." msgstr "新しいバージョンの3MFのスライスを許可します。" msgid "Current Z-hop" -msgstr "現在のz-hop" +msgstr "現在のZ-hop" msgid "Contains Z-hop present at the beginning of the custom G-code block." -msgstr "カスタムGコードブロックの先頭に存在するz-hopを含む。" +msgstr "カスタムGコードブロックの先頭に存在するZ-hopを含む。" msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back." msgstr "カスタム G コード ブロックの先頭のエクストルーダーのモーターの位置。 カスタム G コードで動かしたとき、PrusaSlicer が制御を取り戻したときにどこから移動したかを認識できるように、この変数に書き込む必要があります。" @@ -18804,6 +19001,10 @@ msgstr "モデルファイルのメッシュ処理に失敗したか、有効な msgid "The supplied file couldn't be read because it's empty." msgstr "提供されたファイルは空であるため読み込めませんでした。" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "ファイル形式に互換性がないため、解析できません。" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "ファイル形式が不明です。入力ファイルの拡張子は .stl、.obj、.amf(.xml)である必要があります。" @@ -20340,19 +20541,19 @@ msgstr "プリンタ、フィラメント、加工プリセットに変更があ msgid "Only display the filament names with changes to filament presets." msgstr "フィラメントプリセットを変更したフィラメント名のみを表示します。" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "ユーザープリンタプリセットを持つプリンタ名のみが表示され、選択した各プリセットがZIPとしてエクスポートされます。" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "ユーザーフィラメントプリセットを含むフィラメント名のみが表示されます、 \n" "選択した各フィラメント名に含まれるすべてのユーザーフィラメントプリセットがZIP形式でエクスポートされます。" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "変更されたプロセスプリセットがあるプリンタ名のみが表示され、選択した各プリンタ名にあるすべてのユーザープロセスプリセットがZIP形式でエクスポートされます。" msgid "Please select at least one printer or filament." @@ -20596,7 +20797,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "問題の原因を特定するために情報が必要です。詳しい手順はWikiページをご覧ください。" # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "「パック」ボタンは、現在のセッションのプロジェクトファイルとログをzipファイルにまとめます。" # AI Translated @@ -20652,7 +20853,7 @@ msgid "Stored logs" msgstr "保存されたログ" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "保存されたすべてのログをzipファイルにまとめます。" # AI Translated @@ -20740,7 +20941,7 @@ msgid "Authorizing..." msgstr "認証中..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "エラー。認証用のAPIトークンを取得できません" # AI Translated @@ -21226,8 +21427,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "スマートフィラメント割り当てを有効にする: 1つのフィラメントを複数のノズルに割り当てて節約を最大化します" # AI Translated -msgid "Fila Saving" -msgstr "フィラ節約" +msgid "File Saving" +msgstr "ファイル保存" msgid "Don't remind me again" msgstr "再度通知しない" @@ -21555,6 +21756,15 @@ msgstr "この操作は元に戻せません。続行しますか?" msgid "Skipping objects." msgstr "オブジェクトをスキップ中。" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "フィラメントを選択" @@ -21634,6 +21844,9 @@ msgstr "今すぐ再起動" msgid "NO RAMMING AT ALL" msgstr "ラミングなし" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "体積速度" @@ -22296,6 +22509,45 @@ msgstr "" "反りを避ける\n" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "ネイティブWaylandのライブビューにはGStreamer GTKビデオシンクが必要です。GStreamer用のgtksinkプラグインをインストールし、OrcaSlicerを再起動してください。" + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "ネイティブWaylandのGStreamerビデオシンクの初期化に失敗しました。GStreamer GTKプラグインのインストール状況をご確認ください。" + +# AI Translated +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "このタスクにはWindows Media Playerが必要です!お使いのOSで「Windows Media Player」を有効にしますか?" + +# AI Translated +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "メディア再生用のBambuSourceが正しく登録されていません!「はい」を押して再登録してください。確認が2回表示されます" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "メディア再生用のBambuSourceコンポーネントが見つかりません!OrcaSlicerを再インストールするかコミュニティに助けを求めてください。" + +# AI Translated +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "別のインストール環境のBambuSourceを使用しているため、動画が正しく再生されない可能性があります!「はい」を押して修正してください。" + +# AI Translated +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "お使いのシステムには、動画再生に必要なGStreamer用のH.264コーデックがありません。(gstreamer1.0-plugins-badまたはgstreamer1.0-libavパッケージをインストールし、Orca Slicerを再起動してみてください)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "フィラ節約" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 767674e525..fef0a09398 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz <crwusiz@gmail.com>\n" "Language-Team: \n" @@ -2970,6 +2970,10 @@ msgstr "편집" msgid "Merge with" msgstr "병합" +# AI Translated +msgid "Decompose Color" +msgstr "색상 분해" + msgid "Delete this filament" msgstr "이 필라멘트 삭제" @@ -3266,6 +3270,10 @@ msgstr "조립" msgid "Merge parts to an object" msgstr "부품을 하나의 객체로 병합" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "가변 레이어 높이를 혼색 서브레이어와 함께 사용하면 색상 혼합 품질이 떨어질 수 있습니다." + # AI Translated msgid "Add layers" msgstr "레이어 추가" @@ -4829,7 +4837,7 @@ msgstr "" "\n" "값이 0으로 재설정됩니다." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "세로 쉘 두께가 모두로 설정된 경우 대체 여분의 벽이 제대로 작동하지 않습니다." msgid "" @@ -4875,7 +4883,7 @@ msgstr "" "아니요 - 독립적 서포트 레이어 높이 유지" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "심_경사_시작_높이는 레이어_높이보다 작아야 합니다.\n" @@ -4883,7 +4891,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "잠금 깊이는 스킨 깊이보다 작아야 합니다.\n" @@ -4923,6 +4931,10 @@ msgstr "" "예 - 이 설정을 변경하고 나선 모드를 자동으로 활성화합니다\n" "아니오 - 이번에는 나선 모드 사용을 포기합니다" +# AI Translated +msgid "N/A" +msgstr "해당 없음" + msgid "Printing" msgstr "출력 중" @@ -5382,10 +5394,6 @@ msgstr "잘못된 패턴입니다. N, N#K 또는 항목당 선택적 #K가 있 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "잘못된 형식입니다. 필요한 벡터 형식: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "해당 없음" - # AI Translated msgid "System agents" msgstr "시스템 에이전트" @@ -6342,16 +6350,22 @@ msgstr "프로젝트 다른 이름으로 저장" msgid "Save current project as" msgstr "현재 프로젝트 다른 이름으로 저장" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF 가져오기" msgid "Load a model" msgstr "모델 불러오기" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "ZIP 압축파일 가져오기" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "ZIP 압축파일에 포함된 모델 로드" msgid "Import Configs" @@ -7871,6 +7885,10 @@ msgstr "사용자 정의 플레이트" msgid "The %s nozzle can not print %s." msgstr "%s 노즐은 %s 을 인쇄할 수 없습니다." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "단일 압출기 프린터에서 혼색 필라멘트를 출력하면 필라멘트 교체와 플러시가 자주 발생하여 낭비되는 재료와 노즐 / 폐기물 슈트 막힘 위험이 크게 늘어날 수 있습니다." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "%1%와 %2% 혼합 출력을 권장하지 않습니다.\n" @@ -7997,12 +8015,44 @@ msgstr "AMS에서 필라멘트 목록 동기화" msgid "Set filaments to use" msgstr "사용할 필라멘트 설정" +# AI Translated +msgid "Add Mixed Filament" +msgstr "혼합 필라멘트 추가" + +# AI Translated +msgid "Mixed Filament" +msgstr "혼합 필라멘트" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "마지막 혼합 필라멘트 제거" + +# AI Translated +msgid "Add mixed filament" +msgstr "혼합 필라멘트 추가" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "혼합 필라멘트의 구성 요소가 잘못되었거나 일치하지 않습니다. 해당 항목을 다시 편집하세요." + msgid "Search plate, object and part." msgstr "플레이트, 객체 및 부품을 검색합니다." msgid "Pellets" msgstr "펠릿" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "혼합 필라멘트의 구성 요소 참조가 손상되었습니다" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "편집 / 삭제 / 병합" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "대상 혼합 필라멘트가 이 물리 필라멘트를 구성 요소로 사용합니다. 병합하면 이 물리 필라멘트가 제거되어 혼합 필라멘트가 무효가 될 수 있습니다. 계속할까요?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "작업을 완료하면 %s 프로젝트가 닫히고 새 프로젝트가 만들어집니다." @@ -8151,9 +8201,15 @@ msgstr "이러한 사전 설정 내의 Gcode가 기계 손상을 방지할 수 msgid "Customized Preset" msgstr "사용자 정의 프리셋" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + # AI Translated -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "STEP 파일 내부의 구성 요소 이름이 UTF8 형식이 아닙니다!" +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "STEP 파일 내부의 구성 요소 이름이 UTF-8 형식이 아닙니다!" # AI Translated msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8175,7 +8231,7 @@ msgstr "물체의 부피는 0입니다" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "%s 파일의 객체가 너무 작습니다. 단위가 미터나 인치일 수 있습니다.\n" " mm 단위로 확장하시겠습니까?" @@ -8195,6 +8251,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "여러 부품으로 구성된 객체 감지됨" +# AI Translated +msgid "Matching textures to filaments" +msgstr "텍스처를 필라멘트에 매칭하는 중" + +# AI Translated +msgid "Texture Import Warning" +msgstr "텍스처 가져오기 경고" + msgid "Load these files as a single object with multiple parts?\n" msgstr "이 파일을 여러 부품이 있는 단일 객체로 로드하시겠습니까?\n" @@ -8423,6 +8487,22 @@ msgstr "" msgid "Sync now" msgstr "지금 동기화" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "텍스처 가져오기에 실패했습니다. 모델에 텍스처 데이터가 포함된 것으로 보이지만 텍스처 가져오기 과정을 완료하지 못했습니다. 모델은 형상만 가져옵니다." + +# AI Translated +msgid "Applying texture colors..." +msgstr "텍스처 색상 적용 중..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D 뷰 업데이트 중..." + +# AI Translated +msgid "Texture colors applied." +msgstr "텍스처 색상이 적용되었습니다." + msgid "You can keep the modified presets for the new project or discard them" msgstr "수정된 사전 설정을 새 프로젝트에 유지하거나 삭제할 수 있습니다" @@ -8554,6 +8634,17 @@ msgstr "슬라이스 파일을 다음으로 저장:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s 파일이 프린터의 저장 공간으로 전송되었으며 프린터에서 볼 수 있습니다." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "게시" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "노즐 유형이 설정되지 않았습니다. 노즐을 설정하고 다시 시도하세요." @@ -9766,6 +9857,10 @@ msgstr "나선형 꽃병 모드" msgid "First layer filament sequence" msgstr "첫 번째 레이어 필라멘트 순서" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "필라멘트 목록에 혼합 필라멘트가 있습니다. 사용자 지정 필라멘트 순서는 적용되지 않습니다." + msgid "By Layer" msgstr "레이어별" @@ -9793,9 +9888,6 @@ msgstr "모델 게시 웹 페이지로 이동" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "참고: 준비하는 데 몇 분 정도 걸릴 수 있습니다. 조금만 기다려 주십시오." -msgid "Publish" -msgstr "게시" - msgid "Publish was canceled" msgstr "게시가 취소되었습니다" @@ -9812,6 +9904,64 @@ msgstr "데이터 업로드 중" msgid "Jump to webpage" msgstr "웹 페이지로 이동" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s을(를) 다음으로 저장" @@ -11188,12 +11338,12 @@ msgid "No modifications need to be copied." msgstr "복사할 변경 사항이 없습니다." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "매개변수 복사" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "%s의 매개변수 수정" # AI Translated @@ -11723,30 +11873,6 @@ msgstr "필라멘트 교체를 위한 버리기 볼륨" msgid "Please choose the filament colour" msgstr "필라멘트 색상을 선택하세요" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "네이티브 Wayland 실시간 보기에는 GStreamer GTK 비디오 싱크가 필요합니다. GStreamer용 gtksink 플러그인을 설치한 후 OrcaSlicer를 다시 시작하십시오." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "네이티브 Wayland GStreamer 비디오 싱크를 초기화하지 못했습니다. GStreamer GTK 플러그인 설치 상태를 확인하십시오." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "이 작업에는 Windows Media Player가 필요합니다! 운영 체제에서 Windows Media Player를 활성화하시겠습니까?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "뱀부소스가 미디어 재생에 올바르게 등록되지 않았습니다! 다시 등록하려면 예를 누르세요. 두 번 승격됩니다" - -# AI Translated -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "미디어 재생용으로 등록된 BambuSource 구성 요소가 없습니다! OrcaSlicer를 다시 설치하거나 커뮤니티에 도움을 요청하십시오." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "다른 설치 버전의 뱀부소스를 사용하면 동영상 재생이 제대로 작동하지 않을 수 있습니다! 예를 눌러 문제를 해결하세요." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "시스템에 동영상 재생을 위해 필요한 GStreamer용 H.264 코덱이 존재하지 않습니다. (gstreamer1.0-plugins-bad 또는 gstreamer1.0-libav 패키지를 설치한 다음 Orca Slicer를 다시 실행하십시오.)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "클라우드 에이전트를 사용할 수 없습니다. OrcaSlicer를 다시 시작한 후 다시 시도하십시오." @@ -12475,6 +12601,10 @@ msgstr "그래도 출력하려면 기본 설정 / 제어 / 슬라이싱 / 혼합 msgid "No extrusions under current settings." msgstr "현재 설정에 압출기가 없습니다." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "그라데이션 혼합 필라멘트가 사용 중이지만 '혼색 서브레이어'가 비활성화되어 있습니다. 그라데이션은 출력되지 않습니다." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "타임랩스의 유연 모드는 \"객체별\" 출력순서가 활성화된 경우 지원되지 않습니다." @@ -12513,6 +12643,10 @@ msgstr "모델 크기를 줄이거나 현재 출력 설정을 변경하고 다 msgid "Variable layer height is not supported with Organic supports." msgstr "유기체 서포트에서는 가변 레이어 높이가 지원되지 않습니다." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "프라임 타워 필라멘트는 혼합 필라멘트일 수 없습니다." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "프라임 타워를 활성화하면 노즐 직경과 필라멘트 직경이 다르면 제대로 작동하지 않을 수 있습니다. 매우 실험적인 기능이므로 주의해서 사용하시기 바랍니다." @@ -12889,8 +13023,7 @@ msgstr "mm 또는 %" msgid "Other layers" msgstr "다른 레이어" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "초기 레이어를 제외한 레이어의 베드 온도입니다. 값이 0이면 해당 필라멘트가 쿨 플레이트 슈퍼택에서의 출력을 지원하지 않음을 의미합니다." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14307,6 +14440,8 @@ msgstr "레이어 시간" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "예상 시간이 이 값보다 짧은 레이어에 대해 출력물 냉각 팬이 활성화됩니다. 팬 속도는 레이어 출력 시간에 따라 최소 및 최대 팬 속도 사이에서 보간됩니다" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14620,6 +14755,62 @@ msgstr "서포트 재료" msgid "Support material is commonly used to print supports and support interfaces." msgstr "서포트 재료는 일반적으로 서포트 및 서포트 접점을 출력하는 데 사용됩니다" +# AI Translated +msgid "Is mixed filament" +msgstr "혼합 필라멘트 여부" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "이 필라멘트 슬롯이 여러 물리 필라멘트로 구성된 혼합 필라멘트인지 여부" + +# AI Translated +msgid "Mixed filament components" +msgstr "혼합 필라멘트 구성 요소" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "구성 필라멘트의 1부터 시작하는 인덱스를 쉼표로 구분하여 입력합니다. 예: \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "혼합 필라멘트 서브레이어 비율" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "합이 1.0이 되는 비율 값을 쉼표로 구분하여 입력합니다. 예: \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "혼합 필라멘트 그라데이션" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "혼합 필라멘트 서브레이어에 대해 Z 방향 그라데이션 모드를 활성화합니다. 활성화하면 서브레이어 비율이 레이어에 따라 선형으로 변합니다." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "혼합 필라멘트 그라데이션 범위" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "그라데이션 모드에서 첫 번째 구성 요소의 시작 및 종료 비율입니다. 쉼표로 구분된 한 쌍이며, 예를 들어 \"0.10,0.90\"은 10%에서 90%를 의미합니다." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "혼합 필라멘트 그라데이션 곡선" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Z 진행도를 첫 번째 구성 요소의 비율에 매핑하는 선택적 Photoshop 스타일 사용자 지정 곡선입니다. 제어점을 세로줄로 구분하여 \"x,y\"(레거시) 또는 접선을 재정의해야 할 때는 \"x,y,m_in,m_out\" 형식으로 인코딩합니다(빈 값 또는 \"nan\"은 PCHIP 기본값을 사용). x는 [0,1] 범위이며, y는 설정된 비율 범위로 제한됩니다. 예: \"0,0.15|0.5,0.50|1,0.85\". 비워 두면 대신 선형 gradient_range가 사용됩니다." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "혼합 필라멘트 부품별 그라데이션" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "그라데이션 모드가 활성화되면 조립 전체를 하나의 Z 범위로 처리하지 않고 조립의 각 부품에 그라데이션을 개별적으로 적용합니다." + msgid "Filament printable" msgstr "필라멘트 출력 가능" @@ -15938,6 +16129,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Y축의 허용 최대 출력 힘" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15948,6 +16140,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Y축 장비 베드 질량 하중" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16276,7 +16469,7 @@ msgid "Reduce infill retraction" msgstr "채우기 후퇴 감소" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "이동 경로가 완전히 채우기 영역 안에 있으면 후퇴하지 않습니다. 흘러내림이 보이지 않기 때문입니다. 복잡한 모델에서 후퇴 횟수를 줄여 출력 시간을 절약할 수 있지만 슬라이싱과 G-code 생성 속도는 느려집니다. 후퇴를 건너뛴 영역에서는 Z 올리기도 수행되지 않습니다." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16453,7 +16646,7 @@ msgstr "노즐 청소 후 후퇴량" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "노즐 청소 후 빠른 후퇴의 길이로, 후퇴 길이를 기준으로 합니다.\n" @@ -16500,7 +16693,7 @@ msgstr "툴 체인지 전에 후퇴가 실행되면 지정한 양만큼 필라 msgid "Z-hop height" msgstr "Z올리기 높이" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "후퇴가 완료될 때마다 노즐이 약간 올라가서 노즐과 출력물 사이에 간격이 생깁니다. 이동 시 노즐이 출력물에 닿는 것을 방지합니다. 나선형 선을 사용하여 z를 들어 올리면 스트링 현상을 방지할 수 있습니다" msgid "Z-hop lower boundary" @@ -17579,6 +17772,14 @@ msgstr "" "\n" "아래의 와이프 전 후퇴량 설정에서 값을 설정하면 와이프 전에 초과 후퇴가 수행되고, 그렇지 않으면 와이프 후에 수행됩니다." +# AI Translated +msgid "Mixed color sublayer" +msgstr "혼색 서브레이어" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "혼색 서브레이어 분할을 활성화합니다. 활성화하면 혼색 필라멘트가 포함된 레이어가 서브레이어로 분할되어 색상 혼합 효과를 얻습니다." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "프라임 타워는 객체를 출력할 때 외관 결함을 방지하기 위해 노즐의 잔류물을 청소하고 노즐 내부의 압력을 안정화하는 데 사용할 수 있습니다." @@ -18682,6 +18883,10 @@ msgstr "모델 파일의 메싱이 실패했거나 유효한 형태가 없습니 msgid "The supplied file couldn't be read because it's empty." msgstr "제공된 파일이 비어 있어 읽을 수 없습니다" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "파일 형식이 호환되지 않아 해석할 수 없습니다." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "알 수 없는 파일 형식: 입력 파일의 확장자는 .stl, .obj 또는 .amf(.xml)여야 합니다." @@ -20213,19 +20418,19 @@ msgstr "프린터, 필라멘트 및 프로세스 사전 설정이 변경된 경 msgid "Only display the filament names with changes to filament presets." msgstr "필라멘트 사전 설정이 변경된 경우에만 필라멘트 이름을 표시합니다." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "사용자 프린터 사전 설정이 있는 프린터 이름만 표시되며, 선택한 각 사전 설정은 zip으로 내보내집니다." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "사용자 필라멘트 사전 설정이 있는 필라멘트 이름만 표시됩니다.\n" "선택한 각 필라멘트 이름의 모든 사용자 필라멘트 사전 설정은 zip으로 내보내집니다." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "프로세스 사전 설정이 변경된 프린터 이름만 표시됩니다.\n" "선택한 각 프린터 이름의 모든 사용자 프로세스 사전 설정은 zip으로 내보내집니다." @@ -20469,7 +20674,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "문제의 원인을 진단하려면 정보가 필요합니다. 자세한 안내는 위키 페이지를 확인하십시오." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "패키지 버튼은 현재 세션의 프로젝트 파일과 로그를 zip 파일로 모읍니다." # AI Translated @@ -20525,7 +20730,7 @@ msgid "Stored logs" msgstr "저장된 로그" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "저장된 모든 로그를 zip 파일로 묶습니다." # AI Translated @@ -20613,7 +20818,7 @@ msgid "Authorizing..." msgstr "인증 중..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "오류. 인증용 API 토큰을 가져올 수 없습니다" # AI Translated @@ -21075,8 +21280,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "스마트 필라멘트 할당 활성화: 하나의 필라멘트를 여러 노즐에 할당하여 절약을 극대화합니다" # AI Translated -msgid "Fila Saving" -msgstr "필라멘트 절약" +msgid "File Saving" +msgstr "파일 저장" msgid "Don't remind me again" msgstr "다시 알리지 마세요" @@ -21409,6 +21614,15 @@ msgstr "이 작업은 취소할 수 없습니다. 계속하시겠습니까?" msgid "Skipping objects." msgstr "물체 건너뛰기" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "필라멘트 선택" @@ -21506,6 +21720,9 @@ msgstr "지금 다시 시작" msgid "NO RAMMING AT ALL" msgstr "채워넣기 전혀 없음" +msgid "s" +msgstr "s" + # AI Translated msgid "Volumetric speed" msgstr "압출 속도" @@ -22159,6 +22376,42 @@ msgstr "" "뒤틀림 방지\n" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "네이티브 Wayland 실시간 보기에는 GStreamer GTK 비디오 싱크가 필요합니다. GStreamer용 gtksink 플러그인을 설치한 후 OrcaSlicer를 다시 시작하십시오." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "네이티브 Wayland GStreamer 비디오 싱크를 초기화하지 못했습니다. GStreamer GTK 플러그인 설치 상태를 확인하십시오." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "이 작업에는 Windows Media Player가 필요합니다! 운영 체제에서 Windows Media Player를 활성화하시겠습니까?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "뱀부소스가 미디어 재생에 올바르게 등록되지 않았습니다! 다시 등록하려면 예를 누르세요. 두 번 승격됩니다" + +# AI Translated +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "미디어 재생용으로 등록된 BambuSource 구성 요소가 없습니다! OrcaSlicer를 다시 설치하거나 커뮤니티에 도움을 요청하십시오." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "다른 설치 버전의 뱀부소스를 사용하면 동영상 재생이 제대로 작동하지 않을 수 있습니다! 예를 눌러 문제를 해결하세요." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "시스템에 동영상 재생을 위해 필요한 GStreamer용 H.264 코덱이 존재하지 않습니다. (gstreamer1.0-plugins-bad 또는 gstreamer1.0-libav 패키지를 설치한 다음 Orca Slicer를 다시 실행하십시오.)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "필라멘트 절약" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index 5174679abf..a36ecd5cab 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -136,6 +136,7 @@ src/slic3r/GUI/BackgroundSlicingProcess.cpp src/slic3r/GUI/BedShapeDialog.cpp src/slic3r/GUI/BedShapeDialog.hpp src/slic3r/GUI/ConfigManipulation.cpp +src/slic3r/GUI/ConfigValueFormatter.cpp src/slic3r/GUI/DeviceManager.cpp src/slic3r/GUI/DeviceErrorDialog.cpp src/slic3r/GUI/ExtraRenderers.cpp @@ -175,6 +176,7 @@ src/slic3r/GUI/ProgressStatusBar.cpp src/slic3r/GUI/PlateSettingsDialog.cpp src/slic3r/GUI/PrivacyUpdateDialog.cpp src/slic3r/GUI/PublishDialog.cpp +src/slic3r/GUI/PublishSettingsDialog.cpp src/slic3r/GUI/SavePresetDialog.cpp src/slic3r/GUI/Search.cpp src/slic3r/GUI/Selection.cpp diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index ad5edffc9a..80273427f0 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -3,12 +3,11 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas <sharanchius@gmail.com>\n" "Language-Team: \n" @@ -2937,6 +2936,10 @@ msgstr "Redaguoti" msgid "Merge with" msgstr "Sujungti su" +# AI Translated +msgid "Decompose Color" +msgstr "Išskaidyti spalvą" + msgid "Delete this filament" msgstr "Ištrinti šią giją" @@ -3238,6 +3241,10 @@ msgstr "Surinkimas" msgid "Merge parts to an object" msgstr "Sujungti dalis į objektą" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Kintamo sluoksnio aukščio naudojimas kartu su mišrios spalvos posluoksniu gali pabloginti spalvų maišymo kokybę." + # AI Translated msgid "Add layers" msgstr "Pridėti sluoksnių" @@ -4792,7 +4799,7 @@ msgstr "" "\n" "Reikšmė bus atstatyta į 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Alternatyvi papildoma sienelė veikia prastai, kai vertikalaus apvalkalo storio užtikrinimas nustatytas į „Visi“." msgid "" @@ -4838,7 +4845,7 @@ msgstr "" "NE – palikti nepriklausomą atramų sluoksnio aukštį" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "„seam_slope_start_height“ turi būti mažesnis už „layer_height“\n" @@ -4846,7 +4853,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Fiksavimo gylis turėtų būti mažesnis už išorinio sluoksnio gylį.\n" @@ -4886,6 +4893,9 @@ msgstr "" "Taip – pakeisti šiuos nustatymus ir automatiškai įjungti spiralinį režimą\n" "Ne – nenaudoti spiralinio režimo" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Spausdinimas" @@ -5345,9 +5355,6 @@ msgstr "Neteisingas šablonas. Naudokite N, N#K arba kableliais atskirtą sąra msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Netinkamas formatas. Tinkamas vektorinis formatas: \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Sisteminiai agentai" @@ -6305,16 +6312,22 @@ msgstr "Įrašyti projektą kaip" msgid "Save current project as" msgstr "Įrašyti dabartinį projektą kaip" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuoti 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Įkelti modelį" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importuoti Zip archyvą" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Įkelti modelius iš ZIP archyvo" msgid "Import Configs" @@ -7835,6 +7848,10 @@ msgstr "Individualizuoti esamą plokštę" msgid "The %s nozzle can not print %s." msgstr "%s purkštukas negali spausdinti %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Spausdinant mišrios spalvos giją vieno ekstruderio spausdintuvu reikia dažnai keisti giją ir pravalyti, todėl gali gerokai padidėti atliekų kiekis ir purkštuko arba atliekų latako užsikimšimo rizika." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7968,12 +7985,44 @@ msgstr "Sinchronizuoti gijų sąrašą iš AMS" msgid "Set filaments to use" msgstr "Nustatyti gijas naudojimui" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Pridėti mišrią giją" + +# AI Translated +msgid "Mixed Filament" +msgstr "Mišri gija" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Pašalinti paskutinę mišrią giją" + +# AI Translated +msgid "Add mixed filament" +msgstr "Pridėti mišrią giją" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Mišri gija turi netinkamų arba neatitinkančių komponentų. Iš naujo suredaguokite susijusius įrašus." + msgid "Search plate, object and part." msgstr "Plokštės, objekto ir dalies paieška." msgid "Pellets" msgstr "Granulės" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Mišri gija turi sugadintų komponentų nuorodų" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Redaguoti / Ištrinti / Sujungti" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Paskirties mišri gija naudoja šią fizinę giją kaip komponentą. Sujungus ši fizinė gija bus pašalinta ir mišri gija gali tapti netinkama. Tęsti?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Baigus šią operaciją, projektas „%s“ bus uždarytas ir bus sukurtas naujas projektas." @@ -8110,7 +8159,13 @@ msgstr "Patvirtinkite, kad šiuose profiliuose esantis G-kodas yra saugus, kad i msgid "Customized Preset" msgstr "Pritaikytas profilis" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8132,7 +8187,7 @@ msgstr "Objekto tūris nulinis" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Objektas iš failo „%s“ yra per mažas ir galimai nurodytas metrais arba coliais.\n" "Ar norite mastelį pakeisti į milimetrus?" @@ -8152,6 +8207,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Aptiktas kelių dalių objektas" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Tekstūros priskiriamos gijoms" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Tekstūros importavimo įspėjimas" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Ar įkelti šiuos failus kaip vieną objektą su keliomis detalėmis?\n" @@ -8366,6 +8429,22 @@ msgstr "" msgid "Sync now" msgstr "Sinchronizuoti dabar" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Tekstūros importuoti nepavyko. Panašu, kad modelyje yra tekstūros duomenų, tačiau importavimo proceso nepavyko užbaigti. Modelis bus importuotas tik kaip geometrija." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Taikomos tekstūros spalvos..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Atnaujinamas 3D vaizdas..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Tekstūros spalvos pritaikytos." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Pakeistus profilius galite išsaugoti naujam projektui arba juos atmesti" @@ -8497,6 +8576,17 @@ msgstr "Išsaugoti susluoksniuotą failą kaip:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Failas %s išsiųstas į spausdintuvo laikmeną ir gali būti peržiūrimas spausdintuve." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Talpinti" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Purkštuko tipas nenustatytas. Nustatykite purkštuką ir bandykite dar kartą." @@ -9595,6 +9685,10 @@ msgstr "Spiralinė vaza" msgid "First layer filament sequence" msgstr "Pirmojo sluoksnio gijos eiga" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Gijų sąraše yra mišrių gijų. Pasirinktinė gijų seka nebus taikoma." + msgid "By Layer" msgstr "Pagal sluoksnį" @@ -9622,9 +9716,6 @@ msgstr "Pereiti į modelio talpinimo interneto puslapį" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Pastaba: paruošimas gali užtrukti kelias minutes. Būkite kantrūs." -msgid "Publish" -msgstr "Talpinti" - msgid "Publish was canceled" msgstr "Publikavimas buvo atšauktas" @@ -9640,6 +9731,64 @@ msgstr "Įkeliami duomenys" msgid "Jump to webpage" msgstr "Pereiti į interneto puslapį" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Išsaugoti %s kaip" @@ -10981,11 +11130,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Nereikia kopijuoti jokių modifikacijų" -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Kopijuoti parametrus" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modifikuoti %s parametrus" #, c-format, boost-format @@ -11498,27 +11647,6 @@ msgstr "Išmetimo tūris keičiant gijas" msgid "Please choose the filament colour" msgstr "Pasirinkite gijos spalvą" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Tiesioginei „Native Wayland“ peržiūrai reikalingas „GStreamer GTK“ vaizdo sinchronizatorius (video sink). Įdiekite „GStreamer“ skirtą „gtksink“ papildinį, tada iš naujo paleiskite „OrcaSlicer“." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Nepavyko inicijuoti „native Wayland GStreamer“ vaizdo sinchronizatoriaus (video sink). Patikrinkite „GStreamer GTK“ papildinio įdiegimą." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Šiai užduočiai atlikti reikalingas \"Windows Media Player\"! Ar norite įjungti \"Windows Media Player\" savo operacinėje sistemoje?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "„BambuSource“ neteisingai užregistruotas medijos atkūrimui! Paspauskite „Taip“, kad jį perregistruotumėte. Jums reikės patvirtinti du kartus." - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Trūksta BambuSource komponento, užregistruoto medijos atkūrimui! Iš naujo įdiekite OrcaSlicer arba kreipkitės pagalbos į bendruomenę." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Naudojant \"BambuSource\" iš kito diegimo šaltinio, vaizdo įrašų atkūrimas gali būti neteisingas! Paspauskite Taip, kad tai ištaisytumėte." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Jūsų sistemoje nėra \"GStreamer\" H.264 kodekų, reikalingų vaizdo įrašams atkurti. (Pabandykite įdiegti gstreamer1.0-plugins-bad arba gstreamer1.0-libav paketus, tada iš naujo paleiskite \"Orca Slicer\")" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Debesies agentas nepasiekiamas. Iš naujo paleiskite „OrcaSlicer“ ir bandykite vėl." @@ -12226,6 +12354,10 @@ msgstr "Jei vis tiek norite spausdinti, galite įjungti šią parinktį skiltyje msgid "No extrusions under current settings." msgstr "Pagal dabartinius nustatymus nėra išspaudimų." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Naudojama mišri gija su gradientu, tačiau 'Mišrios spalvos posluoksnis' yra išjungtas. Gradientas nebus atspausdintas." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Sklandus pakadrinio filmavimo (timelapse) režimas nepalaikomas, kai įjungta spausdinimo seka „pagal objektą“." @@ -12262,6 +12394,10 @@ msgstr "Galbūt norėsite sumažinti modelio dydį arba pakeisti esamus spausdin msgid "Variable layer height is not supported with Organic supports." msgstr "Kintamas sluoksnio aukštis nepalaikomas su \" Organinėmis atramomis\"." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Valymo bokšto gija negali būti mišri gija." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Skirtingo skersmens purkštukai ir skirtingo skersmens gijos gali neveikti gerai, kai įjungtas valymo bokštas. Tai labai eksperimentinė priemonė, todėl elkitės atsargiai." @@ -12609,7 +12745,7 @@ msgstr "mm arba %" msgid "Other layers" msgstr "Kiti sluoksniai" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant „Cool Plate SuperTack“ pagrindo." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13962,6 +14098,8 @@ msgstr "Sluoksnio laikas" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Detalės aušinimo ventiliatorius bus suaktyvintas tiems sluoksniams, kurių preliminarus spausdinimo laikas yra trumpesnis už šią reikšmę. Ventiliatoriaus sūkiai bus interpoliuojami tarp minimalaus ir maksimalaus greičio, priklausomai nuo sluoksnio spausdinimo trukmės." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14269,6 +14407,62 @@ msgstr "Atramų gija" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Atramų gija paprastai naudojama atramoms ir atramų skiriamiesiems sluoksniams spausdinti." +# AI Translated +msgid "Is mixed filament" +msgstr "Yra mišri gija" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Nurodo, ar ši gijos vieta yra mišri gija, sudaryta iš kelių fizinių gijų" + +# AI Translated +msgid "Mixed filament components" +msgstr "Mišrios gijos komponentai" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Kableliais atskirti komponentinių gijų indeksai, skaičiuojami nuo 1, pvz. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Mišrios gijos posluoksnių santykiai" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Kableliais atskirtos santykio reikšmės, kurių suma lygi 1.0, pvz. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Mišrios gijos gradientas" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Įjungia gradiento režimą Z kryptimi mišrios gijos posluoksniams. Įjungus posluoksnių santykiai tarp sluoksnių kinta tiesiškai." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Mišrios gijos gradiento intervalas" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Pirmojo komponento pradinis ir galutinis santykis gradiento režimu. Kableliu atskirta pora, pvz. \"0.10,0.90\" reiškia nuo 10% iki 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Mišrios gijos gradiento kreivė" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Neprivaloma pasirinktinė Photoshop stiliaus kreivė, susiejanti Z eigą su pirmojo komponento santykiu. Užrašoma kaip vertikaliais brūkšniais atskirti valdymo taškai, formatu \"x,y\" (senasis) arba \"x,y,m_in,m_out\", kai reikia nustatyti liestinę (tuščia reikšmė arba \"nan\" reiškia numatytąjį PCHIP). x priklauso [0,1]; y apribojamas iki nustatyto santykių intervalo, pvz. \"0,0.15|0.5,0.50|1,0.85\". Jei palikta tuščia, naudojamas tiesinis gradient_range." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Mišrios gijos gradientas kiekvienai daliai" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Kai gradiento režimas įjungtas, gradientas taikomas kiekvienai surinkimo daliai atskirai, o ne visam surinkimui kaip vienam Z intervalui." + msgid "Filament printable" msgstr "Gija tinkama spausdinti" @@ -15519,6 +15713,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Leidžiama didžiausia Y ašies išvesties jėga" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15531,6 +15726,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Įrenginio pagrindo masės apkrova Y ašiai" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15839,7 +16035,7 @@ msgstr "Pradžios ir pabaigos taškai, esantys tarp gijos kirpimo zonos ir atlie msgid "Reduce infill retraction" msgstr "Sumažinti užpildo įtraukimą (Retraction)" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Neatlikti gijos įtraukimo, kai tuščioji eiga vyksta tik užpildo zonoje. Tokiu atveju gijos varvėjimas (oozing) išorėje bus nematomas. Tai leidžia sumažinti įtraukimų skaičių sudėtingiems modeliams ir sutaupyti spausdinimo laiko, tačiau sulėtina sluoksniavimą bei G-kodo (G-code) generavimą. Pastaba: zonose, kuriose įtraukimas praleidžiamas, „Z-hop“ judesys taip pat neatliekamas." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16005,7 +16201,7 @@ msgstr "Atitraukimo kiekis po nubraukimo" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Greito atitraukimo ilgis po nubraukimo, atsižvelgiant į atitraukimo ilgį.\n" @@ -16052,7 +16248,7 @@ msgstr "Kai atitraukimas suaktyvinamas prieš įrankio keitimą, gija atitraukia msgid "Z-hop height" msgstr "„Z-hop“ (pakėlimo) aukštis" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Kaskart atliekant atitraukimą, purkštukas šiek tiek pakeliamas, kad tarp jo ir spaudinio atsirastų tarpas. Tai apsaugo nuo purkštuko užkliudymo už spaudinio judėjimo metu. „Spiralinių“ linijų naudojimas Z ašies kėlimui gali padėti išvengti „tįstančių siūlų“ (angl. \"stringing\")." msgid "Z-hop lower boundary" @@ -17099,6 +17295,14 @@ msgstr "" "\n" "Jei žemiau esančiame nustatyme „Įtraukimo kiekis prieš nuvalymą“ nurodysite reikšmę, perteklinis gijos įtraukimas bus atliktas prieš nuvalymą, kitu atveju – po jo." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Mišrios spalvos posluoksnis" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Įjungia skaidymą į mišrios spalvos posluoksnius. Įjungus sluoksniai, kuriuose yra mišrios spalvos gijų, skaidomi į posluoksnius, kad būtų pasiektas spalvų maišymo efektas." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Valymo bokštelis (angl. \"wiping tower\") gali būti naudojamas likučiams nuo purkštuko nuvalyti ir purkštuko viduje esančiam slėgiui stabilizuoti, siekiant išvengti išvaizdos defektų spausdinant objektus." @@ -18182,6 +18386,10 @@ msgstr "Nepavyko suformuoti modelio failo poligonažo arba jame nėra tinkamos g msgid "The supplied file couldn't be read because it's empty." msgstr "Pateikto failo nepavyko nuskaityti, nes jis yra tuščias." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Failo formatas nesuderinamas ir jo nepavyksta perskaityti." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Nežinomas failo formatas: įvesties failas privalo turėti .stl, .obj arba .amf(.xml) plėtinį." @@ -19649,19 +19857,19 @@ msgstr "Rodomi tik tie spausdintuvai, kurių spausdintuvo, kaitinamojo siūlo ir msgid "Only display the filament names with changes to filament presets." msgstr "Rodyti tik tuos gijų pavadinimus, kurių gijos profiliai buvo pakeisti." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Bus rodomi tik tie spausdintuvų pavadinimai, kurie turi naudotojo sukurtų profilių, o kiekvienas pasirinktas profilis bus eksportuotas kaip ZIP failas." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Bus rodomi tik tie gijų pavadinimai, kurie turi naudotojo sukurtų profilių, \n" "o visi pasirinkto pavadinimo naudotojo gijos profiliai bus eksportuoti kaip ZIP failas." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Bus rodomi tik tie spausdintuvų pavadinimai, kurie turi pakeistų proceso profilių, \n" "o visi pasirinkto spausdintuvo naudotojo proceso profiliai bus eksportuoti kaip ZIP failas." @@ -19891,7 +20099,7 @@ msgstr "Kopijuoti sistemos informaciją į iškarpinę" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Mums reikia informacijos problemos šaltiniui diagnozuoti. Išsamų vadovą rasite „Wiki“ puslapyje." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Mygtukas „Supakuoti“ (Pack) surenka projekto failą ir dabartinės sesijos žurnalus į ZIP failą." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19933,7 +20141,7 @@ msgstr "Žurnalo lygis" msgid "Stored logs" msgstr "Saugomi žurnalai" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Supakuoja visus saugomus žurnalus į ZIP failą." msgid "Profiles" @@ -20000,7 +20208,7 @@ msgstr "Spausdintuvo tipas nerastas, pasirinkite rankiniu būdu." msgid "Authorizing..." msgstr "Autorizuojama..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Klaida. Nepavyko gauti API žetono (token) autorizacijai" msgid "Could not parse server response." @@ -20448,8 +20656,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Įjungti išmanųjį gijos priskyrimą: priskirkite vieną giją keliems purkštukams, kad sutaupytumėte kuo daugiau" # AI Translated -msgid "Fila Saving" -msgstr "Gijos taupymas" +msgid "File Saving" +msgstr "Failo įrašymas" msgid "Don't remind me again" msgstr "Daugiau neberodyti šio priminimo" @@ -20735,6 +20943,15 @@ msgstr "Šio veiksmo atšaukti nebus galima. Tęsti?" msgid "Skipping objects." msgstr "Praleidžiami objektai." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Pasirinkti giją" @@ -20814,6 +21031,9 @@ msgstr "Paleisti iš naujo dabar" msgid "NO RAMMING AT ALL" msgstr "VISIŠKAI NENAUDOTI SUTANKINIMO" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Tūrinis greitis" @@ -21436,6 +21656,39 @@ msgstr "" "Venkite deformacijų (warping)\n" "Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Tiesioginei „Native Wayland“ peržiūrai reikalingas „GStreamer GTK“ vaizdo sinchronizatorius (video sink). Įdiekite „GStreamer“ skirtą „gtksink“ papildinį, tada iš naujo paleiskite „OrcaSlicer“." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Nepavyko inicijuoti „native Wayland GStreamer“ vaizdo sinchronizatoriaus (video sink). Patikrinkite „GStreamer GTK“ papildinio įdiegimą." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Šiai užduočiai atlikti reikalingas \"Windows Media Player\"! Ar norite įjungti \"Windows Media Player\" savo operacinėje sistemoje?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "„BambuSource“ neteisingai užregistruotas medijos atkūrimui! Paspauskite „Taip“, kad jį perregistruotumėte. Jums reikės patvirtinti du kartus." + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Trūksta BambuSource komponento, užregistruoto medijos atkūrimui! Iš naujo įdiekite OrcaSlicer arba kreipkitės pagalbos į bendruomenę." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Naudojant \"BambuSource\" iš kito diegimo šaltinio, vaizdo įrašų atkūrimas gali būti neteisingas! Paspauskite Taip, kad tai ištaisytumėte." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Jūsų sistemoje nėra \"GStreamer\" H.264 kodekų, reikalingų vaizdo įrašams atkurti. (Pabandykite įdiegti gstreamer1.0-plugins-bad arba gstreamer1.0-libav paketus, tada iš naujo paleiskite \"Orca Slicer\")" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Gijos taupymas" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" @@ -22206,20 +22459,12 @@ msgstr "" #~ msgid "Please correct them in the param tabs" #~ msgstr "Prašome juos ištaisyti parametrų skirtukuose" -#~ msgid "Name of components inside STEP file is not UTF8 format!" +#~ msgid "Name of components inside STEP file is not UTF-8 format!" #~ msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!" #~ msgid "The name may show garbage characters!" #~ msgstr "Pavadinimas gali rodyti neskaitomus simbolius!" -#, c-format, boost-format -#~ msgid "" -#~ "The object from file %s is too small, and maybe in meters or inches.\n" -#~ " Do you want to scale to millimeters?" -#~ msgstr "" -#~ "Objektas iš failo „%s“ yra per mažas ir galimai nurodytas metrais arba coliais.\n" -#~ "Ar norite mastelį pakeisti į milimetrus?" - #~ msgid "" #~ "This file contains several objects positioned at multiple heights.\n" #~ "Instead of considering them as multiple objects, should \n" @@ -22609,21 +22854,6 @@ msgstr "" #~ msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable." #~ msgstr "Maksimalus apylankos atstumas sienelių kirtimui išvengti. Apylanka nedaroma, jei jos atstumas viršija šią reikšmę. Apylankos ilgis gali būti nurodomas absoliučia verte arba procentais (pavyzdžiui, 50 %) nuo tiesioginio judėjimo trajektorijos. Įrašius 0 – funkcija išjungiama." -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate." -#~ msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant šalto pagrindo (Cool Plate)." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured Cool Plate." -#~ msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant tekstūruoto šalto pagrindo (Textured Cool Plate)." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Engineering Plate." -#~ msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant inžinerinio pagrindo (Engineering Plate)." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the High Temp Plate." -#~ msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant aukštos temperatūros pagrindo (High Temp Plate)." - -#~ msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Textured PEI Plate." -#~ msgstr "Pagrindo temperatūra visiems sluoksniams, išskyrus pirmąjį. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant tekstūruoto PEI pagrindo (Textured PEI Plate)." - #~ msgid "Bed temperature of the first layer. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." #~ msgstr "Pirmojo sluoksnio pagrindo temperatūra. Reikšmė 0 reiškia, kad ši gija nepritaikyta spausdinti ant „Cool Plate SuperTack“ pagrindo." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 28ad63d455..720f4ba6f5 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -3197,6 +3197,10 @@ msgstr "Bewerken" msgid "Merge with" msgstr "Samenvoegen met" +# AI Translated +msgid "Decompose Color" +msgstr "Kleur ontleden" + # AI Translated msgid "Delete this filament" msgstr "Dit filament verwijderen" @@ -3519,6 +3523,10 @@ msgstr "Montage" msgid "Merge parts to an object" msgstr "Onderdelen samenvoegen tot een object" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Het gebruik van variabele laaghoogte in combinatie met de sublaag met gemengde kleur kan de kwaliteit van de kleurmenging verslechteren." + # AI Translated msgid "Add layers" msgstr "Lagen toevoegen" @@ -5217,7 +5225,7 @@ msgstr "" "De waarde wordt teruggezet naar 0." # AI Translated -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Afwisselende extra wand werkt niet goed wanneer 'verticale wanddikte waarborgen' op Alles is ingesteld." # AI Translated @@ -5265,7 +5273,7 @@ msgstr "" # AI Translated msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height moet kleiner zijn dan layer_height.\n" @@ -5274,7 +5282,7 @@ msgstr "" # AI Translated #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "De vergrendeldiepte moet kleiner zijn dan de huiddiepte.\n" @@ -5317,6 +5325,9 @@ msgstr "" "Ja - Pas de instellingen aan en zet de vaas modus automatisch aan\n" "Nee - Pas de vaas modus deze keer niet toe" +msgid "N/A" +msgstr "N/B" + msgid "Printing" msgstr "Printen" @@ -5853,9 +5864,6 @@ msgstr "Ongeldig patroon. Gebruik N, N#K of een door komma's gescheiden lijst me msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Onjuist formaat. Het Vector formaat wordt verwacht: \"%1%\"" -msgid "N/A" -msgstr "N/B" - # AI Translated msgid "System agents" msgstr "Systeemagenten" @@ -6880,6 +6888,12 @@ msgstr "Bewaar project als" msgid "Save current project as" msgstr "Bewaar huidig project als" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF importeren" @@ -6887,11 +6901,11 @@ msgid "Load a model" msgstr "Laad een model" # AI Translated -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "ZIP-archief importeren" # AI Translated -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Laad modellen uit een ZIP-archief" msgid "Import Configs" @@ -8552,6 +8566,10 @@ msgstr "Huidig printbed aanpassen" msgid "The %s nozzle can not print %s." msgstr "Het %s-mondstuk kan %s niet printen." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Het printen van filament met gemengde kleur op een printer met één extruder vereist frequente filamentwissels en spoelbeurten, wat het afval en het risico op verstopping van het mondstuk of de afvalgoot aanzienlijk kan vergroten." + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8695,6 +8713,26 @@ msgstr "Synchroniseer filamentlijst vanuit AMS" msgid "Set filaments to use" msgstr "Stel filamenten in om te gebruiken" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Gemengd filament toevoegen" + +# AI Translated +msgid "Mixed Filament" +msgstr "Gemengd filament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Laatste gemengde filament verwijderen" + +# AI Translated +msgid "Add mixed filament" +msgstr "Gemengd filament toevoegen" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Het gemengde filament bevat ongeldige of niet-overeenkomende componenten. Bewerk de betrokken items opnieuw." + msgid "Search plate, object and part." msgstr "Zoek plaat, object en onderdeel." @@ -8702,6 +8740,18 @@ msgstr "Zoek plaat, object en onderdeel." msgid "Pellets" msgstr "Pellets" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Het gemengde filament bevat ongeldige componentverwijzingen" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Bewerken / Verwijderen / Samenvoegen" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Het gemengde doelfilament gebruikt dit fysieke filament als component. Bij het samenvoegen wordt dit fysieke filament verwijderd en kan het gemengde filament ongeldig worden. Doorgaan?" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8860,8 +8910,14 @@ msgstr "Controleer of de G-codes in deze presets veilig zijn om schade aan de ma msgid "Customized Preset" msgstr "Aangepaste voorinstelling" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Naam van componenten in step-bestand is niet UTF8-formaat!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Naam van componenten in step-bestand is niet UTF-8-formaat!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "Vanwege niet-ondersteunde tekstcodering kunnen er onjuiste tekens verschijnen!" @@ -8883,10 +8939,10 @@ msgstr "Het volume van het object is 0" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Het object uit bestand %s is erg klein, en misschien in meters of inches.\n" -" Wil je schalen naar millimeters?" +"Wil je schalen naar millimeters?" msgid "Object too small" msgstr "He tobject is te klein" @@ -8903,6 +8959,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Object met meerdere onderdelen gedetecteerd" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Texturen aan filamenten koppelen" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Waarschuwing bij importeren van textuur" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Wilt u deze bestanden laden als een enkel object bestaande uit meerdere onderdelen?\n" @@ -9134,6 +9198,22 @@ msgstr "" msgid "Sync now" msgstr "Nu synchroniseren" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Het importeren van de textuur is mislukt. Het model lijkt textuurgegevens te bevatten, maar het importproces kon niet worden voltooid. Het model wordt alleen als geometrie geïmporteerd." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Textuurkleuren toepassen..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D-weergave bijwerken..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Textuurkleuren toegepast." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze laten vervallen" @@ -9271,6 +9351,17 @@ msgstr "Bewaar het geslicede bestand als:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden bekeken." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publiceren" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Het mondstuktype is niet ingesteld. Stel het mondstuk in en probeer het opnieuw." @@ -10527,6 +10618,10 @@ msgstr "Spiraalvaas" msgid "First layer filament sequence" msgstr "Eerste laag filamentvolgorde" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "De filamentlijst bevat gemengde filamenten. De aangepaste filamentvolgorde wordt niet toegepast." + msgid "By Layer" msgstr "Op laag" @@ -10554,9 +10649,6 @@ msgstr "Ga naar de website om het model te publiceren" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." -msgid "Publish" -msgstr "Publiceren" - msgid "Publish was canceled" msgstr "Het publiceren is geannuleerd" @@ -10573,6 +10665,64 @@ msgstr "Gegevens uploaden" msgid "Jump to webpage" msgstr "Ga naar de website" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Bewaar %s als" @@ -12027,12 +12177,12 @@ msgid "No modifications need to be copied." msgstr "Er hoeven geen wijzigingen te worden gekopieerd." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Parameters kopiëren" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Parameters van %s wijzigen" # AI Translated @@ -12618,33 +12768,6 @@ msgstr "Volumes reinigen voor filament wijziging" msgid "Please choose the filament colour" msgstr "Kies de filamentkleur" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Voor de native Wayland-liveview is de GStreamer GTK-videosink nodig. Installeer de gtksink-plug-in voor GStreamer en start OrcaSlicer opnieuw." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Initialiseren van de native Wayland GStreamer-videosink is mislukt. Controleer de installatie van uw GStreamer GTK-plug-in." - -# AI Translated -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Voor deze taak is Windows Media Player vereist! Wilt u 'Windows Media Player' inschakelen voor uw besturingssysteem?" - -# AI Translated -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource is niet correct geregistreerd voor het afspelen van media! Klik op Ja om het opnieuw te registreren. U krijgt twee keer een melding" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Ontbrekend BambuSource-component geregistreerd voor media afspelen! Installeer OrcaSlicer opnieuw of zoek hulp in de community." - -# AI Translated -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Er wordt een BambuSource van een andere installatie gebruikt; het afspelen van video werkt mogelijk niet correct! Klik op Ja om dit te herstellen." - -# AI Translated -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Op uw systeem ontbreken H.264-codecs voor GStreamer, die nodig zijn om video af te spelen. (Probeer de pakketten gstreamer1.0-plugins-bad of gstreamer1.0-libav te installeren en Orca Slicer opnieuw te starten.)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "De cloudagent is niet beschikbaar. Start OrcaSlicer opnieuw en probeer het nogmaals." @@ -13410,6 +13533,10 @@ msgstr "Als u toch wilt printen, kunt u de optie inschakelen via Voorkeuren / Be msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Er wordt een gemengd filament met verloop gebruikt, maar 'Sublaag met gemengde kleur' is uitgeschakeld. Het verloop wordt niet geprint." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" sequentie is ingeschakeld." @@ -13452,6 +13579,10 @@ msgstr "Verklein eventueel uw model of wijzig de huidige printinstellingen en pr msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Het filament van het afveegblok mag geen gemengd filament zijn." + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Verschillende mondstukdiameters en verschillende filamentdiameters werken mogelijk niet goed wanneer de prime toren is ingeschakeld. Dit is zeer experimenteel; ga daarom voorzichtig te werk." @@ -13843,14 +13974,12 @@ msgstr "mm of %" msgid "Other layers" msgstr "Andere lagen" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 betekent dat het filament printen op de Cool Plate SuperTack niet ondersteunt." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 betekent dat het filament het afdrukken op de Cool Plate niet ondersteunt." -# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured Cool Plate." msgstr "Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 betekent dat het filament printen op de Textured Cool Plate niet ondersteunt." @@ -15365,6 +15494,8 @@ msgstr "Laag tijd" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "De printkop ventilator wordt ingeschakeld voor lagen waarvan de geschatte printtijd korter is dan deze waarde. Ventilatorsnelheid wordt geïnterpoleerd tussen de minimale en maximale ventilatorsnelheden volgens de printtijd van de laag" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -15724,6 +15855,62 @@ msgstr "Support materiaal" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Support materiaal wordt vaak gebruikt om support en support interfaces af te drukken." +# AI Translated +msgid "Is mixed filament" +msgstr "Is gemengd filament" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Geeft aan of dit filamentslot een gemengd filament is dat uit meerdere fysieke filamenten bestaat" + +# AI Translated +msgid "Mixed filament components" +msgstr "Componenten van gemengd filament" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Door komma's gescheiden indexen van de componentfilamenten, beginnend bij 1, bijv. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Sublaagverhoudingen van gemengd filament" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Door komma's gescheiden verhoudingswaarden die samen 1.0 zijn, bijv. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Verloop van gemengd filament" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Schakelt de verloopmodus in Z-richting in voor de sublagen van gemengd filament. Wanneer ingeschakeld variëren de sublaagverhoudingen lineair over de lagen." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Verloopbereik van gemengd filament" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Begin- en eindverhouding van de eerste component in de verloopmodus. Door een komma gescheiden paar, bijv. \"0.10,0.90\" betekent 10% tot 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Verloopcurve van gemengd filament" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Optionele aangepaste curve in Photoshop-stijl die de Z-voortgang koppelt aan de verhouding van de eerste component. Gecodeerd als door verticale strepen gescheiden controlepunten, in de vorm \"x,y\" (verouderd) of \"x,y,m_in,m_out\" wanneer de raaklijn moet worden overschreven (een lege waarde of \"nan\" gebruikt de PCHIP-standaard). x ligt in [0,1]; y wordt begrensd tot het ingestelde verhoudingsbereik, bijv. \"0,0.15|0.5,0.50|1,0.85\". Wanneer het veld leeg is, wordt het lineaire gradient_range gebruikt." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Verloop per onderdeel van gemengd filament" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Wanneer de verloopmodus is ingeschakeld, wordt het verloop op elk onderdeel van een montage afzonderlijk toegepast in plaats van de hele montage als één Z-bereik te behandelen." + # AI Translated msgid "Filament printable" msgstr "Filament printbaar" @@ -17162,6 +17349,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "De maximaal toegestane uitgangskracht van de Y-as" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -17172,6 +17360,7 @@ msgid "The machine bed mass load of Y axis" msgstr "De massabelasting van het machinebed op de Y-as" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -17510,8 +17699,8 @@ msgid "Reduce infill retraction" msgstr "Reduceer terugtrekken (retraction) bij vulling (infill)" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. Dat betekent dat het sijpelen niet zichtbaar is. Dit kan de retraction times voor complexe modellen verkorten en printtijd besparen, maar het segmenteren en het genereren van G-codes langzamer maken. Let op: z-hop wordt ook niet uitgevoerd in gebieden waar het terugtrekken wordt overgeslagen." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. Dat betekent dat het sijpelen niet zichtbaar is. Dit kan de retraction times voor complexe modellen verkorten en printtijd besparen, maar het segmenteren en het genereren van G-codes langzamer maken. Let op: Z-hop wordt ook niet uitgevoerd in gebieden waar het terugtrekken wordt overgeslagen." # AI Translated msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -17700,7 +17889,7 @@ msgstr "Terugtrekhoeveelheid na vegen" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "De lengte van de snelle terugtrekking na het vegen, relatief ten opzichte van de terugtreklengte.\n" @@ -17754,7 +17943,7 @@ msgstr "Wanneer het terugtrekken vóór een gereedschapswissel wordt geactiveerd msgid "Z-hop height" msgstr "Z-hop-hoogte" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Wanneer er een terugtrekking (retraction) is, wordt het mondstuk een beetje opgetild om ruimte te creëren tussen het mondstuk en de print. Dit voorkomt dat het mondstuk de print raakt bij verplaatsen. Het gebruik van spiraallijnen om Z op te tillen kan stringing voorkomen." msgid "Z-hop lower boundary" @@ -18947,6 +19136,14 @@ msgstr "" "\n" "Als u hieronder een waarde instelt bij de terugtrekhoeveelheid vóór het vegen, wordt de overtollige terugtrekking vóór het vegen uitgevoerd; anders gebeurt dat erna." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Sublaag met gemengde kleur" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Schakelt het opsplitsen in sublagen met gemengde kleur in. Wanneer ingeschakeld worden lagen die filamenten met gemengde kleur bevatten opgesplitst in sublagen om kleurmengeffecten te bereiken." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "De veegtoren kan worden gebruikt om resten op het mondstuk te verwijderen en de druk in het mondstuk te stabiliseren om uiterlijke gebreken bij het printen van objecten te voorkomen." @@ -19764,7 +19961,7 @@ msgid "Allow 3MF with newer version to be sliced." msgstr "Sta toe dat een 3MF met een nieuwere versie wordt geslicet." msgid "Current Z-hop" -msgstr "Huidige z-hop" +msgstr "Huidige Z-hop" # AI Translated msgid "Contains Z-hop present at the beginning of the custom G-code block." @@ -20213,6 +20410,10 @@ msgstr "Het meshen van een modelbestand is mislukt of er is geen geldige vorm." msgid "The supplied file couldn't be read because it's empty." msgstr "Het opgegeven bestand kon niet worden gelezen omdat het leeg is." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "De bestandsindeling is niet compatibel en kan niet worden gelezen." + # AI Translated msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Onbekende bestandsindeling: het invoerbestand moet de extensie .stl, .obj of .amf(.xml) hebben." @@ -21801,19 +22002,19 @@ msgstr "Alleen printers met wijzigingen in printer-, filament- en proces presets msgid "Only display the filament names with changes to filament presets." msgstr "Geef alleen de filamentnamen weer met wijzigingen in filament presets." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Alleen printernamen met gebruikersprinter presets worden weergegeven en elke preset die je kiest, wordt als zip geëxporteerd." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Alleen de filamentnamen met gebruikers presets worden weergegeven, \n" "en alle gebruikers presets in elke filamentnaam die u selecteert, worden geëxporteerd als zip-bestand." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Alleen printernamen met gewijzigde proces presets worden weergegeven, \n" "en alle gebruikersproces presets in elke printernaam die u selecteert, worden als zip geëxporteerd." @@ -22068,7 +22269,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "We hebben informatie nodig om de oorzaak van het probleem te achterhalen. Raadpleeg de wikipagina voor een uitgebreide handleiding." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "De knop Inpakken verzamelt het projectbestand en de logboeken van de huidige sessie in een zipbestand." # AI Translated @@ -22124,7 +22325,7 @@ msgid "Stored logs" msgstr "Opgeslagen logboeken" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Pakt alle opgeslagen logboeken in een zipbestand." # AI Translated @@ -22212,7 +22413,7 @@ msgid "Authorizing..." msgstr "Autoriseren..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Fout. Kan geen API-token voor autorisatie ophalen" # AI Translated @@ -22761,8 +22962,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Slimme filamenttoewijzing inschakelen: wijs één filament aan meerdere mondstukken toe om de besparing te maximaliseren" # AI Translated -msgid "Fila Saving" -msgstr "Filamentbesparing" +msgid "File Saving" +msgstr "Bestand opslaan" # AI Translated msgid "Don't remind me again" @@ -23122,6 +23323,15 @@ msgstr "Deze actie kan niet ongedaan worden gemaakt. Doorgaan?" msgid "Skipping objects." msgstr "Objecten worden overgeslagen." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Selecteer filament" @@ -23217,6 +23427,9 @@ msgstr "Nu opnieuw starten" msgid "NO RAMMING AT ALL" msgstr "HELEMAAL GEEN RAMMING" +msgid "s" +msgstr "s" + # AI Translated msgid "Volumetric speed" msgstr "Volumetrische snelheid" @@ -23883,6 +24096,45 @@ msgstr "" "Kromtrekken voorkomen\n" "Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Voor de native Wayland-liveview is de GStreamer GTK-videosink nodig. Installeer de gtksink-plug-in voor GStreamer en start OrcaSlicer opnieuw." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Initialiseren van de native Wayland GStreamer-videosink is mislukt. Controleer de installatie van uw GStreamer GTK-plug-in." + +# AI Translated +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Voor deze taak is Windows Media Player vereist! Wilt u 'Windows Media Player' inschakelen voor uw besturingssysteem?" + +# AI Translated +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource is niet correct geregistreerd voor het afspelen van media! Klik op Ja om het opnieuw te registreren. U krijgt twee keer een melding" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Ontbrekend BambuSource-component geregistreerd voor media afspelen! Installeer OrcaSlicer opnieuw of zoek hulp in de community." + +# AI Translated +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Er wordt een BambuSource van een andere installatie gebruikt; het afspelen van video werkt mogelijk niet correct! Klik op Ja om dit te herstellen." + +# AI Translated +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Op uw systeem ontbreken H.264-codecs voor GStreamer, die nodig zijn om video af te spelen. (Probeer de pakketten gstreamer1.0-plugins-bad of gstreamer1.0-libav te installeren en Orca Slicer opnieuw te starten.)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Filamentbesparing" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index e8acc62a9b..3d7fb083ef 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <<tlumaczeniebs@gmail.com>>\n" "Language-Team: \n" @@ -3012,6 +3012,10 @@ msgstr "Edytuj" msgid "Merge with" msgstr "Scal z" +# AI Translated +msgid "Decompose Color" +msgstr "Rozłóż kolor" + msgid "Delete this filament" msgstr "Usuń ten filament" @@ -3319,6 +3323,10 @@ msgstr "Złożenie" msgid "Merge parts to an object" msgstr "Scal części w obiekt" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Użycie zmiennej wysokości warstwy razem z podwarstwą mieszanego koloru może pogorszyć jakość mieszania kolorów." + # AI Translated msgid "Add layers" msgstr "Dodaj warstwy" @@ -4907,7 +4915,7 @@ msgstr "" "\n" "Wartość zostanie zresetowana do 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Alternatywna dodatkowa ściana działa tylko wtedy, gdy jest wyłączona opcja „zapewnij stałą grubość pionowej powłoki”." msgid "" @@ -4953,7 +4961,7 @@ msgstr "" "NIE - Zachowaj Niezależną wysokość warstwy podpory" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height musi być mniejsza niż wysokość warstwy.\n" @@ -4962,7 +4970,7 @@ msgstr "" # AI Translated #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Głębokość blokady powinna być mniejsza niż głębokość skóry.\n" @@ -5005,6 +5013,10 @@ msgstr "" "Tak - Zmień te ustawienia automatycznie i włącz tryb Wazy\n" "Nie - Zrezygnuj tym razem z używania trybu Wazy" +# AI Translated +msgid "N/A" +msgstr "Nie dotyczy" + msgid "Printing" msgstr "Drukowanie" @@ -5472,10 +5484,6 @@ msgstr "Nieprawidłowy wzorzec. Użyj N, N#K lub listy rozdzielonej przecinkami msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Nieprawidłowy format. Oczekiwano formatu wektorowego: „%1%”" -# AI Translated -msgid "N/A" -msgstr "Nie dotyczy" - # AI Translated msgid "System agents" msgstr "Agenci systemowi" @@ -6461,16 +6469,22 @@ msgstr "Zapisz projekt jako" msgid "Save current project as" msgstr "Zapisz bieżący projekt jako" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuj 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Wczytaj model" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importuj archiwum ZIP" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Wczytaj modele zawarte w archiwum ZIP" msgid "Import Configs" @@ -8030,6 +8044,10 @@ msgstr "Dostosuj bieżący stół" msgid "The %s nozzle can not print %s." msgstr "Dysza %s nie może drukować %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Drukowanie filamentu o mieszanym kolorze na drukarce z jednym ekstruderem wymaga częstych zmian filamentu i płukania, co może znacznie zwiększyć ilość odpadów oraz ryzyko zatkania dyszy lub rynny na odpady." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Mieszanie %1% z %2% podczas druku nie jest zalecane.\n" @@ -8156,12 +8174,44 @@ msgstr "Synchronizuj listę filamentów z AMS" msgid "Set filaments to use" msgstr "Wybierz filamenty do użycia" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Dodaj filament mieszany" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filament mieszany" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Usuń ostatni filament mieszany" + +# AI Translated +msgid "Add mixed filament" +msgstr "Dodaj filament mieszany" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Filament mieszany ma nieprawidłowe lub niezgodne składniki. Proszę ponownie edytować odpowiednie pozycje." + msgid "Search plate, object and part." msgstr "Szukaj stołu, obiektu i części." msgid "Pellets" msgstr "Granulat" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Filament mieszany ma uszkodzone odwołania do składników" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Edytuj / Usuń / Scal" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Docelowy filament mieszany używa tego fizycznego filamentu jako składnika. Scalenie usunie ten fizyczny filament i może unieważnić filament mieszany. Kontynuować?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Po zakończeniu operacji projekt %s zostanie zamknięty i zostanie utworzony nowy projekt." @@ -8309,8 +8359,14 @@ msgstr "Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zap msgid "Customized Preset" msgstr "Dostosowany profil" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF8!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "Nazwa może zawierać nieczytelne znaki!" @@ -8331,10 +8387,10 @@ msgstr "Objętość tego obiektu wynosi zero" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Obiekt z pliku %s jest zbyt mały i możliwe, że jest określony w metrach lub calach.\n" -" Czy przeskalować na milimetry?" +"Czy przeskalować na milimetry?" msgid "Object too small" msgstr "Zbyt mały obiekt" @@ -8351,6 +8407,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Wykryto obiekt składający się z wielu części" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Dopasowywanie tekstur do filamentów" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Ostrzeżenie importu tekstury" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Czy wczytać te pliki jako pojedynczy obiekt składający się z wielu części?\n" @@ -8579,6 +8643,22 @@ msgstr "" msgid "Sync now" msgstr "Synchronizuj teraz" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Import tekstury nie powiódł się. Model zdaje się zawierać dane tekstury, ale nie udało się ukończyć procesu importu. Model zostanie zaimportowany wyłącznie jako geometria." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Stosowanie kolorów tekstury..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Aktualizowanie widoku 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Zastosowano kolory tekstury." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Można zachować zmodyfikowane profile w nowym projekcie lub je odrzucić." @@ -8711,6 +8791,17 @@ msgstr "Zapisz plik po wykonaniu cięcia jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Plik %s został wysłany do pamięci drukarki i można go obejrzeć na urządzeniu." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Opublikuj" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nie ustawiono typu dyszy Wprowadź ustawienia dyszy i spróbuj ponownie." @@ -9922,6 +10013,10 @@ msgstr "Tryb wazy" msgid "First layer filament sequence" msgstr "Sekwencja koloru pierwszej warstwy" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Lista filamentów zawiera filamenty mieszane. Niestandardowa kolejność filamentów nie zostanie zastosowana." + msgid "By Layer" msgstr "Wg warstwy" @@ -9949,9 +10044,6 @@ msgstr "Przejdź do strony publikacji modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Uwaga: Przygotowanie może zająć kilka minut. Proszę o cierpliwość." -msgid "Publish" -msgstr "Opublikuj" - msgid "Publish was canceled" msgstr "Publikacja została anulowana" @@ -9968,6 +10060,64 @@ msgstr "Przesyłanie danych" msgid "Jump to webpage" msgstr "Przejdź na stronę" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Zapisz %s jako" @@ -11363,12 +11513,12 @@ msgid "No modifications need to be copied." msgstr "Nie ma modyfikacji do skopiowania." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Kopiuj parametry" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Zmodyfikuj parametry %s" # AI Translated @@ -11896,30 +12046,6 @@ msgstr "Objętości płukania przy zmianie filamentu" msgid "Please choose the filament colour" msgstr "Proszę wybrać kolor filamentu" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Natywny podgląd na żywo w Wayland wymaga ujścia wideo GStreamer GTK. Zainstaluj wtyczkę gtksink dla GStreamer, a następnie uruchom ponownie OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Nie udało się zainicjować natywnego ujścia wideo GStreamer dla Wayland. Sprawdź instalację wtyczki GStreamer GTK." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Do wykonania tego zadania wymagany jest Windows Media Player! Czy włączyć „Windows Media Player” dla systemu operacyjnego?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource nie został poprawnie zarejestrowany do odtwarzania mediów! Naciśnij Tak, aby ponownie go zarejestrować. Będziesz poproszony dwa razy." - -# AI Translated -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Brak zarejestrowanego komponentu BambuSource do odtwarzania multimediów! Zainstaluj ponownie OrcaSlicer lub poszukaj pomocy w społeczności." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Jeśli używasz BambuSource z innej instalacji programu, odtwarzanie wideo może nie działać poprawnie! Naciśnij Tak, aby to naprawić." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Twój system nie posiada kodeków H.264 dla GStreamer, które są wymagane do odtwarzania wideo. (Spróbuj zainstalować pakiety gstreamer1.0-plugins-bad lub gstreamer1.0-libav, a następnie zrestartuj Orca Slicer?)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Agent chmury jest niedostępny. Uruchom ponownie OrcaSlicer i spróbuj jeszcze raz." @@ -12646,6 +12772,10 @@ msgstr "Jeśli mimo to chcesz drukować, możesz włączyć opcję w Preferencje msgid "No extrusions under current settings." msgstr "Brak ekstruzji przy obecnych ustawieniach." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Używany jest filament mieszany z gradientem, ale opcja 'Podwarstwa mieszanego koloru' jest wyłączona. Gradient nie zostanie wydrukowany." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Tryb „Wygładzony” timelapse nie jest obsługiwany, gdy włączona jest sekwencja druku „według obiektu”." @@ -12684,6 +12814,10 @@ msgstr "Może być konieczne zmniejszenie rozmiaru modelu lub zmiana bieżących msgid "Variable layer height is not supported with Organic supports." msgstr "Zmienna wysokość warstwy nie jest dostępna w przypadku podpór organicznych." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Filament wieży czyszczącej nie może być filamentem mieszanym." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Różne średnice dysz i filamentu mogą nie działać poprawnie, gdy włączona jest wieża czyszcząca. Jest to mocno eksperymentalna funkcja, więc zaleca się ostrożność." @@ -13060,8 +13194,7 @@ msgstr "mm lub %" msgid "Other layers" msgstr "Pozostałe warstwy" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Temperatura stołu dla warstw poza pierwszą. Wartość 0 oznacza, że filament nie obsługuje druku na Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14477,6 +14610,8 @@ msgstr "Czas warstwy" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Wentylator chłodzący części zostanie włączony dla warstw, których szacowany czas jest krótszy niż ta wartość. Prędkość wentylatora jest interpolowana między minimalną a maksymalną prędkością wentylatora zgodnie z czasem druku warstwy" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14787,6 +14922,62 @@ msgstr "Materiał podporowy" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Materiał podporowy jest powszechnie używany do drukowania podpór i warstw łączących podpory z modelem" +# AI Translated +msgid "Is mixed filament" +msgstr "Jest filamentem mieszanym" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Określa, czy to gniazdo filamentu jest filamentem mieszanym złożonym z kilku fizycznych filamentów" + +# AI Translated +msgid "Mixed filament components" +msgstr "Składniki filamentu mieszanego" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Rozdzielone przecinkami indeksy filamentów składowych liczone od 1, np. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Proporcje podwarstw filamentu mieszanego" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Rozdzielone przecinkami wartości proporcji sumujące się do 1.0, np. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradient filamentu mieszanego" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Włącza tryb gradientu w kierunku Z dla podwarstw filamentu mieszanego. Po włączeniu proporcje podwarstw zmieniają się liniowo między warstwami." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Zakres gradientu filamentu mieszanego" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Początkowa i końcowa proporcja pierwszego składnika w trybie gradientu. Para rozdzielona przecinkiem, np. \"0.10,0.90\" oznacza od 10% do 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Krzywa gradientu filamentu mieszanego" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Opcjonalna własna krzywa w stylu Photoshopa odwzorowująca postęp w osi Z na proporcję pierwszego składnika. Zapisywana jako punkty kontrolne rozdzielone pionowymi kreskami, w postaci \"x,y\" (starszy format) lub \"x,y,m_in,m_out\", gdy potrzebne jest nadpisanie stycznej (pusta wartość lub \"nan\" oznacza domyślną wartość PCHIP). x należy do [0,1]; y jest ograniczane do skonfigurowanego zakresu proporcji, np. \"0,0.15|0.5,0.50|1,0.85\". Gdy pole jest puste, używany jest liniowy gradient_range." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradient filamentu mieszanego dla każdej części" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Gdy tryb gradientu jest włączony, gradient jest stosowany do każdej części złożenia niezależnie, zamiast traktować całe złożenie jako jeden zakres Z." + msgid "Filament printable" msgstr "Filament do druku" @@ -16107,6 +16298,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Dopuszczalna maksymalna siła wyjściowa na osi Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -16117,6 +16309,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Obciążenie masowe stołu maszyny na osi Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16448,7 +16641,7 @@ msgstr "Punkty początkowe i końcowe, od obszaru cięcia do kanału wyrzutowego msgid "Reduce infill retraction" msgstr "Zmniejszanie retrakcji wypełnienia" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Nie wykonuj retrakcji, gdy ruch odbywa się całkowicie w obszarze wypełnienia. Oznacza to, że wyciek nie będzie widoczny. Może to zmniejszyć liczbę retrakcji dla skomplikowanego modelu i zaoszczędzić czas druku, ale spowolnić krojenie i generowanie G-code" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -16624,7 +16817,7 @@ msgstr "Wartość retrakcji po czyszczeniu" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Długość szybkiej retrakcji po czyszczeniu, względem długości retrakcji.\n" @@ -16671,7 +16864,7 @@ msgstr "Gdy retrakcja jest wyzwalana przed zmianą narzędzia, filament zostaje msgid "Z-hop height" msgstr "Wysokość Z-hop" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Zawsze gdy wykonana jest retrakcja, dysza jest nieco podnoszona, aby stworzyć odstęp między dyszą a wydrukiem. Zapobiega to uderzeniu dyszy w wydruk podczas przemieszczania. Użycie linii spiralnej do podniesienia Z może zapobiec powstawaniu strun" msgid "Z-hop lower boundary" @@ -17757,6 +17950,14 @@ msgstr "" "\n" "Ustawienie wartości w ilości cofania przed ustawieniem czyszczenia poniżej spowoduje wykonanie nadmiernego cofania przed czyszczeniem, w przeciwnym razie zostanie wykonane po nim." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Podwarstwa mieszanego koloru" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Włącza podział na podwarstwy mieszanego koloru. Po włączeniu warstwy zawierające filamenty o mieszanym kolorze są dzielone na podwarstwy w celu uzyskania efektu mieszania kolorów." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wieża czyszcząca może być używana do czyszczenia resztek na dyszy i stabilizacji ciśnienia w komorze wewnątrz dyszy, aby uniknąć defektów wyglądu podczas drukowania obiektów." @@ -18504,7 +18705,7 @@ msgid "Current Z-hop" msgstr "Bieżący Z-hop" msgid "Contains Z-hop present at the beginning of the custom G-code block." -msgstr "Zawiera z-hop obecny na początku bloku niestandardowego G-code" +msgstr "Zawiera Z-hop obecny na początku bloku niestandardowego G-code" msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back." msgstr "Pozycja ekstrudera na początku bloku niestandardowego G-kodu. Jeśli niestandardowy G-code przemieszcza się gdzieś indziej, powinien zostać zapisany do tej zmiennej, aby OrcaSlicer wiedział, skąd się przemieszcza, gdy odzyska kontrolę." @@ -18858,6 +19059,10 @@ msgstr "Siatkowanie pliku modelu nie powiodło się lub nie ma prawidłowego ksz msgid "The supplied file couldn't be read because it's empty." msgstr "Dostarczony plik nie mógł być odczytany, ponieważ jest pusty" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Format pliku jest niezgodny i nie można go odczytać." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .stl, .obj, .amf(.xml)." @@ -20394,19 +20599,19 @@ msgstr "Wyświetlane są jedynie drukarki ze zmienionymi profilami drukarki, fil msgid "Only display the filament names with changes to filament presets." msgstr "Wyświetlone są jedynie nazwy filamentów, które zostały zmodyfikowane w ustawieniach." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Wyświetlane są tylko nazwy drukarek z ustawieniami użytkownika, wybrany zestaw zostanie wyeksportowany jako plik zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Na liście widoczne są tylko nazwy filamentów ze zmodyfikowanymi ustawieniami, \n" "a dla każdej wybranej nazwy filamentu zostaną wyeksportowane wszystkie ustawienia jako archiwum zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Na liście widoczne są tylko nazwy drukarek ze zmodyfikowanymi ustawieniami procesu, \n" "a dla każdej wybranej nazwy drukarki zostaną wyeksportowane wszystkie \n" @@ -20653,7 +20858,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Potrzebujemy informacji do zdiagnozowania źródła problemu. Szczegółowy przewodnik znajdziesz na stronie wiki." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Przycisk Spakuj zbiera plik projektu i dzienniki bieżącej sesji do pliku zip." # AI Translated @@ -20709,7 +20914,7 @@ msgid "Stored logs" msgstr "Zapisane dzienniki" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Pakuje wszystkie zapisane dzienniki do pliku zip." # AI Translated @@ -20797,7 +21002,7 @@ msgid "Authorizing..." msgstr "Autoryzowanie..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Błąd. Nie można uzyskać tokenu API do autoryzacji" # AI Translated @@ -21259,8 +21464,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Włącz inteligentne przypisywanie filamentu: przypisz jeden filament do wielu dysz, aby zmaksymalizować oszczędności" # AI Translated -msgid "Fila Saving" -msgstr "Oszczędność fil." +msgid "File Saving" +msgstr "Zapisywanie pliku" msgid "Don't remind me again" msgstr "Nie przypominaj mi ponownie" @@ -21596,6 +21801,15 @@ msgstr "Tego działania nie będzie można cofnąć. Kontynuować?" msgid "Skipping objects." msgstr "Pomijanie obiektów." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Wybierz filament" @@ -21691,6 +21905,9 @@ msgstr "Uruchom ponownie teraz" msgid "NO RAMMING AT ALL" msgstr "BRAK WYCISKANIA" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Prędkości Przepływu" @@ -22336,6 +22553,42 @@ msgstr "" "Unikaj odkształceń\n" "Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Natywny podgląd na żywo w Wayland wymaga ujścia wideo GStreamer GTK. Zainstaluj wtyczkę gtksink dla GStreamer, a następnie uruchom ponownie OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Nie udało się zainicjować natywnego ujścia wideo GStreamer dla Wayland. Sprawdź instalację wtyczki GStreamer GTK." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Do wykonania tego zadania wymagany jest Windows Media Player! Czy włączyć „Windows Media Player” dla systemu operacyjnego?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource nie został poprawnie zarejestrowany do odtwarzania mediów! Naciśnij Tak, aby ponownie go zarejestrować. Będziesz poproszony dwa razy." + +# AI Translated +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Brak zarejestrowanego komponentu BambuSource do odtwarzania multimediów! Zainstaluj ponownie OrcaSlicer lub poszukaj pomocy w społeczności." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Jeśli używasz BambuSource z innej instalacji programu, odtwarzanie wideo może nie działać poprawnie! Naciśnij Tak, aby to naprawić." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Twój system nie posiada kodeków H.264 dla GStreamer, które są wymagane do odtwarzania wideo. (Spróbuj zainstalować pakiety gstreamer1.0-plugins-bad lub gstreamer1.0-libav, a następnie zrestartuj Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Oszczędność fil." + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 1b39d4a159..066b8b310b 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -2836,6 +2836,10 @@ msgstr "Editar" msgid "Merge with" msgstr "Mesclar com" +# AI Translated +msgid "Decompose Color" +msgstr "Decompor Cor" + msgid "Delete this filament" msgstr "Apagar este filamento" @@ -3118,6 +3122,10 @@ msgstr "Montagem" msgid "Merge parts to an object" msgstr "Mesclar peças com um objeto" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Usar altura de camada variável junto com a subcamada de cor mista pode resultar em uma mistura de cores de baixa qualidade." + msgid "Add layers" msgstr "Adicionar camadas" @@ -4641,7 +4649,7 @@ msgstr "" "\n" "O valor será redefinido para 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "A parede extra alternada não funciona bem quando a espessura vertical da casca está definida para Todos." msgid "" @@ -4687,7 +4695,7 @@ msgstr "" "NÃO — Manter a Altura da Camada de Suporte Independente" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height precisa ser menor que layer_height.\n" @@ -4695,7 +4703,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "A profundidade do travamento deve ser menor que a profundidade da textura.\n" @@ -4735,6 +4743,9 @@ msgstr "" "Sim - Alterar essas configurações e ativar o modo espiral/vaso automaticamente\n" "Não - Cancelar ativação do modo espiral" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimindo" @@ -5188,9 +5199,6 @@ msgstr "Padrão inválido. Use N, N#K, ou uma lista separa por vírgulas com #K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vetor esperado: \"%1%\"" -msgid "N/A" -msgstr "N/D" - msgid "System agents" msgstr "Agentes do sistema" @@ -6137,17 +6145,23 @@ msgstr "Salvar projeto como" msgid "Save current project as" msgstr "Salvar o projeto atual como" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Carregar um modelo" -msgid "Import Zip Archive" -msgstr "Importar Arquivo Zip" +msgid "Import ZIP Archive" +msgstr "Importar Arquivo ZIP" -msgid "Load models contained within a zip archive" -msgstr "Carregar modelos contidos em um arquivo zip" +msgid "Load models contained within a ZIP archive" +msgstr "Carregar modelos contidos em um arquivo ZIP" msgid "Import Configs" msgstr "Importar Configurações" @@ -7631,6 +7645,10 @@ msgstr "Personalizar a placa atual" msgid "The %s nozzle can not print %s." msgstr "O bico %s não pode imprimir %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Imprimir filamento de cor mista em uma impressora de extrusora única exige trocas de filamento e purgas frequentes, o que pode aumentar significativamente o desperdício e o risco de entupimento do bico ou da calha de resíduos." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Misturar %1% com %2% na impressão não é recomendado.\n" @@ -7755,12 +7773,44 @@ msgstr "Sincronizar lista de filamentos do AMS" msgid "Set filaments to use" msgstr "Definir filamentos para usar" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Adicionar Filamento Misto" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filamento Misto" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Remover o último filamento misto" + +# AI Translated +msgid "Add mixed filament" +msgstr "Adicionar filamento misto" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "O filamento misto tem componentes inválidos ou incompatíveis. Edite novamente as entradas afetadas." + msgid "Search plate, object and part." msgstr "Pesquisar placa, objeto e peça." msgid "Pellets" msgstr "Pellets" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "O filamento misto tem referências de componentes quebradas" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Editar / Excluir / Mesclar" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "O filamento misto de destino usa este filamento físico como componente. Mesclar removerá este filamento físico e poderá invalidar o filamento misto. Continuar?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Após a conclusão da sua operação, o projeto %s será encerrado e um novo projeto será criado." @@ -7897,7 +7947,13 @@ msgstr "Por favor, confirme se o G-code dentro dessas predefinições é seguro msgid "Customized Preset" msgstr "Predefinição Personalizada" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Os nomes dos componentes dentro do arquivo STEP não estão no formato UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -7919,7 +7975,7 @@ msgstr "O volume do objeto é zero" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "O objeto do arquivo %s é muito pequeno, e pode estar em metros ou polegadas.\n" "Deseja redimensioná-lo para milímetros?" @@ -7939,6 +7995,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objeto multi-peça detectado" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Associando texturas aos filamentos" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Aviso de Importação de Textura" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Carregar esses arquivos como um único objeto com múltiplas peças?\n" @@ -8146,6 +8210,22 @@ msgstr "" msgid "Sync now" msgstr "Sincronizar agora" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Falha ao importar a textura. O modelo parece conter dados de textura, mas o processo de importação não pôde ser concluído. O modelo será importado apenas como geometria." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Aplicando cores de textura..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Atualizando a visualização 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Cores de textura aplicadas." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Você pode manter as predefinições modificadas no novo projeto ou descartá-las" @@ -8277,6 +8357,17 @@ msgstr "Salvar arquivo fatiado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser visualizado na impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "O tipo de bico não está configurado. Configure o bico e tente novamente." @@ -9379,6 +9470,10 @@ msgstr "Vaso espiral" msgid "First layer filament sequence" msgstr "Sequência de filamento da primeira camada" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "A lista de filamentos contém filamentos mistos. A sequência de filamentos personalizada não terá efeito." + msgid "By Layer" msgstr "Por Camada" @@ -9406,9 +9501,6 @@ msgstr "Ir para a página web de publicação de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: A preparação pode levar vários minutos. Por favor, seja paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "Publicação cancelada" @@ -9424,6 +9516,64 @@ msgstr "Enviando dados" msgid "Jump to webpage" msgstr "Ir para a página web" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salvar %s como" @@ -10740,11 +10890,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Nenhuma modificação precisa ser copiada." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Copiar parâmetros" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Modificar parâmetros de %s" #, c-format, boost-format @@ -11255,27 +11405,6 @@ msgstr "Volumes de purga para troca de filamento" msgid "Please choose the filament colour" msgstr "Escolha a cor do filamento" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "A visualização ao vivo nativa do Wayland requer o receptor de vídeo GTK do GStreamer. Instale o plugin gtksink para GStreamer e reinicie o OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Falha ao inicializar o receptor de vídeo nativo do Wayland GStreamer. Verifique a instalação do plugin GStreamer GTK." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "O Windows Media Player é necessário para esta tarefa! Você quer habilitar o 'Windows Media Player' para seu sistema operacional?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource não foi registrado corretamente para reprodução de mídia! Pressione Sim para registrá-lo novamente. Você será promovido duas vezes" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Componente BambuSource registrado para reprodução de mídia não encontrado! Por favor, reinstale o OrcaSlicer ou procure ajuda da comunidade." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Usando um BambuSource de uma instalação diferente, a reprodução de vídeo pode não funcionar corretamente! Pressione Sim para consertar." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Seu sistema não possui codecs H.264 para o GStreamer, que são necessários para reproduzir vídeos. (Tente instalar os pacotes gstreamer1.0-plugins-bad ou gstreamer1.0-libav e depois reinicie o OrcaSlicer?)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "O agente na nuvem não está disponível. Reinicie o OrcaSlicer e tente novamente." @@ -11973,6 +12102,10 @@ msgstr "Se ainda assim desejar imprimir, você pode ativar a opção em Preferê msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Um filamento misto com gradiente está em uso, mas 'Subcamada de cor mista' está desativado. O gradiente não será impresso." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "O modo suave do timelapse não é suportado quando a sequência \"por objeto\" está ativada." @@ -12009,6 +12142,10 @@ msgstr "Você pode querer reduzir o tamanho do seu modelo ou alterar as configur msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes Orgânicos." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "O filamento da torre de purga não pode ser um filamento misto." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não funcionar bem quando a torre de purga estiver habilitada. É muito experimental, então prossiga com cautela." @@ -12355,7 +12492,7 @@ msgstr "mm ou %" msgid "Other layers" msgstr "Outras camadas" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Essa é a temperatura da mesa para camadas exceto a inicial. O valor 0 significa que o filamento não suporta a impressão na Placa Fria SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13702,6 +13839,8 @@ msgstr "Tempo da camada" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "A ventoinha de resfriamento de peças será ativado para camadas cujo tempo estimado seja mais curto que esse valor. A velocidade da ventoinha é interpolada entre as velocidades mínima e máxima da ventoinha de acordo com o tempo de impressão da camada." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14007,6 +14146,62 @@ msgstr "Material de suporte" msgid "Support material is commonly used to print supports and support interfaces." msgstr "O material de suporte é comumente usado para imprimir suportes e interfaces de suporte." +# AI Translated +msgid "Is mixed filament" +msgstr "É filamento misto" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Define se este slot de filamento é um filamento misto composto por vários filamentos físicos" + +# AI Translated +msgid "Mixed filament components" +msgstr "Componentes do filamento misto" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Índices (começando em 1) dos filamentos componentes, separados por vírgulas; ex.: \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Proporções de subcamada do filamento misto" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Valores de proporção separados por vírgulas cuja soma seja 1.0; ex.: \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradiente do filamento misto" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Ativa o modo de gradiente na direção Z para as subcamadas do filamento misto. Quando ativado, as proporções das subcamadas variam linearmente ao longo das camadas." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Faixa do gradiente do filamento misto" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Proporções inicial e final do primeiro componente no modo de gradiente. Par separado por vírgula; ex.: \"0.10,0.90\" significa de 10% a 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Curva do gradiente do filamento misto" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Curva personalizada opcional, no estilo do Photoshop, que mapeia o progresso em Z para a proporção do primeiro componente. Codificada como pontos de controle separados por barras verticais, no formato \"x,y\" (legado) ou \"x,y,m_in,m_out\" quando é necessário substituir a tangente (um valor vazio ou \"nan\" usa o padrão PCHIP). x está em [0,1]; y é limitado à faixa de proporção configurada; ex.: \"0,0.15|0.5,0.50|1,0.85\". Quando vazio, o gradient_range linear é usado." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradiente por peça do filamento misto" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Quando o modo de gradiente está ativado, aplica o gradiente a cada peça de uma montagem de forma independente, em vez de tratar toda a montagem como uma única faixa Z." + msgid "Filament printable" msgstr "Filamento imprimível" @@ -15243,6 +15438,8 @@ msgstr "Força máxima do eixo Y" msgid "The allowed maximum output force of Y axis" msgstr "A força máxima de saída permitida do eixo Y" +# AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15253,6 +15450,7 @@ msgid "The machine bed mass load of Y axis" msgstr "A carga de massa da mesa do equipamento no eixo Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15565,7 +15763,7 @@ msgstr "Os pontos de início e fim que vão da área do cortador até a calha de msgid "Reduce infill retraction" msgstr "Reduzir retração durante o preenchimento" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "Não retrair quando o movimento está completamente na área de preenchimento. Isso significa que o vazamento não pode ser visto. Isso pode reduzir o número de retratações para modelos complexos e economizar tempo de impressão, mas torna a geração de fatiamento e G-code mais lenta. Note que o Z-Hop também não é realizado em áreas onde a retração é omitida." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15730,7 +15928,7 @@ msgstr "Quantidade de retração depois da limpeza" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Este é o comprimento da retração rápida antes de uma limpeza, em relação ao comprimento da retração.\n" @@ -15766,18 +15964,16 @@ msgstr "Retração longa na troca de extrusora" msgid "Retraction distance when extruder change" msgstr "Distância de retração na troca de extrusora" -# AI Translated msgid "Retraction Length (Toolchange)" -msgstr "Comprimento da retração (Troca de ferramenta)" +msgstr "Comprimento da Retração (Troca de ferramenta)" -# AI Translated msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." msgstr "Quando a retração é acionada antes da troca de ferramenta, o filamento é puxado de volta na quantidade especificada (o comprimento é medido no filamento bruto, antes de entrar na extrusora)." msgid "Z-hop height" msgstr "Altura de Z-hop" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Sempre que há uma retração, o bico é levantado um pouco para criar folga entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linhas em espiral para levantar Z pode evitar stringing." msgid "Z-hop lower boundary" @@ -15867,9 +16063,8 @@ msgstr "Comprimento extra na retração" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Quando a retração é compensada após o movimento de deslocamento, a extrusora empurrará essa quantidade adicional de filamento. Esta configuração é raramente necessária." -# AI Translated msgid "Extra length on restart (Toolchange)" -msgstr "Comprimento extra na retração (Troca de ferramenta)" +msgstr "Comprimento extra no reinício (Troca de ferramenta)" msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quando a retração é compensada após a troca de ferramenta, a extrusora empurrará essa quantidade adicional de filamento." @@ -16279,13 +16474,11 @@ msgstr "Troca de ferramenta na torre de purga" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Força o cabeçote de impressão a se deslocar até a torre de purga antes de emitir o comando de troca de ferramenta (Tx). Relevante apenas para impressoras com múltiplas extrusoras (múltiplos cabeçotes de impressão) que utilizam uma torre de purga Tipo 2. Por padrão, o Orca ignora o deslocamento em máquinas com múltiplos cabeçotes de impressão, pois o firmware gerencia a troca do cabeçote, o que pode resultar na emissão do comando Tx acima da peça impressa. Habilite esta opção se desejar que a troca de ferramenta seja sempre emitida acima da torre de purga." -# AI Translated msgid "Wait for temperature on wipe tower" msgstr "Aguardar a temperatura na torre de purga" -# AI Translated msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." -msgstr "Pega a nova ferramenta sem esperar que ela atinja a temperatura de impressão, desloca-se até a torre de purga e aguarda a temperatura ali, logo antes de purgar. O vazamento causado pelo aquecimento cai na torre em vez do modelo, e o deslocamento acontece durante o aquecimento. Relevante apenas para impressoras multiextrusora (multicabeça) que usam uma torre de purga do tipo 2. O firmware ou a macro de troca de ferramenta não devem aguardar a temperatura por conta própria. Quando desativado, a espera de temperatura é emitida logo após o comando de troca de ferramenta." +msgstr "Pega a nova ferramenta sem esperar que ela atinja a temperatura de impressão, desloca-se até a torre de purga e aguarda a temperatura ali, logo antes de purgar. O vazamento causado pelo aquecimento cai na torre em vez do modelo, e o deslocamento acontece junto com o aquecimento. Relevante apenas para impressoras multiextrusora (multicabeça) que usam uma torre de purga do Tipo 2. O firmware ou a macro de troca de ferramenta não devem aguardar a temperatura por conta própria. Quando desativado, a espera de temperatura é emitida logo após o comando de troca de ferramenta." msgid "No sparse layers (beta)" msgstr "Sem camadas esparsas (beta)" @@ -16808,6 +17001,14 @@ msgstr "" "\n" "Definir um valor na configuração de quantidade de retração antes da limpeza abaixo executará qualquer retração em excesso antes da limpeza, caso contrário, será realizada após." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Subcamada de cor mista" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Ativa a divisão em subcamadas de cor mista. Quando ativado, as camadas que contêm filamentos de cor mista são divididas em subcamadas para obter efeitos de mistura de cores." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "A torre de purga pode ser usada para limpar o resíduo no bico e estabilizar a pressão na câmara dentro do bico, a fim de evitar defeitos de aparência ao imprimir objetos." @@ -17864,6 +18065,10 @@ msgstr "A geração da malha do arquivo do modelo falhou ou não há forma váli msgid "The supplied file couldn't be read because it's empty." msgstr "O arquivo fornecido não pôde ser lido porque está vazio." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "O formato do arquivo é incompatível e não pode ser lido." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .stl, .obj, .amf(.xml)." @@ -19315,19 +19520,19 @@ msgstr "Apenas impressoras com alterações nas predefinições de impressora, f msgid "Only display the filament names with changes to filament presets." msgstr "Exibir apenas os nomes dos filamentos com alterações nas predefinições de filamento." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Apenas os nomes das impressoras com predefinições de impressora do usuário serão exibidos, e cada predefinição escolhida será exportada como um arquivo zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Apenas os nomes dos filamentos com predefinições de filamento do usuário serão exibidos, \n" "e todas as predefinições de filamento do usuário em cada nome de filamento selecionadas serão exportadas como um arquivo zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Apenas os nomes das impressoras com predefinições de processo alterados serão exibidos, \n" "e todas os predefinições de processo do usuário em cada nome de impressora selecionadas serão exportados como um arquivo zip." @@ -19556,7 +19761,7 @@ msgstr "Copiar informações do sistema para a área de transferência" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Precisamos de informações para diagnosticar a origem do problema. Consulte a página da wiki para obter um guia detalhado." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "O botão \"Empacotar\" reúne o arquivo do projeto e os logs da sessão atual em um arquivo ZIP." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -19598,7 +19803,7 @@ msgstr "Nível de log" msgid "Stored logs" msgstr "Logs armazenados" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Compacta todos os logs armazenados em um arquivo ZIP." msgid "Profiles" @@ -19665,7 +19870,7 @@ msgstr "Tipo de impressora não encontrado, selecione manualmente." msgid "Authorizing..." msgstr "Autorizando…" -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Erro. ​​Não foi possível obter o token de API para autorização" msgid "Could not parse server response." @@ -20111,8 +20316,9 @@ msgstr "Removido" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Ativar atribuição inteligente de filamento: Atribui um filamento a vários bicos para maximizar a economia" -msgid "Fila Saving" -msgstr "Econo Filamento" +# AI Translated +msgid "File Saving" +msgstr "Salvamento de Arquivo" msgid "Don't remind me again" msgstr "Não me avise novamente" @@ -20394,6 +20600,15 @@ msgstr "Esta ação não pode ser desfeita. Continuar?" msgid "Skipping objects." msgstr "Ignorando objetos." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Selecionar Filamento" @@ -20471,6 +20686,9 @@ msgstr "Reiniciar Agora" msgid "NO RAMMING AT ALL" msgstr "SEM NENHUM MOLDEAMENTO" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Velocidade volumétrica" @@ -21047,6 +21265,36 @@ msgstr "" "Evitar empenamento\n" "Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "A visualização ao vivo nativa do Wayland requer o receptor de vídeo GTK do GStreamer. Instale o plugin gtksink para GStreamer e reinicie o OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Falha ao inicializar o receptor de vídeo nativo do Wayland GStreamer. Verifique a instalação do plugin GStreamer GTK." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "O Windows Media Player é necessário para esta tarefa! Você quer habilitar o 'Windows Media Player' para seu sistema operacional?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource não foi registrado corretamente para reprodução de mídia! Pressione Sim para registrá-lo novamente. Você será promovido duas vezes" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Componente BambuSource registrado para reprodução de mídia não encontrado! Por favor, reinstale o OrcaSlicer ou procure ajuda da comunidade." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Usando um BambuSource de uma instalação diferente, a reprodução de vídeo pode não funcionar corretamente! Pressione Sim para consertar." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Seu sistema não possui codecs H.264 para o GStreamer, que são necessários para reproduzir vídeos. (Tente instalar os pacotes gstreamer1.0-plugins-bad ou gstreamer1.0-libav e depois reinicie o OrcaSlicer?)" + +#~ msgid "N" +#~ msgstr "N" + +#~ msgid "g" +#~ msgstr "g" + +#~ msgid "Fila Saving" +#~ msgstr "Econo Filamento" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2372471707..b5e6baffe0 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg <andylg@yandex.ru>\n" @@ -2911,6 +2911,10 @@ msgstr "Правка" msgid "Merge with" msgstr "Объединить с" +# AI Translated +msgid "Decompose Color" +msgstr "Разложить цвет" + msgid "Delete this filament" msgstr "Удалить материал" @@ -3222,6 +3226,10 @@ msgstr "Сборка" msgid "Merge parts to an object" msgstr "Сборка моделей" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Использование переменной высоты слоя вместе с подслоем смешанного цвета может ухудшить качество смешивания цветов." + # Запись в истории действий msgid "Add layers" msgstr "Добавление слоёв" @@ -4780,7 +4788,7 @@ msgstr "" "\n" "Значение будет сброшено до 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Чередующаяся дополнительная стенка не работает, если для «Сохранение толщины вертикальной оболочки» установлено значение «Все»." msgid "" @@ -4833,7 +4841,7 @@ msgstr "" "Нет – отключить черновую башню" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "Начальная высота не должна превышать высоту слоя.\n" @@ -4841,7 +4849,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Перекрытие должно быть меньше внутренней оболочки.\n" @@ -4883,6 +4891,11 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "Использовать эти настройки и режим вазы?" +# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо +# символов +msgid "N/A" +msgstr "–" + msgid "Printing" msgstr "Печать" @@ -5352,11 +5365,6 @@ msgstr "Недопустимый шаблон. Используйте N, N#K и msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Недопустимый формат. Ожидаемый векторный формат: \"%1%\"" -# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо -# символов -msgid "N/A" -msgstr "–" - msgid "System agents" msgstr "Системные агенты" @@ -6370,16 +6378,22 @@ msgstr "Сохранить проект как" msgid "Save current project as" msgstr "Сохранить текущий проект как" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Загрузка модели" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Импорт ZIP-архива" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Загрузка моделей, содержащихся в ZIP-архиве" msgid "Import Configs" @@ -7891,6 +7905,10 @@ msgstr "Настроить стол" msgid "The %s nozzle can not print %s." msgstr "Внимание: «%s» экструдер не может печатать %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Печать материала смешанного цвета на принтере с одним экструдером требует частой смены материала и прочистки, что может значительно увеличить количество отходов и риск засорения сопла или жёлоба для отходов." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Совмещение %1% с %2% при печати не рекомендуется.\n" @@ -8021,12 +8039,44 @@ msgstr "Синхронизировать материалы" msgid "Set filaments to use" msgstr "Выбрать материал" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Добавить смешанный материал" + +# AI Translated +msgid "Mixed Filament" +msgstr "Смешанный материал" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Удалить последний смешанный материал" + +# AI Translated +msgid "Add mixed filament" +msgstr "Добавить смешанный материал" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "У смешанного материала недопустимые или несовпадающие компоненты. Пожалуйста, отредактируйте затронутые записи заново." + msgid "Search plate, object and part." msgstr "Поиск стола, модели или части..." msgid "Pellets" msgstr "Гранулы" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "У смешанного материала нарушены ссылки на компоненты" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Изменить / Удалить / Объединить" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Целевой смешанный материал использует этот физический материал в качестве компонента. Объединение удалит этот физический материал и может сделать смешанный материал недействительным. Продолжить?" + # Порядок слов сильно зависит от контекста; не могу воспроизвести в интерфейсе. По идее, выводится при bool Sidebar::is_new_project_in_gcode3mf(), но что-либо менять в нарезанном .gcode.3mf вообще нельзя #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8168,8 +8218,14 @@ msgstr "Во избежание повреждения принтера убед msgid "Customized Preset" msgstr "Пользовательский профиль" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Имена компонентов внутри файла STEP не в формате UTF8." +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Имена компонентов внутри файла STEP не в формате UTF-8." msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "Из-за неподдерживаемой кодировки в названии могут присутствовать ошибочные символы." @@ -8190,7 +8246,7 @@ msgstr "Объём модели равен нулю" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Модель из файла %s слишком мала. Возможно, её размеры \n" "в метрах или дюймах. Внутренней единицей программы \n" @@ -8211,6 +8267,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Обнаружена модель, состоящая из нескольких частей" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Сопоставление текстур с материалами" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Предупреждение при импорте текстуры" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Загрузить эти файлы как единую модель, состоящую из нескольких частей?\n" @@ -8425,6 +8489,22 @@ msgstr "" msgid "Sync now" msgstr "Синхронизировать" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Не удалось импортировать текстуру. Похоже, модель содержит данные текстуры, но завершить импорт не удалось. Модель будет импортирована только как геометрия." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Применение цветов текстуры..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Обновление 3D-вида..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Цвета текстуры применены." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Вы можете перенести сделанные изменения в новый проект или отказаться от их сохранения" @@ -8556,6 +8636,17 @@ msgstr "Сохранить нарезанный файл как:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Опубликовать" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Не указан тип сопла. Укажите его и попробуйте ещё раз." @@ -9671,6 +9762,10 @@ msgstr "Режим вазы" msgid "First layer filament sequence" msgstr "Очерёдность материалов на первом слое" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Список материалов содержит смешанные материалы. Пользовательская последовательность материалов не будет применена." + msgid "By Layer" msgstr "Послойно" @@ -9698,9 +9793,6 @@ msgstr "Перейти на веб-страницу публикации мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения." -msgid "Publish" -msgstr "Опубликовать" - msgid "Publish was canceled" msgstr "Публикация была отменена" @@ -9716,6 +9808,64 @@ msgstr "Отправка данных" msgid "Jump to webpage" msgstr "Перейти на страницу" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Сохранить %s как" @@ -11072,11 +11222,11 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Перенос изменений не требуется." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Копировать настройки" #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Изменить настройки %s" #, c-format, boost-format @@ -11586,27 +11736,6 @@ msgstr "Объёмы прочистки при смене материала" msgid "Please choose the filament colour" msgstr "Изменение цвета" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Для нативного отображения трансляции в Wayland требуется gtksink (плагин для GStreamer). Установите необходимый пакет плагинов и перезапустите OrcaSlicer." - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Не удалось запустить нативную трансляцию GSteramer через Wayland. Проверьте наличие установленного пакета плагинов GStreamer." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Для этой задачи требуется Windows Media Player! Хотите включить его в своей ОС?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "Компонент BambuSource неправильно зарегистрирован для воспроизведения медиафайлов! Нажмите «Да», чтобы повторно зарегистрировать его" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Отсутствует компонент BambuSource для воспроизведения медиа. Переустановите OrcaSlicer или обратитесь за помощью к сообществу." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "При использовании компонентов BambuSource из другого инсталлятора, воспроизведение видео может работать некорректно! Нажмите «Да», чтобы исправить это." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "В вашей системе отсутствуют кодеки H.264 для GStreamer, которые необходимы для воспроизведения видео (попробуйте установить пакеты gstreamer1.0-plugins-bad или gstreamer1.0-libav, а затем перезапустить Orca Slicer)." - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Облачный агент недоступен. Перезапустите OrcaSlicer и повторите попытку." @@ -12303,6 +12432,10 @@ msgstr "Если вас это не пугает, эту проверку мож msgid "No extrusions under current settings." msgstr "При текущих настройках экструзия отсутствует." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Используется смешанный материал с градиентом, но параметр «Подслой смешанного цвета» отключён. Градиент не будет напечатан." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Плавный режим таймлапса не поддерживается, когда включена последовательность печати моделей по очереди." @@ -12341,6 +12474,10 @@ msgstr "Попробуйте уменьшить размер модели или msgid "Variable layer height is not supported with Organic supports." msgstr "Функция переменной высоты слоя несовместима с органическим стилем древовидных поддержек." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Материал черновой башни не может быть смешанным материалом." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Совместное использование черновой башни с разными диаметрами сопел и прутков может привести к некорректной нарезке при включённой черновой башне. Этот метод работы экспериментальный, поэтому будьте осторожны при использовании." @@ -12694,7 +12831,7 @@ msgstr "мм или %" msgid "Other layers" msgstr "Основная" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Температура стола для всех остальных слоёв. 0 – материал не поддерживает это покрытие." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14159,6 +14296,8 @@ msgstr "Время слоя" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Вентилятор охлаждения моделей будет включён для слоёв, расчётное время которых меньше этого значения. Скорость вентилятора интерполируется между минимальной и максимальной скоростями зависимости от времени печати слоя." +# AI Translated +msgctxt "second" msgid "s" msgstr "с" @@ -14488,6 +14627,62 @@ msgstr "Материал поддержки" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Обычно используется для печати поддержки и связующего слоя (интерфейса)." +# AI Translated +msgid "Is mixed filament" +msgstr "Является смешанным материалом" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Определяет, является ли этот слот материала смешанным материалом, состоящим из нескольких физических материалов" + +# AI Translated +msgid "Mixed filament components" +msgstr "Компоненты смешанного материала" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Разделённые запятыми индексы материалов-компонентов, начиная с 1, например \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Доли подслоёв смешанного материала" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Разделённые запятыми значения долей, дающие в сумме 1.0, например \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Градиент смешанного материала" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Включает режим градиента по оси Z для подслоёв смешанного материала. При включении доли подслоёв линейно меняются от слоя к слою." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Диапазон градиента смешанного материала" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Начальная и конечная доли первого компонента в режиме градиента. Пара значений через запятую, например \"0.10,0.90\" означает от 10% до 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Кривая градиента смешанного материала" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Необязательная пользовательская кривая в стиле Photoshop, сопоставляющая прогресс по оси Z с долей первого компонента. Задаётся как контрольные точки, разделённые вертикальной чертой, в виде \"x,y\" (устаревший формат) или \"x,y,m_in,m_out\", если требуется переопределить касательную (пустое значение или \"nan\" означает использование значения PCHIP по умолчанию). x лежит в [0,1]; y ограничивается заданным диапазоном долей, например \"0,0.15|0.5,0.50|1,0.85\". Если поле пустое, вместо этого используется линейный gradient_range." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Градиент смешанного материала по частям" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Если включён режим градиента, градиент применяется к каждой части сборки отдельно, а не ко всей сборке как к единому диапазону Z." + # ??? Настройка в режиме разработчика. Должна отображаться где-то в настройках # профиля, но поиском не ищется. msgid "Filament printable" @@ -15878,6 +16073,8 @@ msgstr "Максимальное усилие оси Y" msgid "The allowed maximum output force of Y axis" msgstr "Максимально допустимое усилие по оси Y." +# AI Translated +msgctxt "Newton" msgid "N" msgstr "Н" @@ -15887,6 +16084,8 @@ msgstr "Масса стола (оси Y)" msgid "The machine bed mass load of Y axis" msgstr "Пассивная нагрузка механики оси Y массой стола." +# AI Translated +msgctxt "gram" msgid "g" msgstr "г" @@ -16223,7 +16422,7 @@ msgstr "Начальная и конечная точки траектории msgid "Reduce infill retraction" msgstr "Откат только при пересечении периметров" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "" "Отключает откат (и подъём по Z), когда перемещения совершаются полностью над заполнением (где любые подтёки, вероятно, будут скрыты). Это поможет снизить количество откатов при печати сложных моделей и немного сэкономить время, но увеличит время нарезки и генерации G-кода.\n" "\n" @@ -16401,7 +16600,7 @@ msgstr "Вторичный откат" #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Быстрый откат после очистки, выраженный в процентах от общей длины отката. В некоторых случаях позволяет значительно снизить количество «паутины».\n" @@ -16449,7 +16648,7 @@ msgstr "При срабатывании отката перед сменой и msgid "Z-hop height" msgstr "Высота подъёма" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "При каждом откате печатная голова немного приподнимается, создавая зазор между соплом и моделью. Это предотвращает столкновение сопла с моделью при перемещении. Использование спирального подъёма может помочь сократить образование \"паутины\"." msgid "Z-hop lower boundary" @@ -17660,6 +17859,14 @@ msgstr "" "\n" "Внимание: процент первичного отката будет увеличен, если длины очистки окажется недостаточно при текущей скорости отката (или из-за иных ограничений)." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Подслой смешанного цвета" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Включает разбиение на подслои смешанного цвета. При включении слои, содержащие материалы смешанного цвета, разбиваются на подслои для получения эффекта смешивания цветов." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Черновая башня – специальная структура, которая используется для прочистки сопла от остатков материала и стабилизации давления внутри сопла при смене экструдера, чтобы избежать дефектов на поверхности печатаемой модели." @@ -18818,6 +19025,10 @@ msgstr "Не удалось обнаружить форму или создат msgid "The supplied file couldn't be read because it's empty." msgstr "Невозможно прочитать файл, так как он пуст." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Формат файла несовместим и не может быть прочитан." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Неизвестный формат файла: входной файл должен иметь расширение *.stl, *.obj или *.amf(.xml)." @@ -20306,21 +20517,21 @@ msgstr "Будут отображаться только изменённые п msgid "Only display the filament names with changes to filament presets." msgstr "Будут отображаться только изменённые профили материалов." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "" "Будут отображаться только изменённые профили принтеров.\n" "Все они будут экспортированы в единый zip-файл." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Будут отображаться только изменённые профили материалов.\n" "Все они будут экспортированы в единый zip-файл." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Будут отображаться только профили принтеров с изменёнными настройками печати.\n" "Все изменённые профили настроек будут экспортированы в единый zip-файл." @@ -20560,7 +20771,7 @@ msgstr "Копировать в буфер обмена" msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide." msgstr "Эта информация требуется для диагностики проблем. Ознакомьтесь с руководством для получения подробностей." -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Нажмите «Экспорт», чтобы сохранить текущий проект и журнал сессии в ZIP-архив." msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue." @@ -20602,7 +20813,7 @@ msgstr "Уровень ведения журнала" msgid "Stored logs" msgstr "Сохранённые журналы" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Нажмите «Экспорт», чтобы упаковать все сохранённые журналы в единый ZIP-архив" msgid "Profiles" @@ -20669,7 +20880,7 @@ msgstr "Требуется указать принтер вручную" msgid "Authorizing..." msgstr "Авторизация..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Ошибка получения токена авторизации" msgid "Could not parse server response." @@ -21120,8 +21331,9 @@ msgstr "Удалено" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Включить умное назначение материалов: назначить один материал нескольким соплам для максимальной экономии" -msgid "Fila Saving" -msgstr "Экономия материала" +# AI Translated +msgid "File Saving" +msgstr "Сохранение файла" msgid "Don't remind me again" msgstr "Больше не показывать" @@ -21407,6 +21619,15 @@ msgstr "Это действие необратимо. Продолжить?" msgid "Skipping objects." msgstr "Исключение объектов." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Выбрать материал" @@ -21486,6 +21707,9 @@ msgstr "Перезапустить сейчас" msgid "NO RAMMING AT ALL" msgstr "Рэмминг отключён" +msgid "s" +msgstr "с" + # Тянется только в окно настроек рэмминга msgid "Volumetric speed" msgstr "Объёмный расход" @@ -22081,6 +22305,36 @@ msgstr "" "Предотвращение коробления материала\n" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Для нативного отображения трансляции в Wayland требуется gtksink (плагин для GStreamer). Установите необходимый пакет плагинов и перезапустите OrcaSlicer." + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Не удалось запустить нативную трансляцию GSteramer через Wayland. Проверьте наличие установленного пакета плагинов GStreamer." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Для этой задачи требуется Windows Media Player! Хотите включить его в своей ОС?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "Компонент BambuSource неправильно зарегистрирован для воспроизведения медиафайлов! Нажмите «Да», чтобы повторно зарегистрировать его" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Отсутствует компонент BambuSource для воспроизведения медиа. Переустановите OrcaSlicer или обратитесь за помощью к сообществу." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "При использовании компонентов BambuSource из другого инсталлятора, воспроизведение видео может работать некорректно! Нажмите «Да», чтобы исправить это." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "В вашей системе отсутствуют кодеки H.264 для GStreamer, которые необходимы для воспроизведения видео (попробуйте установить пакеты gstreamer1.0-plugins-bad или gstreamer1.0-libav, а затем перезапустить Orca Slicer)." + +#~ msgid "N" +#~ msgstr "Н" + +#~ msgid "g" +#~ msgstr "г" + +#~ msgid "Fila Saving" +#~ msgstr "Экономия материала" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 432000f96d..b4e3bf51bc 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3289,6 +3289,10 @@ msgstr "Redigera" msgid "Merge with" msgstr "Slå ihop med" +# AI Translated +msgid "Decompose Color" +msgstr "Dela upp färg" + # AI Translated msgid "Delete this filament" msgstr "Radera detta filament" @@ -3610,6 +3614,10 @@ msgstr "Montering" msgid "Merge parts to an object" msgstr "Slå ihop delar till ett objekt" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Att använda variabel lagerhöjd tillsammans med underlager med blandad färg kan ge sämre färgblandningskvalitet." + # AI Translated msgid "Add layers" msgstr "Lägg till lager" @@ -5279,7 +5287,7 @@ msgstr "" "Värdet kommer att återställas till 0." # AI Translated -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Alternerande extra vägg fungerar inte bra när säkerställ vertikal skaltjocklek är inställt på Alla." # AI Translated @@ -5327,7 +5335,7 @@ msgstr "" # AI Translated msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height måste vara mindre än layer_height.\n" @@ -5336,7 +5344,7 @@ msgstr "" # AI Translated #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Låsdjupet bör vara mindre än ytskiktets djup.\n" @@ -5379,6 +5387,10 @@ msgstr "" "JA -Ändra dessa inställningar och möjliggör Spiral läge automatiskt\n" "NEJ -Avbryt Spiral läge denna gång" +# AI Translated +msgid "N/A" +msgstr "Ej tillämpligt" + msgid "Printing" msgstr "Utskrift pågår" @@ -5928,10 +5940,6 @@ msgstr "Ogiltigt mönster. Använd N, N#K eller en kommaseparerad lista med valf msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ogiltligt format. Förväntat vector format: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Ej tillämpligt" - # AI Translated msgid "System agents" msgstr "Systemagenter" @@ -6964,6 +6972,12 @@ msgstr "Spara Projekt som" msgid "Save current project as" msgstr "Spara nuvarande projekt som" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importera 3MF/STL/STEP/SVG/OBJ/AMF" @@ -6971,11 +6985,11 @@ msgid "Load a model" msgstr "Ladda modell" # AI Translated -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Importera ZIP-arkiv" # AI Translated -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Läs in modeller som finns i ett ZIP-arkiv" msgid "Import Configs" @@ -8644,6 +8658,10 @@ msgstr "Anpassa aktuell platta" msgid "The %s nozzle can not print %s." msgstr "Nozzeln %s kan inte skriva ut %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Att skriva ut filament med blandad färg på en skrivare med en enda extruder kräver täta filamentbyten och rensningar, vilket kan öka spillet och risken för stopp i nozzeln eller avfallsrännan avsevärt." + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8787,6 +8805,26 @@ msgstr "Synkronisera filament listan från AMS" msgid "Set filaments to use" msgstr "Ställ in filament som ska användas" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Lägg till blandat filament" + +# AI Translated +msgid "Mixed Filament" +msgstr "Blandat filament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Ta bort det senaste blandade filamentet" + +# AI Translated +msgid "Add mixed filament" +msgstr "Lägg till blandat filament" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Det blandade filamentet har ogiltiga eller inkompatibla komponenter. Redigera de berörda posterna igen." + msgid "Search plate, object and part." msgstr "Sök platta, objekt och del." @@ -8794,6 +8832,18 @@ msgstr "Sök platta, objekt och del." msgid "Pellets" msgstr "Pellets" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Det blandade filamentet har trasiga komponentreferenser" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Redigera / Radera / Slå ihop" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Det blandade målfilamentet använder detta fysiska filament som komponent. Sammanslagningen tar bort det fysiska filamentet och kan göra det blandade filamentet ogiltigt. Fortsätt?" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8952,8 +9002,14 @@ msgstr "Bekräfta att G-koderna i dessa inställningar är säkra för att förh msgid "Customized Preset" msgstr "Anpassad inställning" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Komponent namnet i STEP filen är inte UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Komponent namnet i STEP filen är inte UTF-8 format!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "På grund av textkodning som inte stöds så kan skräptecken visas!" @@ -8974,7 +9030,7 @@ msgstr "Objektet är utan volym" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Objektets fil %s är för litet, det är kanske i meter eller inches.\n" "Skala om till millimeter?" @@ -8994,6 +9050,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objekt i flera delar har upptäckts" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Matchar texturer mot filament" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Varning vid texturimport" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Ladda dessa filer som ett enkelt objekt med multipla delar?\n" @@ -9223,6 +9287,22 @@ msgstr "" msgid "Sync now" msgstr "Synkronisera nu" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Texturimporten misslyckades. Modellen verkar innehålla texturdata, men importprocessen kunde inte slutföras. Modellen importeras endast som geometri." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Tillämpar texturfärger..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Uppdaterar 3D-vyn..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Texturfärger tillämpade." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Fortsätt med redigerings inställningarna till nytt projekt eller avfärda dem" @@ -9364,6 +9444,17 @@ msgstr "Spara beredningen som:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Filen %s har skickats till skrivarens lagringsutrymme och kan visas på skrivaren." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicera" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozzeltypen är inte angiven. Ange nozzeln och försök igen." @@ -10641,6 +10732,10 @@ msgstr "Spiral vas" msgid "First layer filament sequence" msgstr "Första lagrets filament sekvens" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Filamentlistan innehåller blandade filament. Den anpassade filamentordningen får ingen effekt." + msgid "By Layer" msgstr "Per lager" @@ -10668,9 +10763,6 @@ msgstr "Växla till modell publicerings hemsidan" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notera: Förberedelserna kan ta flera minuter. Vänligen vänta." -msgid "Publish" -msgstr "Publicera" - msgid "Publish was canceled" msgstr "Publiceringen avbröts" @@ -10687,6 +10779,64 @@ msgstr "Laddar upp data" msgid "Jump to webpage" msgstr "Växla till hemsidan" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Spara %s som" @@ -12190,12 +12340,12 @@ msgid "No modifications need to be copied." msgstr "Inga ändringar behöver kopieras." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Kopiera parametrar" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Ändra parametrar för %s" # AI Translated @@ -12783,33 +12933,6 @@ msgstr "Rensnings volym för filament byte" msgid "Please choose the filament colour" msgstr "Välj filamentfärg" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Liveview i Wayland kräver GStreamers GTK-videosink. Installera insticksmodulen gtksink för GStreamer och starta sedan om OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Det gick inte att initiera Waylands GStreamer-videosink. Kontrollera installationen av din GStreamer GTK-insticksmodul." - -# AI Translated -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Windows Media Player krävs för den här uppgiften! Vill du aktivera 'Windows Media Player' i ditt operativsystem?" - -# AI Translated -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource har inte registrerats korrekt för mediauppspelning! Tryck på Ja för att registrera om den. Du får två frågor" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Saknad BambuSource-komponent registrerad för mediauppspelning! Installera om OrcaSlicer eller sök hjälp i gemenskapen." - -# AI Translated -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Du använder en BambuSource från en annan installation, videouppspelningen kanske inte fungerar korrekt! Tryck på Ja för att åtgärda det." - -# AI Translated -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Ditt system saknar H.264-kodekar för GStreamer, som krävs för att spela upp video. (Prova att installera paketen gstreamer1.0-plugins-bad eller gstreamer1.0-libav och starta sedan om Orca Slicer.)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Molnagenten är inte tillgänglig. Starta om OrcaSlicer och försök igen." @@ -13572,6 +13695,10 @@ msgstr "Om du ändå vill skriva ut kan du aktivera alternativet i Inställninga msgid "No extrusions under current settings." msgstr "Nuvarande inställning har ingen extrudering." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Ett blandat filament med gradient används, men 'Underlager med blandad färg' är inaktiverat. Gradienten kommer inte att skrivas ut." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Smooth läge för timelapse stöds inte när ”per objekt” -sekvens är aktiverad." @@ -13614,6 +13741,10 @@ msgstr "Du kan behöva minska modellens storlek eller ändra de aktuella utskrif msgid "Variable layer height is not supported with Organic supports." msgstr "Variabel lagerhöjd stöds inte med organiska support." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Filamentet för prime tornet kan inte vara ett blandat filament." + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Olika nozzeldiametrar och olika filamentdiametrar kanske inte fungerar bra när prime tornet är aktiverat. Det är mycket experimentellt, så var försiktig." @@ -14012,14 +14143,12 @@ msgstr "mm eller %" msgid "Other layers" msgstr "Andra lager" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Byggplattans temperatur för alla lager utom det första. Värdet 0 innebär att filamentet inte stöder utskrift på Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." msgstr "Detta är byggplattans temperatur för lager förutom det första. Värdet 0 betyder att filamentet inte stöder utskrift på Cool Plate." -# AI Translated msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Textured Cool Plate." msgstr "Detta är byggplattans temperatur för lager förutom det första. Värdet 0 betyder att filamentet inte stöder utskrift på Textured Cool Plate." @@ -15534,6 +15663,8 @@ msgstr "Lager tid" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Del kylfläkten kommer att aktiveras för lager vars beräknade tid är kortare än detta värde. Fläkthastigheten interpoleras mellan den lägsta och högsta fläkthastigheten enligt utskriftstiden för lager" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -15912,6 +16043,62 @@ msgstr "Supportmaterial" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Support material används ofta för att skriva ut support och stödja gränssnittet" +# AI Translated +msgid "Is mixed filament" +msgstr "Är blandat filament" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Anger om denna filamentplats är ett blandat filament som består av flera fysiska filament" + +# AI Translated +msgid "Mixed filament components" +msgstr "Komponenter i blandat filament" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Kommaseparerade index för komponentfilamenten, med start på 1, t.ex. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Underlagerandelar för blandat filament" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Kommaseparerade andelsvärden vars summa är 1.0, t.ex. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradient för blandat filament" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Aktiverar gradientläge i Z-riktningen för det blandade filamentets underlager. När det är aktiverat varierar underlagrens andelar linjärt över lagren." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Gradientintervall för blandat filament" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Start- och slutandel för den första komponenten i gradientläge. Kommaseparerat par, t.ex. \"0.10,0.90\" betyder 10% till 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Gradientkurva för blandat filament" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Valfri anpassad kurva i Photoshop-stil som mappar Z-förloppet till den första komponentens andel. Kodas som kontrollpunkter separerade med lodstreck, antingen \"x,y\" (äldre format) eller \"x,y,m_in,m_out\" när tangenten behöver åsidosättas (ett tomt värde eller \"nan\" använder PCHIP-standarden). x ligger i [0,1]; y begränsas till det konfigurerade andelsintervallet, t.ex. \"0,0.15|0.5,0.50|1,0.85\". Om fältet är tomt används det linjära gradient_range i stället." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradient per del för blandat filament" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "När gradientläget är aktiverat tillämpas gradienten på varje del i en montering separat i stället för att behandla hela monteringen som ett enda Z-intervall." + # AI Translated msgid "Filament printable" msgstr "Filament utskrivbart" @@ -17359,6 +17546,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Den maximalt tillåtna utgående kraften för Y-axeln" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -17369,6 +17557,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Maskinbäddens massbelastning på Y-axeln" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -17720,8 +17909,8 @@ msgid "Reduce infill retraction" msgstr "Minska ifyllnads retraktionen" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Dra inte tillbaka när förflyttningen är helt i ett utfyllnadsområde. Det betyder att läckage av filament inte kan ses. Detta kan minska tiderna för indragning för komplexa modeller och spara utskriftstid, men gör beredning och generering av G-kod långsammare. Observera att z-hop inte heller utförs i områden där retraktionen hoppas över." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Dra inte tillbaka när förflyttningen är helt i ett utfyllnadsområde. Det betyder att läckage av filament inte kan ses. Detta kan minska tiderna för indragning för komplexa modeller och spara utskriftstid, men gör beredning och generering av G-kod långsammare. Observera att Z-hop inte heller utförs i områden där retraktionen hoppas över." # AI Translated msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -17913,7 +18102,7 @@ msgstr "Reduktionsmängd efter avtorkning" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Längden på den snabba reduktionen efter avtorkning, i förhållande till reduktionslängden.\n" @@ -17968,7 +18157,7 @@ msgstr "När reduktionen utlöses före ett verktygsbyte dras filamentet tillbak msgid "Z-hop height" msgstr "Z-hop-höjd" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "När det är en retraktion lyfts nozzel en aning för att skapa ett spel mellan nozzel och utskriften. Detta förhindrar att nozzel träffar utskriften när den förflyttas. Att använda spirallinjer för att lyfta z kan förhindra strängning" msgid "Z-hop lower boundary" @@ -19168,6 +19357,14 @@ msgstr "" "\n" "Om du anger ett värde i inställningen reduktionsmängd före avtorkning nedan utförs eventuell överskjutande reduktion före avtorkningen, annars utförs den efteråt." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Underlager med blandad färg" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Aktiverar uppdelning i underlager med blandad färg. När det är aktiverat delas lager som innehåller filament med blandad färg upp i underlager för att skapa färgblandningseffekter." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Avstryknings tornet kan användas för att avlägsna rester på munstycket och stabilisera kammartrycket inuti munstycket för att undvika utseendefel vid utskrift av objekt." @@ -20441,6 +20638,10 @@ msgstr "Det gick inte att skapa mesh från modellfilen, eller så saknas en gilt msgid "The supplied file couldn't be read because it's empty." msgstr "Den medföljande filen kunde inte läsas eftersom den är tom." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Filformatet är inkompatibelt och kan inte tolkas." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Okänt filformat: indata filen måste ha tillägget .stl, .obj eller .amf(.xml)." @@ -22041,19 +22242,19 @@ msgstr "Endast printer med ändringar av inställningar för printer, filament o msgid "Only display the filament names with changes to filament presets." msgstr "Visa endast filament namnen vid ändringar av filament inställningar." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Endast printer namn med inställningar för printer visas, och varje inställning du väljer exporteras som zip-fil." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Endast filament namn med inställningar för användar filament visas, \n" "och alla inställningar för användar filament i varje filament namn du väljer exporteras som en zip-fil." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Endast printer namn med ändrade process inställningar visas, \n" "och alla användarprocess inställningar i varje printer namn som du väljer exporteras som zip-fil." @@ -22312,7 +22513,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Vi behöver information för att diagnostisera orsaken till problemet. Se wiki-sidan för en detaljerad guide." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Paketera-knappen samlar projektfilen och loggarna från den aktuella sessionen i en zip-fil." # AI Translated @@ -22368,7 +22569,7 @@ msgid "Stored logs" msgstr "Sparade loggar" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Paketerar alla sparade loggar i en zip-fil." # AI Translated @@ -22456,7 +22657,7 @@ msgid "Authorizing..." msgstr "Auktoriserar..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Fel. Det går inte att hämta api-token för auktorisering" # AI Translated @@ -23017,8 +23218,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Aktivera smart filamenttilldelning: Tilldela ett filament till flera nozzlar för att maximera besparingen" # AI Translated -msgid "Fila Saving" -msgstr "Filamentbesparing" +msgid "File Saving" +msgstr "Filsparande" # AI Translated msgid "Don't remind me again" @@ -23390,6 +23591,15 @@ msgstr "Åtgärden kan inte ångras. Vill du fortsätta?" msgid "Skipping objects." msgstr "Hoppar över objekt." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Välj filament" @@ -23491,6 +23701,9 @@ msgstr "Starta om nu" msgid "NO RAMMING AT ALL" msgstr "INGEN RAMMING ALLS" +msgid "s" +msgstr "s" + # AI Translated msgid "Volumetric speed" msgstr "Volymetrisk hastighet" @@ -24171,6 +24384,45 @@ msgstr "" "Undvik vridning\n" "Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Liveview i Wayland kräver GStreamers GTK-videosink. Installera insticksmodulen gtksink för GStreamer och starta sedan om OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Det gick inte att initiera Waylands GStreamer-videosink. Kontrollera installationen av din GStreamer GTK-insticksmodul." + +# AI Translated +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Windows Media Player krävs för den här uppgiften! Vill du aktivera 'Windows Media Player' i ditt operativsystem?" + +# AI Translated +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource har inte registrerats korrekt för mediauppspelning! Tryck på Ja för att registrera om den. Du får två frågor" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Saknad BambuSource-komponent registrerad för mediauppspelning! Installera om OrcaSlicer eller sök hjälp i gemenskapen." + +# AI Translated +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Du använder en BambuSource från en annan installation, videouppspelningen kanske inte fungerar korrekt! Tryck på Ja för att åtgärda det." + +# AI Translated +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Ditt system saknar H.264-kodekar för GStreamer, som krävs för att spela upp video. (Prova att installera paketen gstreamer1.0-plugins-bad eller gstreamer1.0-libav och starta sedan om Orca Slicer.)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Filamentbesparing" + # AI Translated #~ msgid "" #~ "Layer height is too small.\n" diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index a0c0079125..935bb83a3b 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -2942,6 +2942,10 @@ msgstr "แก้ไข" msgid "Merge with" msgstr "รวมกับ" +# AI Translated +msgid "Decompose Color" +msgstr "แยกสี" + msgid "Delete this filament" msgstr "ลบเส้นพลาสติกนี้" @@ -3237,6 +3241,10 @@ msgstr "การประกอบ" msgid "Merge parts to an object" msgstr "รวมชิ้นส่วนเป็นวัตถุเดียว" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "การใช้ความสูงเลเยอร์แบบแปรผันร่วมกับซับเลเยอร์สีผสมอาจทำให้คุณภาพการผสมสีไม่ดี" + # AI Translated msgid "Add layers" msgstr "เพิ่มเลเยอร์" @@ -4785,7 +4793,7 @@ msgstr "" "\n" "ค่าจะถูกรีเซ็ตเป็น 0" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "ผนังเสริมสำรองทำงานได้ไม่ดีเมื่อตั้งค่าความหนาของเปลือกแนวตั้งเป็นทั้งหมด" msgid "" @@ -4831,7 +4839,7 @@ msgstr "" "ไม่ - รักษาความสูงของชั้นรองรับที่เป็นอิสระ" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height ต้องเล็กกว่า layer_height\n" @@ -4839,7 +4847,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "ความลึกของล็อคควรน้อยกว่าความลึกของผิวหนัง\n" @@ -4879,6 +4887,9 @@ msgstr "" "ใช่ - เปลี่ยนการตั้งค่าเหล่านี้และเปิดใช้งานโหมดเกลียวโดยอัตโนมัติ\n" "ไม่ - เลิกใช้โหมดเกลียวในครั้งนี้" +msgid "N/A" +msgstr "ไม่มี" + msgid "Printing" msgstr "กำลังพิมพ์" @@ -5338,9 +5349,6 @@ msgstr "รูปแบบไม่ถูกต้อง ใช้ N, N#K หร msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "รูปแบบไม่ถูกต้อง รูปแบบเวกเตอร์ที่ต้องการ: \"%1%\"" -msgid "N/A" -msgstr "ไม่มี" - # AI Translated msgid "System agents" msgstr "เอเจนต์ระบบ" @@ -6296,16 +6304,22 @@ msgstr "บันทึกโปรเจกต์เป็น" msgid "Save current project as" msgstr "บันทึกโครงการปัจจุบันเป็น" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "นำเข้า 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "โหลดโมเดล" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "นำเข้าไฟล์ Zip" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "โหลดโมเดลที่มีอยู่ในไฟล์ zip" msgid "Import Configs" @@ -7807,6 +7821,10 @@ msgstr "ปรับแต่งแผ่นปัจจุบัน" msgid "The %s nozzle can not print %s." msgstr "หัวฉีด %s ไม่สามารถพิมพ์ %s ได้" +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "การพิมพ์เส้นพลาสติกสีผสมบนเครื่องพิมพ์ที่มีชุดดันเส้นเดียวต้องเปลี่ยนเส้นพลาสติกและไล่เส้นบ่อยครั้ง ซึ่งอาจเพิ่มเศษวัสดุและความเสี่ยงที่หัวฉีดหรือช่องทิ้งเศษวัสดุจะอุดตันอย่างมาก" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "ไม่แนะนำให้ผสม %1% กับ %2% ในการพิมพ์\n" @@ -7932,12 +7950,44 @@ msgstr "ประสานรายการเส้นพลาสติกจ msgid "Set filaments to use" msgstr "ตั้งค่าเส้นพลาสติกที่จะใช้" +# AI Translated +msgid "Add Mixed Filament" +msgstr "เพิ่มเส้นพลาสติกผสม" + +# AI Translated +msgid "Mixed Filament" +msgstr "เส้นพลาสติกผสม" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "ลบเส้นพลาสติกผสมล่าสุด" + +# AI Translated +msgid "Add mixed filament" +msgstr "เพิ่มเส้นพลาสติกผสม" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "เส้นพลาสติกผสมมีส่วนประกอบที่ไม่ถูกต้องหรือไม่ตรงกัน กรุณาแก้ไขรายการที่ได้รับผลกระทบอีกครั้ง" + msgid "Search plate, object and part." msgstr "ค้นหาจาน วัตถุ และชิ้นส่วน" msgid "Pellets" msgstr "เม็ด" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "เส้นพลาสติกผสมมีการอ้างอิงส่วนประกอบที่เสียหาย" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "แก้ไข / ลบ / รวม" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "เส้นพลาสติกผสมปลายทางใช้เส้นพลาสติกจริงนี้เป็นส่วนประกอบ การรวมจะลบเส้นพลาสติกจริงนี้และอาจทำให้เส้นพลาสติกผสมใช้ไม่ได้ ดำเนินการต่อหรือไม่?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "หลังจากเสร็จสิ้นการดำเนินการของคุณ โครงการ %s จะถูกปิดและสร้างโครงการใหม่" @@ -8074,8 +8124,14 @@ msgstr "โปรดยืนยันว่ารหัส G ภายในค msgid "Customized Preset" msgstr "ค่าที่ตั้งไว้ล่วงหน้าที่กำหนดเอง" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF8!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "ชื่ออาจแสดงตัวอักษรขยะ!" @@ -8096,7 +8152,7 @@ msgstr "ปริมาตรของวัตถุเป็นศูนย์ #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "วัตถุจากไฟล์ %s มีขนาดเล็กเกินไป และอาจมีหน่วยเป็นเมตรหรือนิ้ว\n" " คุณต้องการขยายขนาดเป็นมิลลิเมตรหรือไม่?" @@ -8116,6 +8172,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "ตรวจพบวัตถุที่มีหลายส่วน" +# AI Translated +msgid "Matching textures to filaments" +msgstr "กำลังจับคู่พื้นผิวกับเส้นพลาสติก" + +# AI Translated +msgid "Texture Import Warning" +msgstr "คำเตือนการนำเข้าพื้นผิว" + msgid "Load these files as a single object with multiple parts?\n" msgstr "โหลดไฟล์เหล่านี้เป็นออบเจ็กต์เดียวที่มีหลายส่วนใช่ไหม\n" @@ -8326,6 +8390,22 @@ msgstr "" msgid "Sync now" msgstr "ซิงค์เลย" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "การนำเข้าพื้นผิวล้มเหลว โมเดลดูเหมือนจะมีข้อมูลพื้นผิว แต่ไม่สามารถดำเนินการนำเข้าพื้นผิวจนเสร็จสิ้นได้ โมเดลจะถูกนำเข้าเป็นเรขาคณิตเท่านั้น" + +# AI Translated +msgid "Applying texture colors..." +msgstr "กำลังใช้สีพื้นผิว..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "กำลังอัปเดตมุมมอง 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "ใช้สีพื้นผิวแล้ว" + msgid "You can keep the modified presets for the new project or discard them" msgstr "คุณสามารถเก็บค่าที่ตั้งไว้ล่วงหน้าที่แก้ไขแล้วไว้ในโปรเจ็กต์ใหม่หรือทิ้งก็ได้" @@ -8457,6 +8537,17 @@ msgstr "บันทึกไฟล์ที่สไลซ์เป็น:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "ไฟล์ %s ถูกส่งไปยังพื้นที่เก็บข้อมูลของเครื่องพิมพ์แล้ว และสามารถดูได้บนเครื่องพิมพ์" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "เผยแพร่" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ไม่ได้ตั้งค่าประเภทหัวฉีด โปรดตั้งหัวฉีดแล้วลองอีกครั้ง" @@ -9568,6 +9659,10 @@ msgstr "แจกันเกลียว" msgid "First layer filament sequence" msgstr "ลำดับเส้นพลาสติกชั้นแรก" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "รายการเส้นพลาสติกมีเส้นพลาสติกผสมอยู่ ลำดับเส้นพลาสติกที่กำหนดเองจะไม่มีผล" + msgid "By Layer" msgstr "โดยเลเยอร์" @@ -9595,9 +9690,6 @@ msgstr "ข้ามไปที่โมเดลเผยแพร่หน้ msgid "Note: The preparation may take several minutes. Please be patient." msgstr "หมายเหตุ: การเตรียมการอาจใช้เวลาหลายนาที กรุณาอดทน." -msgid "Publish" -msgstr "เผยแพร่" - msgid "Publish was canceled" msgstr "การเผยแพร่ถูกยกเลิก" @@ -9613,6 +9705,64 @@ msgstr "กำลังอัพโหลดข้อมูล" msgid "Jump to webpage" msgstr "ข้ามไปที่หน้าเว็บ" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "บันทึก %s เป็น" @@ -10948,12 +11098,12 @@ msgid "No modifications need to be copied." msgstr "ไม่มีการแก้ไขที่ต้องคัดลอก" # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "คัดลอกพารามิเตอร์" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "แก้ไขพารามิเตอร์ของ %s" # AI Translated @@ -11469,27 +11619,6 @@ msgstr "ปริมาณการไล่เส้นชิ่งสำหร msgid "Please choose the filament colour" msgstr "กรุณาเลือกสีเส้นพลาสติก" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Native Wayland liveview ต้องใช้ GStreamer GTK video sink โปรดติดตั้งปลั๊กอิน gtksink สำหรับ GStreamer จากนั้นรีสตาร์ท OrcaSlicer" - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "ไม่สามารถเริ่มต้น sink วิดีโอ Wayland GStreamer ดั้งเดิมได้ โปรดตรวจสอบการติดตั้งปลั๊กอิน GStreamer GTK ของคุณ" - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "งานนี้ต้องใช้ Windows Media Player! คุณต้องการเปิดใช้งาน 'Windows Media Player' สำหรับระบบปฏิบัติการของคุณหรือไม่?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource ยังไม่ได้รับการลงทะเบียนอย่างถูกต้องสำหรับการเล่นสื่อ! กดใช่เพื่อลงทะเบียนใหม่ คุณจะได้รับการเลื่อนตำแหน่งสองครั้ง" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "ไม่มีส่วนประกอบ BambuSource ที่ลงทะเบียนสำหรับการเล่นสื่อ! โปรดติดตั้ง OrcaSlicer ใหม่หรือขอความช่วยเหลือจากชุมชน" - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "การใช้ BambuSource จากการติดตั้งอื่น การเล่นวิดีโออาจทำงานไม่ถูกต้อง! กดใช่เพื่อแก้ไข" - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "ระบบของคุณไม่มีตัวแปลงสัญญาณ H.264 สำหรับ GStreamer ซึ่งจำเป็นในการเล่นวิดีโอ (ลองติดตั้งแพ็คเกจ gstreamer1.0-plugins-bad หรือ gstreamer1.0-libav จากนั้นรีสตาร์ท Orca Slicer หรือไม่)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "ตัวแทนระบบคลาวด์ไม่พร้อมใช้งาน โปรดรีสตาร์ท OrcaSlicer แล้วลองอีกครั้ง" @@ -12193,6 +12322,10 @@ msgstr "หากคุณยังต้องการพิมพ์ คุ msgid "No extrusions under current settings." msgstr "ไม่มีการอัดขึ้นรูปภายใต้การตั้งค่าปัจจุบัน" +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "มีการใช้เส้นพลาสติกผสมแบบเกรเดียนต์ แต่ 'ซับเลเยอร์สีผสม' ถูกปิดใช้งาน เกรเดียนต์จะไม่ถูกพิมพ์" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "ไม่รองรับโหมดไทม์แลปส์แบบราบรื่นเมื่อเปิดใช้งานลำดับ \"ตามวัตถุ\"" @@ -12229,6 +12362,10 @@ msgstr "คุณอาจต้องการลดขนาดแบบจำ msgid "Variable layer height is not supported with Organic supports." msgstr "ไม่รองรับความสูงของเลเยอร์ที่แปรผันได้ด้วยการรองรับแบบออร์แกนิก" +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "เส้นพลาสติกของ Wipe Tower ไม่สามารถเป็นเส้นพลาสติกผสมได้" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "เส้นผ่านศูนย์กลางของหัวฉีดที่แตกต่างกันและเส้นผ่านศูนย์กลางของเส้นพลาสติกที่แตกต่างกันอาจทำงานได้ไม่ดีนักเมื่อเปิดใช้งาน Prime Tower ยังเป็นการทดลองอยู่มาก ดังนั้นโปรดดำเนินการด้วยความระมัดระวัง" @@ -12578,7 +12715,7 @@ msgstr "มม. หรือ %" msgid "Other layers" msgstr "ชั้นอื่นๆ" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "อุณหภูมิฐานพิมพ์สำหรับชั้นต่างๆ ยกเว้นอุณหภูมิเริ่มต้น ค่า 0 หมายความว่าเส้นพลาสติกไม่รองรับการพิมพ์บน Cool Plate SuperTack" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13941,6 +14078,8 @@ msgstr "เวลาเลเยอร์" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "พัดลมระบายความร้อนบางส่วนจะถูกเปิดใช้งานสำหรับเลเยอร์ที่เวลาโดยประมาณสั้นกว่าค่านี้ ความเร็วพัดลมจะถูกประมาณค่าระหว่างความเร็วพัดลมขั้นต่ำและสูงสุดตามเวลาการพิมพ์เลเยอร์" +# AI Translated +msgctxt "second" msgid "s" msgstr "วินาที" @@ -14248,6 +14387,62 @@ msgstr "วัสดุส่วนรองรับ" msgid "Support material is commonly used to print supports and support interfaces." msgstr "วัสดุรองรับมักใช้ในการพิมพ์ส่วนรองรับและอินเทอร์เฟซรองรับ" +# AI Translated +msgid "Is mixed filament" +msgstr "เป็นเส้นพลาสติกผสมหรือไม่" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "กำหนดว่าช่องเส้นพลาสติกนี้เป็นเส้นพลาสติกผสมที่ประกอบด้วยเส้นพลาสติกจริงหลายเส้นหรือไม่" + +# AI Translated +msgid "Mixed filament components" +msgstr "ส่วนประกอบของเส้นพลาสติกผสม" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "ลำดับของเส้นพลาสติกส่วนประกอบโดยเริ่มจาก 1 คั่นด้วยเครื่องหมายจุลภาค เช่น \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "สัดส่วนซับเลเยอร์ของเส้นพลาสติกผสม" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "ค่าสัดส่วนที่คั่นด้วยเครื่องหมายจุลภาคและรวมกันได้ 1.0 เช่น \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "เกรเดียนต์ของเส้นพลาสติกผสม" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "เปิดใช้โหมดเกรเดียนต์ในแนวแกน Z สำหรับซับเลเยอร์ของเส้นพลาสติกผสม เมื่อเปิดใช้ สัดส่วนของซับเลเยอร์จะเปลี่ยนแปลงเชิงเส้นตามเลเยอร์" + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "ช่วงเกรเดียนต์ของเส้นพลาสติกผสม" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "สัดส่วนเริ่มต้นและสิ้นสุดของส่วนประกอบแรกในโหมดเกรเดียนต์ เป็นคู่ค่าที่คั่นด้วยเครื่องหมายจุลภาค เช่น \"0.10,0.90\" หมายถึง 10% ถึง 90%" + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "เส้นโค้งเกรเดียนต์ของเส้นพลาสติกผสม" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "เส้นโค้งกำหนดเองสไตล์ Photoshop (ไม่บังคับ) ที่แมปความคืบหน้าในแกน Z กับสัดส่วนของส่วนประกอบแรก เข้ารหัสเป็นจุดควบคุมที่คั่นด้วยเครื่องหมายขีดตั้ง ในรูปแบบ \"x,y\" (รูปแบบเดิม) หรือ \"x,y,m_in,m_out\" เมื่อจำเป็นต้องกำหนดค่าแทนเจนต์เอง (ค่าว่างหรือ \"nan\" หมายถึงใช้ค่าเริ่มต้นของ PCHIP) x อยู่ในช่วง [0,1] ส่วน y จะถูกจำกัดให้อยู่ในช่วงสัดส่วนที่ตั้งค่าไว้ เช่น \"0,0.15|0.5,0.50|1,0.85\" หากเว้นว่างไว้ จะใช้ gradient_range แบบเชิงเส้นแทน" + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "เกรเดียนต์แยกตามชิ้นส่วนของเส้นพลาสติกผสม" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "เมื่อเปิดใช้โหมดเกรเดียนต์ จะใช้เกรเดียนต์กับแต่ละชิ้นส่วนของการประกอบแยกกัน แทนที่จะถือว่าการประกอบทั้งหมดเป็นช่วง Z เดียว" + msgid "Filament printable" msgstr "พิมพ์เส้นพลาสติกได้" @@ -15502,8 +15697,9 @@ msgid "The allowed maximum output force of Y axis" msgstr "แรงขับออกสูงสุดที่อนุญาตของแกน Y" # AI Translated +msgctxt "Newton" msgid "N" -msgstr "N" +msgstr "นิวตัน" # AI Translated msgid "Bed mass of the Y axis" @@ -15514,8 +15710,9 @@ msgid "The machine bed mass load of Y axis" msgstr "ภาระมวลฐานของเครื่องบนแกน Y" # AI Translated +msgctxt "gram" msgid "g" -msgstr "g" +msgstr "กรัม" # AI Translated msgid "The allowed max printed mass" @@ -15827,8 +16024,8 @@ msgstr "จุดเริ่มต้นและจุดสิ้นสุด msgid "Reduce infill retraction" msgstr "ลดการดึงกลับในไส้ใน" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "อย่าถอยกลับเมื่อการเดินทางอยู่ภายในพื้นที่ที่ไส้ในเข้าไปทั้งหมด นั่นหมายความว่าไม่สามารถมองเห็นการรั่วไหลได้ วิธีนี้จะช่วยลดเวลาในการดึงกลับสำหรับโมเดลที่ซับซ้อนและประหยัดเวลาในการพิมพ์ แต่จะทำให้การแบ่งส่วนและการสร้าง G-code ช้าลง โปรดทราบว่า z-hop จะไม่ดำเนินการในพื้นที่ที่มีการข้ามการถอนกลับ" +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "อย่าถอยกลับเมื่อการเดินทางอยู่ภายในพื้นที่ที่ไส้ในเข้าไปทั้งหมด นั่นหมายความว่าไม่สามารถมองเห็นการรั่วไหลได้ วิธีนี้จะช่วยลดเวลาในการดึงกลับสำหรับโมเดลที่ซับซ้อนและประหยัดเวลาในการพิมพ์ แต่จะทำให้การแบ่งส่วนและการสร้าง G-code ช้าลง โปรดทราบว่า Z-hop จะไม่ดำเนินการในพื้นที่ที่มีการข้ามการถอนกลับ" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "ตัวเลือกนี้จะทำให้อุณหภูมิของชุดดันเส้นที่ไม่ใช้งานลดลงเพื่อป้องกันการไหลซึม" @@ -15997,7 +16194,7 @@ msgstr "ปริมาณการดึงกลับหลังเช็ด # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "ความยาวของการดึงกลับอย่างเร็วหลังเช็ดหัว สัมพันธ์กับความยาวการดึงกลับ\n" @@ -16044,7 +16241,7 @@ msgstr "เมื่อการดึงกลับทำงานก่อน msgid "Z-hop height" msgstr "ความสูงยกแกน Z" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "เมื่อใดก็ตามที่การดึงกลับเสร็จสิ้น หัวฉีดจะถูกยกขึ้นเล็กน้อยเพื่อสร้างระยะห่างระหว่างหัวฉีดและงานพิมพ์ ป้องกันไม่ให้หัวฉีดชนกับงานพิมพ์ขณะเคลื่อนตัว การใช้เส้นเกลียวเพื่อยก Z สามารถป้องกันการร้อยสายได้" msgid "Z-hop lower boundary" @@ -17088,6 +17285,14 @@ msgstr "" "\n" "การตั้งค่าในจำนวนการถอนก่อนการล้างการตั้งค่าด้านล่างจะทำการถอนส่วนที่เกินก่อนการล้าง มิฉะนั้นจะดำเนินการหลังจากนั้น" +# AI Translated +msgid "Mixed color sublayer" +msgstr "ซับเลเยอร์สีผสม" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "เปิดใช้การแบ่งซับเลเยอร์สีผสม เมื่อเปิดใช้ เลเยอร์ที่มีเส้นพลาสติกสีผสมจะถูกแบ่งเป็นซับเลเยอร์เพื่อให้เกิดเอฟเฟกต์การผสมสี" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wipe Tower สามารถใช้เพื่อทำความสะอาดสิ่งตกค้างบนหัวฉีด และทำให้แรงดันในห้องภายในหัวฉีดคงที่ เพื่อหลีกเลี่ยงข้อบกพร่องในลักษณะที่ปรากฏเมื่อพิมพ์วัตถุ" @@ -18171,6 +18376,10 @@ msgstr "การประสานไฟล์โมเดลล้มเหล msgid "The supplied file couldn't be read because it's empty." msgstr "ไม่สามารถอ่านไฟล์ที่ให้มาได้เนื่องจากไฟล์ว่างเปล่า" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "รูปแบบไฟล์ไม่รองรับ จึงไม่สามารถอ่านข้อมูลได้" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "รูปแบบไฟล์ที่ไม่รู้จัก ไฟล์อินพุตต้องมีนามสกุล .stl, .obj, .amf(.xml)" @@ -19632,19 +19841,19 @@ msgstr "แสดงเฉพาะชื่อเครื่องพิมพ msgid "Only display the filament names with changes to filament presets." msgstr "แสดงเฉพาะชื่อเส้นพลาสติกที่มีการเปลี่ยนแปลงการตั้งค่าล่วงหน้าของเส้นพลาสติก" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "เฉพาะชื่อเครื่องพิมพ์ที่มีการตั้งค่าเครื่องพิมพ์ล่วงหน้าของผู้ใช้เท่านั้นที่จะแสดง และการตั้งค่าล่วงหน้าแต่ละรายการที่คุณเลือกจะถูกส่งออกเป็นไฟล์ ZIP" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "เฉพาะชื่อเส้นพลาสติกที่มีการตั้งค่าล่วงหน้าของเส้นพลาสติกผู้ใช้เท่านั้นที่จะถูกแสดง \n" "และค่าฟิลาเมนต์ของผู้ใช้ทั้งหมดที่กำหนดไว้ล่วงหน้าในแต่ละชื่อฟิลาเมนต์ที่คุณเลือกจะถูกส่งออกเป็นไฟล์ ZIP" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "เฉพาะชื่อเครื่องพิมพ์ที่มีการตั้งค่าล่วงหน้าของกระบวนการที่เปลี่ยนแปลงเท่านั้นที่จะปรากฏขึ้น \n" "และกระบวนการของผู้ใช้ที่ตั้งไว้ล่วงหน้าในชื่อเครื่องพิมพ์แต่ละเครื่องที่คุณเลือกจะถูกส่งออกเป็นไฟล์ ZIP" @@ -19885,7 +20094,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "เราต้องการข้อมูลเพื่อวินิจฉัยแหล่งที่มาของปัญหา ตรวจสอบหน้า wiki สำหรับคำแนะนำโดยละเอียด" # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "ปุ่ม Pack จะรวบรวมไฟล์โปรเจกต์และบันทึกของเซสชันปัจจุบันลงในไฟล์ zip" # AI Translated @@ -19941,7 +20150,7 @@ msgid "Stored logs" msgstr "บันทึกที่จัดเก็บ" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "รวมบันทึกที่จัดเก็บทั้งหมดลงในไฟล์ zip" # AI Translated @@ -20021,7 +20230,7 @@ msgstr "ไม่พบประเภทเครื่องพิมพ์ msgid "Authorizing..." msgstr "กำลังอนุญาต..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "ข้อผิดพลาด ไม่สามารถรับโทเคน API สำหรับการอนุญาตได้" msgid "Could not parse server response." @@ -20473,8 +20682,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "เปิดใช้การกำหนดเส้นพลาสติกอัจฉริยะ: กำหนดเส้นพลาสติกหนึ่งชนิดให้กับหัวฉีดหลายตัวเพื่อประหยัดสูงสุด" # AI Translated -msgid "Fila Saving" -msgstr "การประหยัดเส้นพลาสติก" +msgid "File Saving" +msgstr "การบันทึกไฟล์" msgid "Don't remind me again" msgstr "ไม่ต้องเตือนฉันอีก" @@ -20760,6 +20969,15 @@ msgstr "การทำงานนี้ไม่สามารถย้อน msgid "Skipping objects." msgstr "ข้ามวัตถุ" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "เลือกเส้นพลาสติก" @@ -20839,6 +21057,9 @@ msgstr "เริ่มใหม่ตอนนี้" msgid "NO RAMMING AT ALL" msgstr "ไม่มีการกระแทกเลย" +msgid "s" +msgstr "วินาที" + msgid "Volumetric speed" msgstr "ความเร็วปริมาตร" @@ -21463,6 +21684,39 @@ msgstr "" "หลีกเลี่ยงการบิดเบี้ยว\n" "คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Native Wayland liveview ต้องใช้ GStreamer GTK video sink โปรดติดตั้งปลั๊กอิน gtksink สำหรับ GStreamer จากนั้นรีสตาร์ท OrcaSlicer" + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "ไม่สามารถเริ่มต้น sink วิดีโอ Wayland GStreamer ดั้งเดิมได้ โปรดตรวจสอบการติดตั้งปลั๊กอิน GStreamer GTK ของคุณ" + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "งานนี้ต้องใช้ Windows Media Player! คุณต้องการเปิดใช้งาน 'Windows Media Player' สำหรับระบบปฏิบัติการของคุณหรือไม่?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource ยังไม่ได้รับการลงทะเบียนอย่างถูกต้องสำหรับการเล่นสื่อ! กดใช่เพื่อลงทะเบียนใหม่ คุณจะได้รับการเลื่อนตำแหน่งสองครั้ง" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "ไม่มีส่วนประกอบ BambuSource ที่ลงทะเบียนสำหรับการเล่นสื่อ! โปรดติดตั้ง OrcaSlicer ใหม่หรือขอความช่วยเหลือจากชุมชน" + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "การใช้ BambuSource จากการติดตั้งอื่น การเล่นวิดีโออาจทำงานไม่ถูกต้อง! กดใช่เพื่อแก้ไข" + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "ระบบของคุณไม่มีตัวแปลงสัญญาณ H.264 สำหรับ GStreamer ซึ่งจำเป็นในการเล่นวิดีโอ (ลองติดตั้งแพ็คเกจ gstreamer1.0-plugins-bad หรือ gstreamer1.0-libav จากนั้นรีสตาร์ท Orca Slicer หรือไม่)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "การประหยัดเส้นพลาสติก" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index c3deff8bd8..02d54aa39f 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-08-21 23:18+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -2969,6 +2969,10 @@ msgstr "Düzenle" msgid "Merge with" msgstr "Şununla birleştir" +# AI Translated +msgid "Decompose Color" +msgstr "Rengi ayrıştır" + msgid "Delete this filament" msgstr "Bu filamenti sil" @@ -3269,6 +3273,10 @@ msgstr "Birleştir" msgid "Merge parts to an object" msgstr "Parçaları bir nesnede birleştir" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Değişken katman yüksekliğinin karışık renk alt katmanı ile birlikte kullanılması renk karışımının kalitesini düşürebilir." + # AI Translated msgid "Add layers" msgstr "Katman ekle" @@ -4847,7 +4855,7 @@ msgstr "" "\n" "Değer 0'a sıfırlanacaktır." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından emin olunduğunda iyi çalışmaz." msgid "" @@ -4893,7 +4901,7 @@ msgstr "" "HAYIR - Bağımsız Destek Katmanı Yüksekliğini Koruyun" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height, layer_height değerinden küçük olmalıdır.\n" @@ -4901,7 +4909,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Kilit derinliği cilt derinliğinden daha küçük olmalıdır.\n" @@ -4941,6 +4949,10 @@ msgstr "" "Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" +# AI Translated +msgid "N/A" +msgstr "Yok" + msgid "Printing" msgstr "Baskı" @@ -5400,10 +5412,6 @@ msgstr "Geçersiz kalıp. N, N#K veya giriş başına isteğe bağlı #K ile vir msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Yok" - # AI Translated msgid "System agents" msgstr "Sistem aracıları" @@ -6364,16 +6372,22 @@ msgstr "Projeyi farklı kaydet" msgid "Save current project as" msgstr "Mevcut projeyi farklı kaydet" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" msgid "Load a model" msgstr "Model yükle" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Zip Arşivini İçe Aktar" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Zip arşivindeki modelleri yükle" msgid "Import Configs" @@ -7897,6 +7911,10 @@ msgstr "Mevcut plakayı özelleştir" msgid "The %s nozzle can not print %s." msgstr "%s püskürtme ucu %s'yi yazdıramıyor." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Karışık renkli filamenti tek ekstruderli bir yazıcıda basmak sık filament değişimi ve yıkama gerektirir; bu da atığı ve nozul ya da atık oluğu tıkanma riskini önemli ölçüde artırabilir." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Yazdırmada %1% ile %2%'nin karıştırılması önerilmez.\n" @@ -8022,12 +8040,44 @@ msgstr "Filament listesini AMS'den senkronize edin" msgid "Set filaments to use" msgstr "Kullanılacak filamentleri ayarla" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Karışık Filament Ekle" + +# AI Translated +msgid "Mixed Filament" +msgstr "Karışık Filament" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Son karışık filamenti kaldır" + +# AI Translated +msgid "Add mixed filament" +msgstr "Karışık filament ekle" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Karışık filamentte geçersiz veya uyumsuz bileşenler var. Lütfen etkilenen girdileri yeniden düzenleyin." + msgid "Search plate, object and part." msgstr "Arama plakası, nesne ve parça." msgid "Pellets" msgstr "Peletler" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Karışık filamentin bileşen referansları bozuk" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Düzenle / Sil / Birleştir" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Hedef karışık filament bu fiziksel filamenti bileşen olarak kullanıyor. Birleştirme bu fiziksel filamenti kaldıracak ve karışık filamenti geçersiz kılabilir. Devam edilsin mi?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "İşleminizi tamamladıktan sonra %s projesi kapatılacak ve yeni bir proje oluşturulacak." @@ -8171,8 +8221,14 @@ msgstr "Lütfen bu ön ayarlar içindeki G-code'larının makineye herhangi bir msgid "Customized Preset" msgstr "Özel Ayar" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Step dosyasındaki bileşenlerin adı UTF8 formatında değil!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Step dosyasındaki bileşenlerin adı UTF-8 formatında değil!" # AI Translated msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8194,10 +8250,10 @@ msgstr "Cismin hacmi sıfır" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "%s dosyasındaki nesne çok küçük; metre veya inç cinsinden olabilir.\n" -" Milimetreye ölçeklendirmek istiyor musunuz?" +"Milimetreye ölçeklendirmek istiyor musunuz?" msgid "Object too small" msgstr "Nesne çok küçük" @@ -8214,6 +8270,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Çok parçalı nesne algılandı" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Dokular filamentlerle eşleştiriliyor" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Doku İçe Aktarma Uyarısı" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Bu dosyalar birden fazla parçadan oluşan tek bir nesne olarak mı yüklensin?\n" @@ -8425,6 +8489,22 @@ msgstr "" msgid "Sync now" msgstr "Şimdi senkronize et" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Doku içe aktarılamadı. Model doku verisi içeriyor gibi görünüyor, ancak içe aktarma işlemi tamamlanamadı. Model yalnızca geometri olarak içe aktarılacak." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Doku renkleri uygulanıyor..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "3D görünüm güncelleniyor..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Doku renkleri uygulandı." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Değiştirilen ön ayarları yeni projede tutabilir veya silebilirsiniz" @@ -8556,6 +8636,17 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda görüntülenebiliyor." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Yayınla" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozul tipi ayarlanmamış. Lütfen nozulu ayarlayın ve tekrar deneyin." @@ -9712,6 +9803,10 @@ msgstr "Spiral vazo" msgid "First layer filament sequence" msgstr "İlk katman filament dizisi" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Filament listesi karışık filamentler içeriyor. Özel filament sırası etkili olmayacak." + msgid "By Layer" msgstr "Katmana göre" @@ -9739,9 +9834,6 @@ msgstr "Model yayınlama web sayfasına git" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun." -msgid "Publish" -msgstr "Yayınla" - msgid "Publish was canceled" msgstr "Yayınlama iptal edildi" @@ -9757,6 +9849,64 @@ msgstr "Veriler yükleniyor" msgid "Jump to webpage" msgstr "Web sayfasına atla" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s'yi farklı kaydet" @@ -11128,12 +11278,12 @@ msgid "No modifications need to be copied." msgstr "Kopyalanması gereken değişiklik yok." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Parametreleri kopyala" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "%s parametrelerini değiştir" # AI Translated @@ -11653,29 +11803,6 @@ msgstr "Filament değişimi için temizleme hacmi" msgid "Please choose the filament colour" msgstr "Lütfen filament rengini seçin" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Yerel Wayland canlı görüntüsü, GStreamer GTK video alıcısını gerektirir. Lütfen GStreamer için gtksink eklentisini yükleyin ve ardından OrcaSlicer'ı yeniden başlatın." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Yerel Wayland GStreamer video alıcısı başlatılamadı. Lütfen GStreamer GTK eklentisi kurulumunuzu denetleyin." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Bu görev için Windows Media Player gereklidir! İşletim sisteminiz için ‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden kaydetmek için Evet’e basın" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen OrcaSlicer'ı yeniden yükleyin veya topluluk yardımı isteyin." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Farklı bir kurulumdan bir BambuSource kullanıyorsunuz, video oynatma doğru çalışmayabilir! Düzeltmek için Evet’e basın." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav paketlerini kurmayı deneyin, ardından Orca Slicer’ı yeniden başlatın)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Bulut aracısı kullanılamıyor. Lütfen OrcaSlicer'ı yeniden başlatıp yeniden deneyin." @@ -12401,6 +12528,10 @@ msgstr "Yine de yazdırmak istiyorsanız Tercihler / Denetim / Dilimleme / Karı msgid "No extrusions under current settings." msgstr "Mevcut ayarlarda ekstrüzyon yok." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Gradyanlı bir karışık filament kullanılıyor ancak 'Karışık renk alt katmanı' devre dışı. Gradyan basılmayacak." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "\"Nesneye göre\" dizisi etkinleştirildiğinde, hızlandırılmış çekimin yumuşak modu desteklenmez." @@ -12437,6 +12568,10 @@ msgstr "Modelinizin boyutunu küçültmek veya mevcut yazdırma ayarlarını de msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Silme kulesi filamenti karışık filament olamaz." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Farklı püskürtme ucu çapları ve farklı filament çapları, ana kule etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen dikkatli ilerleyin." @@ -12805,7 +12940,7 @@ msgstr "mm veya %" msgid "Other layers" msgstr "Diğer katmanlar" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "İlk katman hariç tüm katmanlar için yatak sıcaklığı. 0 değeri, filamentin Cool Plate SuperTack üzerine baskıyı desteklemediği anlamına gelir." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14193,6 +14328,8 @@ msgstr "Katman süresi" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan hızları arasında enterpole edilir." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14502,6 +14639,62 @@ msgstr "Destek malzemesi" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için kullanılır." +# AI Translated +msgid "Is mixed filament" +msgstr "Karışık filament mi" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Bu filament yuvasının birden fazla fiziksel filamentten oluşan bir karışık filament olup olmadığını belirler" + +# AI Translated +msgid "Mixed filament components" +msgstr "Karışık filament bileşenleri" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Bileşen filamentlerin virgülle ayrılmış, 1'den başlayan sıra numaraları; ör. \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Karışık filament alt katman oranları" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Toplamı 1.0 olan, virgülle ayrılmış oran değerleri; ör. \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Karışık filament gradyanı" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Karışık filamentin alt katmanları için Z yönünde gradyan modunu etkinleştirir. Etkinleştirildiğinde alt katman oranları katmanlar boyunca doğrusal olarak değişir." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Karışık filament gradyan aralığı" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Gradyan modunda ilk bileşenin başlangıç ve bitiş oranları. Virgülle ayrılmış çift; ör. \"0.10,0.90\" %10 ile %90 arasını ifade eder." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Karışık filament gradyan eğrisi" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Z ilerlemesini ilk bileşenin oranına eşleyen, isteğe bağlı Photoshop tarzı özel eğri. Dikey çizgiyle ayrılmış kontrol noktaları olarak kodlanır; \"x,y\" (eski) veya teğetin geçersiz kılınması gerektiğinde \"x,y,m_in,m_out\" biçiminde (boş değer ya da \"nan\" varsayılan PCHIP değerini kullanır). x [0,1] aralığındadır; y yapılandırılmış oran aralığına kırpılır; ör. \"0,0.15|0.5,0.50|1,0.85\". Boş bırakıldığında bunun yerine doğrusal gradient_range kullanılır." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Karışık filamentte parça başına gradyan" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Gradyan modu etkinleştirildiğinde, gradyan montajın tamamı tek bir Z aralığı olarak ele alınmak yerine montajdaki her parçaya bağımsız olarak uygulanır." + msgid "Filament printable" msgstr "Filament yazdırılabilir" @@ -15793,6 +15986,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Y ekseninin izin verilen maksimum çıkış kuvveti" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15805,6 +15999,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Y ekseninin makine yatağı kütle yükü" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16129,8 +16324,8 @@ msgid "Reduce infill retraction" msgstr "Dolguda geri çekmeyi azalt" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Hareket tamamen dolgu alanı içindeyken geri çekme yapılmaz. Bu, sızıntının görülemeyeceği anlamına gelir. Bu, karmaşık modellerde geri çekme sayısını azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi ve G-code oluşturmayı yavaşlatır. Geri çekmenin atlandığı alanlarda z-hop'un da uygulanmadığını unutmayın." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Hareket tamamen dolgu alanı içindeyken geri çekme yapılmaz. Bu, sızıntının görülemeyeceği anlamına gelir. Bu, karmaşık modellerde geri çekme sayısını azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi ve G-code oluşturmayı yavaşlatır. Geri çekmenin atlandığı alanlarda Z-hop'un da uygulanmadığını unutmayın." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "Bu seçenek sızıntıyı önlemek için aktif olmayan ekstrüderlerin sıcaklığını düşürecektir." @@ -16305,7 +16500,7 @@ msgstr "Silme sonrası geri çekme miktarı" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Silme sonrasındaki hızlı geri çekmenin uzunluğu; geri çekme uzunluğuna göredir.\n" @@ -16352,7 +16547,7 @@ msgstr "Takım değişiminden önce geri çekme tetiklendiğinde, filament belir msgid "Z-hop height" msgstr "Z-Sıçrama yüksekliği" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Geri çekme işlemi her yapıldığında, nozul ile baskı arasında açıklık oluşturmak için nozul biraz kaldırılır. Hareket halindeyken nozulun baskıya çarpmasını önler. Z'yi kaldırmak için spiral çizgi kullanmak çekmeyi önleyebilir." msgid "Z-hop lower boundary" @@ -17417,6 +17612,14 @@ msgstr "" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi takdirde silme işleminden sonra gerçekleştirilecektir." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Karışık renk alt katmanı" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Karışık renk alt katmanlarına bölmeyi etkinleştirir. Etkinleştirildiğinde, karışık renkli filament içeren katmanlar renk karışımı efektleri elde etmek için alt katmanlara bölünür." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını dengelemek için kullanılabilir." @@ -18155,10 +18358,10 @@ msgid "Allow 3MF with newer version to be sliced." msgstr "Daha yeni sürüme sahip 3mf’nin dilimlenmesine izin ver." msgid "Current Z-hop" -msgstr "Mevcut z-hop" +msgstr "Mevcut Z-hop" msgid "Contains Z-hop present at the beginning of the custom G-code block." -msgstr "Özel G-code bloğunun başında bulunan z-hop'u içerir." +msgstr "Özel G-code bloğunun başında bulunan Z-hop'u içerir." msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back." msgstr "Ekstruderin özel G-code bloğunun başlangıcındaki konumu. Özel G-code başka bir yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat ettiğini bilmesi için bu değişkene yazması gerekir." @@ -18505,6 +18708,10 @@ msgstr "Bir model dosyasının meshlenmesi başarısız oldu veya geçerli bir msgid "The supplied file couldn't be read because it's empty." msgstr "Seçilen dosya boş olduğundan okunamıyor." +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Dosya biçimi uyumsuz olduğundan ayrıştırılamıyor." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı olmalıdır." @@ -20003,19 +20210,19 @@ msgstr "Yazıcı adlarını yalnızca yazıcı, filament ve işlem ön ayarları msgid "Only display the filament names with changes to filament presets." msgstr "Filament adlarını yalnızca filament ön ayarlarında yapılan değişikliklerle görüntüleyin." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" "görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak dışa aktarılacaktır." @@ -20260,7 +20467,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Sorunun kaynağını teşhis etmek için bilgiye ihtiyacımız var. Ayrıntılı kılavuz için wiki sayfasına bakın." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Paketle düğmesi, geçerli oturumun proje dosyasını ve günlüklerini bir zip dosyasında toplar." # AI Translated @@ -20316,7 +20523,7 @@ msgid "Stored logs" msgstr "Saklanan günlükler" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Saklanan tüm günlükleri bir zip dosyasında paketler." # AI Translated @@ -20402,7 +20609,7 @@ msgid "Authorizing..." msgstr "Yetkilendiriliyor..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Hata. Yetkilendirme için api belirteci alınamıyor" # AI Translated @@ -20859,8 +21066,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Akıllı filament atamasını etkinleştir: Tasarrufu en üst düzeye çıkarmak için bir filamenti birden çok nozula atayın" # AI Translated -msgid "Fila Saving" -msgstr "Filament Tasarrufu" +msgid "File Saving" +msgstr "Dosya Kaydetme" msgid "Don't remind me again" msgstr "Bana bir daha hatırlatma" @@ -21189,6 +21396,15 @@ msgstr "Bu eylem geri alınamaz. Devam etmek?" msgid "Skipping objects." msgstr "Nesneleri atlama." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Filament Seçin" @@ -21268,6 +21484,9 @@ msgstr "Şimdi Yeniden Başlat" msgid "NO RAMMING AT ALL" msgstr "HİÇBİR ŞEKİLDE ÇARPMA YOK" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "Hacimsel hız" @@ -21829,7 +22048,8 @@ msgstr "" "Baskılarınızı plakalara ayırın\n" "Çok sayıda parçası olan bir modeli baskıya hazır ayrı kalıplara bölebileceğinizi biliyor muydunuz? Bu, tüm parçaları takip etme sürecini basitleştirecektir." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" "Did you know that you can print a model even faster by using the Adaptive Layer Height option? Check it out!" @@ -21902,7 +22122,8 @@ msgstr "" "Gücü artırın\n" "Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek dolgu yoğunluğu kullanabileceğinizi biliyor muydunuz?" -#: resources/data/hints.ini: [hint:When do you need to print with the printer door opened] +#: resources/data/hints.ini: [hint:When do you need to print with the printer +#: door opened] msgid "" "When do you need to print with the printer door opened?\n" "Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature? There is more info about this in the Wiki." @@ -21918,6 +22139,41 @@ msgstr "" "Eğilmeyi önleyin\n" "ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Yerel Wayland canlı görüntüsü, GStreamer GTK video alıcısını gerektirir. Lütfen GStreamer için gtksink eklentisini yükleyin ve ardından OrcaSlicer'ı yeniden başlatın." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Yerel Wayland GStreamer video alıcısı başlatılamadı. Lütfen GStreamer GTK eklentisi kurulumunuzu denetleyin." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Bu görev için Windows Media Player gereklidir! İşletim sisteminiz için ‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden kaydetmek için Evet’e basın" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen OrcaSlicer'ı yeniden yükleyin veya topluluk yardımı isteyin." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Farklı bir kurulumdan bir BambuSource kullanıyorsunuz, video oynatma doğru çalışmayabilir! Düzeltmek için Evet’e basın." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav paketlerini kurmayı deneyin, ardından Orca Slicer’ı yeniden başlatın)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Filament Tasarrufu" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 9f57b6b71a..d72a1f9792 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk <andm1zyk@proton.me>\n" "Language-Team: Ukrainian\n" @@ -2906,6 +2906,10 @@ msgstr "Змінити" msgid "Merge with" msgstr "Обʼєднати з" +# AI Translated +msgid "Decompose Color" +msgstr "Розкласти колір" + msgid "Delete this filament" msgstr "Видалити цей філамент" @@ -3197,6 +3201,10 @@ msgstr "Збірка" msgid "Merge parts to an object" msgstr "Обʼєднати частини в обʼєкт" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Використання змінної висоти шару разом із підшаром змішаного кольору може погіршити якість змішування кольорів." + msgid "Add layers" msgstr "Додати шари" @@ -4781,7 +4789,7 @@ msgstr "" "\n" "Значення буде скинуто на 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Чергування додаткової стінки не працює добре, якщо для параметра \"Забезпечити товщину вертикальної оболонки\" встановлено значення \"Всі\"." msgid "" @@ -4827,7 +4835,7 @@ msgstr "" "НІ - Залишити незалежну висоту шарів підтримки" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height має бути менше висоти шару.\n" @@ -4836,7 +4844,7 @@ msgstr "" # AI Translated #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Глибина зчеплення має бути меншою за глибину оболонки.\n" @@ -4879,6 +4887,9 @@ msgstr "" "Так – змінити ці налаштування та автоматично включити режим спіральна ваза\n" "Ні - цього разу відмовитися від використання режиму спіральна ваза" +msgid "N/A" +msgstr "Н/Д" + msgid "Printing" msgstr "Друк" @@ -5350,9 +5361,6 @@ msgstr "Некоректний шаблон. Використовуйте N, N#K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Невірний формат. Очікуваний векторний формат: \"%1%\"" -msgid "N/A" -msgstr "Н/Д" - # AI Translated msgid "System agents" msgstr "Системні агенти" @@ -6333,16 +6341,22 @@ msgstr "Зберегти проєкт як" msgid "Save current project as" msgstr "Зберегти поточний проєкт як" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Імпорт 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Завантажте модель" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Імпорт Zip-архіву" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Завантажити моделі, що містяться в zip-архіві" msgid "Import Configs" @@ -7891,6 +7905,10 @@ msgstr "Пристосувати поточну пластину" msgid "The %s nozzle can not print %s." msgstr "Сопло %s не може друкувати %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Друк філаменту змішаного кольору на принтері з одним екструдером потребує частої зміни філаменту та промивок, що може суттєво збільшити кількість відходів і ризик засмічення сопла або жолоба для відходів." + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Змішування %1% з %2% в друці не рекомендується.\n" @@ -8019,12 +8037,44 @@ msgstr "Синхронізувати список ниток з AMS" msgid "Set filaments to use" msgstr "Встановити філаменти для використання" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Додати змішаний філамент" + +# AI Translated +msgid "Mixed Filament" +msgstr "Змішаний філамент" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Вилучити останній змішаний філамент" + +# AI Translated +msgid "Add mixed filament" +msgstr "Додати змішаний філамент" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "У змішаного філаменту недійсні або невідповідні компоненти. Будь ласка, відредагуйте відповідні записи ще раз." + msgid "Search plate, object and part." msgstr "Пошук пластини, об’єкта і деталі." msgid "Pellets" msgstr "Гранули" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "У змішаного філаменту пошкоджені посилання на компоненти" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Редагувати / Видалити / Обʼєднати" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Цільовий змішаний філамент використовує цей фізичний філамент як компонент. Обʼєднання вилучить цей фізичний філамент і може зробити змішаний філамент недійсним. Продовжити?" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8179,9 +8229,15 @@ msgstr "Будь ласка, підтвердьте, що G-коди в цих msgid "Customized Preset" msgstr "Пристосований пресет" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + # AI Translated -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Назви компонентів усередині файлу STEP не у форматі UTF8!" +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Назви компонентів усередині файлу STEP не у форматі UTF-8!" msgid "Because of unsupported text encoding, garbage characters may appear!" msgstr "Через непідтримуване кодування тексту можуть зʼявлятися непотрібні символи!" @@ -8202,7 +8258,7 @@ msgstr "Обʼєм обʼєкта дорівнює нулю" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Обʼєкт із файлу %s занадто малий, можливо, в метрах або дюймах.\n" "Ви хочете масштабувати до міліметрів?" @@ -8223,6 +8279,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Виявлено обʼєкт, що складається з кількох частин" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Зіставлення текстур із філаментами" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Попередження під час імпорту текстури" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Завантажити ці файли як єдиний обʼєкт з кількома частинами?\n" @@ -8433,6 +8497,22 @@ msgstr "" msgid "Sync now" msgstr "Синхронізувати зараз" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Не вдалося імпортувати текстуру. Схоже, модель містить дані текстури, але завершити процес імпорту не вдалося. Модель буде імпортовано лише як геометрію." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Застосування кольорів текстури..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Оновлення 3D-вигляду..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Кольори текстури застосовано." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Ви можете зберегти змінені пресети у новому проекті або відмовитися від них" @@ -8567,6 +8647,17 @@ msgstr "Зберегти нарізаний файл як:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s надіслано до памʼяті принтера та доступний для перегляду на принтері." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Публікувати" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Тип сопла не встановлений. Будь ласка, оберіть сопло та спробуйте ще раз." @@ -9714,6 +9805,10 @@ msgstr "Спіральна ваза" msgid "First layer filament sequence" msgstr "Послідовність філаменту першого шару" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Список філаментів містить змішані філаменти. Власна послідовність філаментів не діятиме." + msgid "By Layer" msgstr "По шарах" @@ -9742,9 +9837,6 @@ msgstr "Перейти на веб-сторінку публікації мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примітка. Підготовка може тривати кілька хвилин. Будь ласка, будьте терплячі." -msgid "Publish" -msgstr "Публікувати" - msgid "Publish was canceled" msgstr "Публікація скасована" @@ -9760,6 +9852,64 @@ msgstr "Відвантаження даних" msgid "Jump to webpage" msgstr "Перейти на вебсторінку" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Зберегти %s як" @@ -11173,12 +11323,12 @@ msgstr "%s: %s" msgid "No modifications need to be copied." msgstr "Немає змін для копіювання." -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Параметри копіювання" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Змінити параметри %s" # AI Translated @@ -11717,30 +11867,6 @@ msgstr "Обʼєми промивки для зміни філаменту" msgid "Please choose the filament colour" msgstr "Будь ласка, виберіть колір філаменту" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Нативний перегляд у Wayland потребує відеоприймача GStreamer GTK. Встановіть плагін gtksink для GStreamer, а потім перезапустіть OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Не вдалося ініціалізувати нативний відеоприймач GStreamer для Wayland. Перевірте встановлення плагіна GStreamer GTK." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Для виконання цього завдання потрібен Windows Media Player! Бажаєте увімкнути 'Windows Media Player' для вашої операційної системи?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource не було правильно зареєстровано для відтворення медіафайлів! Натисніть \"Так\", щоб зареєструвати його повторно. Вас буде сповіщено двічі" - -# AI Translated -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Відсутній компонент BambuSource, зареєстрований для відтворення медіа! Перевстановіть OrcaSlicer або зверніться по допомогу до спільноти." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Використовується BambuSource з іншої інсталяції, відтворення відео може працювати неправильно! Натисніть \"Так\", щоб виправити це." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Вашій системі бракує кодеків H.264 для GStreamer, які необхідні для відтворення відео. (Спробуйте встановити пакети gstreamer1.0-plugins-bad або gstreamer1.0-libav, а потім перезапустіть Orca Slicer?)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Хмарний агент недоступний. Перезапустіть OrcaSlicer і спробуйте ще раз." @@ -12462,6 +12588,10 @@ msgstr "Якщо ви все одно хочете друкувати, може msgid "No extrusions under current settings." msgstr "Немає екструзій під час поточних налаштувань." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Використовується змішаний філамент із градієнтом, але параметр «Підшар змішаного кольору» вимкнено. Градієнт не буде надруковано." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Плавний режим таймлапсу не підтримується, коли послідовність \"по обʼєкт\" увімкнено." @@ -12502,6 +12632,10 @@ msgstr "Можливо, ви захочете зменшити розмір мо msgid "Variable layer height is not supported with Organic supports." msgstr "Змінна висота шару не підтримується з Органічними підтримками." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Філамент вежі протирання не може бути змішаним філаментом." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Різні діаметри сопел та різні діаметри філаменту можуть працювати некоректно коли ввімкнена підготовча вежа. Це експериментальна функція, тому використовуйте її з обережністю." @@ -12881,8 +13015,7 @@ msgstr "мм або %" msgid "Other layers" msgstr "Інші шари" -# AI Translated -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Температура столу для всіх шарів, крім першого. Значення 0 означає, що філамент не підтримує друк на Cool Plate SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14296,8 +14429,10 @@ msgstr "Час шару" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Вентилятор охолодження деталей вмикається для шарів, розрахунковий час яких менший за це значення. Швидкість вентилятора інтерполюється між мінімальною та максимальною швидкістю вентилятора відповідно до часу друку шару" +# AI Translated +msgctxt "second" msgid "s" -msgstr "c" +msgstr "с" msgid "Default color" msgstr "Типовий колір" @@ -14627,6 +14762,62 @@ msgstr "Матеріал підтримки" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Допоміжний матеріал зазвичай використовується для друку підтримки" +# AI Translated +msgid "Is mixed filament" +msgstr "Є змішаним філаментом" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Визначає, чи є цей слот філаменту змішаним філаментом, складеним з кількох фізичних філаментів" + +# AI Translated +msgid "Mixed filament components" +msgstr "Компоненти змішаного філаменту" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Розділені комами індекси філаментів-компонентів, починаючи з 1, наприклад \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Частки підшарів змішаного філаменту" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Розділені комами значення часток, сума яких дорівнює 1.0, наприклад \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Градієнт змішаного філаменту" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Вмикає режим градієнта за віссю Z для підшарів змішаного філаменту. Коли увімкнено, частки підшарів змінюються лінійно від шару до шару." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Діапазон градієнта змішаного філаменту" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Початкова та кінцева частки першого компонента в режимі градієнта. Пара значень через кому, наприклад \"0.10,0.90\" означає від 10% до 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Крива градієнта змішаного філаменту" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Необовʼязкова власна крива у стилі Photoshop, що зіставляє поступ за віссю Z із часткою першого компонента. Записується як контрольні точки, розділені вертикальними рисками, у вигляді \"x,y\" (застарілий формат) або \"x,y,m_in,m_out\", коли потрібно перевизначити дотичну (порожнє значення або \"nan\" означає типове значення PCHIP). x належить до [0,1]; y обмежується налаштованим діапазоном часток, наприклад \"0,0.15|0.5,0.50|1,0.85\". Якщо поле порожнє, замість цього використовується лінійний gradient_range." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Градієнт змішаного філаменту для кожної частини" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Коли режим градієнта увімкнено, градієнт застосовується до кожної частини збірки окремо, а не до всієї збірки як до єдиного діапазону Z." + msgid "Filament printable" msgstr "Філамент придатний для друку" @@ -15973,8 +16164,9 @@ msgid "The allowed maximum output force of Y axis" msgstr "Максимальна дозволена вихідна сила осі Y" # AI Translated +msgctxt "Newton" msgid "N" -msgstr "N" +msgstr "Н" msgid "Bed mass of the Y axis" msgstr "Маса столу осі Y" @@ -15982,6 +16174,8 @@ msgstr "Маса столу осі Y" msgid "The machine bed mass load of Y axis" msgstr "Маса навантаження столу машини на вісь Y" +# AI Translated +msgctxt "gram" msgid "g" msgstr "г" @@ -16313,8 +16507,8 @@ msgid "Reduce infill retraction" msgstr "Зменшити втягування заповнення" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Не втягувати, коли переміщення повністю проходить у зоні заповнення. Це означає, що витікання не буде видно. Це може зменшити кількість втягувань для складних моделей і заощадити час друку, але сповільнює нарізку та генерацію G-коду. Зверніть увагу, що z-hop також не виконується в зонах, де втягування пропускається." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Не втягувати, коли переміщення повністю проходить у зоні заповнення. Це означає, що витікання не буде видно. Це може зменшити кількість втягувань для складних моделей і заощадити час друку, але сповільнює нарізку та генерацію G-коду. Зверніть увагу, що Z-hop також не виконується в зонах, де втягування пропускається." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "Цей параметр знижує температуру неактивних екструдерів, щоб запобігти підтіканням." @@ -16489,7 +16683,7 @@ msgstr "Величина втягування після протирання" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Довжина швидкого втягування після протирання, відносно довжини втягування.\n" @@ -16538,7 +16732,7 @@ msgstr "Коли втягування спрацьовує перед зміно msgid "Z-hop height" msgstr "Висота Z-підйому" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Під час кожного втягування сопло трохи піднімається, щоб створити зазор між соплом та об’єктом друку. Це запобігає зіткненню сопла з об’єктом друку під час переміщення. Використання спіральної лінії підняття по осі Z може запобігти появі ниток" msgid "Z-hop lower boundary" @@ -17622,6 +17816,14 @@ msgstr "" "\n" "Якщо встановити значення у параметрі \"Кількість втягування перед витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно буде виконано після нього." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Підшар змішаного кольору" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Вмикає розбиття на підшари змішаного кольору. Коли увімкнено, шари, що містять філаменти змішаного кольору, розбиваються на підшари для отримання ефекту змішування кольорів." + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Вежа протирання може використовуватися для очищення залишків на соплі та стабілізації тиску в камері всередині сопла, щоб уникнути дефектів зовнішнього вигляду під час друку обʼєктів." @@ -18728,6 +18930,10 @@ msgstr "Не вдалося побудувати сітку файлу моде msgid "The supplied file couldn't be read because it's empty." msgstr "Наданий файл не вдалося прочитати, оскільки він порожній" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Формат файлу несумісний, і його не вдається прочитати." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або .amf (.xml)." @@ -20244,12 +20450,12 @@ msgstr "Показувати лише назви принтерів зі змі msgid "Only display the filament names with changes to filament presets." msgstr "Показувати лише назви філаментів зі змінами у пресетах філаменту." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Будуть відображатися лише назви принтерів з пресетами принтера користувача, і кожен обраний пресет буде експортовано у форматі ZIP." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Будуть відображатися лише назви філаментів з налаштуваннями філаменту користувача, \n" "і всі налаштування філаменту користувача для кожної вибраної назви філаменту \n" @@ -20257,7 +20463,7 @@ msgstr "" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Будуть відображатися лише назви принтерів зі зміненими налаштуваннями процесу, \n" "і всі налаштування процесу користувача для кожної вибраної назви принтера будуть \n" @@ -20499,7 +20705,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Нам потрібна інформація для встановлення джерела проблеми. Докладний посібник дивіться на сторінці wiki." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Кнопка «Пакувати» збирає файл проєкту та журнали поточного сеансу в один zip-файл." # AI Translated @@ -20543,7 +20749,7 @@ msgstr "Рівень журналу" msgid "Stored logs" msgstr "Збережені логи" -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Запаковує всі збережені логи у файл zip." msgid "Profiles" @@ -20610,7 +20816,7 @@ msgstr "Тип принтера не знайдено, будь ласка ви msgid "Authorizing..." msgstr "Авторизування..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Помилка. Не вдалося отримати api-токен для авторизування" msgid "Could not parse server response." @@ -21074,8 +21280,9 @@ msgstr "Вилучено" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Дозволити розумне призначення філаменту: Призначте одну нитку до кількох сопел, щоб максимально заощадити" -msgid "Fila Saving" -msgstr "Збереження філаменту" +# AI Translated +msgid "File Saving" +msgstr "Збереження файлу" msgid "Don't remind me again" msgstr "Не нагадувати мені більше" @@ -21366,6 +21573,15 @@ msgstr "Дію не можливо завершити. Продовжити?" msgid "Skipping objects." msgstr "Пропускання обʼєктів." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "Вибрати філамент" @@ -21445,6 +21661,9 @@ msgstr "Перезапустити зараз" msgid "NO RAMMING AT ALL" msgstr "ВЗАГАЛІ БЕЗ УТРАМБУВАННЯ" +msgid "s" +msgstr "c" + msgid "Volumetric speed" msgstr "Обʼємна швидкість" @@ -22081,6 +22300,40 @@ msgstr "" "Уникнення деформації\n" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Нативний перегляд у Wayland потребує відеоприймача GStreamer GTK. Встановіть плагін gtksink для GStreamer, а потім перезапустіть OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Не вдалося ініціалізувати нативний відеоприймач GStreamer для Wayland. Перевірте встановлення плагіна GStreamer GTK." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Для виконання цього завдання потрібен Windows Media Player! Бажаєте увімкнути 'Windows Media Player' для вашої операційної системи?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource не було правильно зареєстровано для відтворення медіафайлів! Натисніть \"Так\", щоб зареєструвати його повторно. Вас буде сповіщено двічі" + +# AI Translated +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Відсутній компонент BambuSource, зареєстрований для відтворення медіа! Перевстановіть OrcaSlicer або зверніться по допомогу до спільноти." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Використовується BambuSource з іншої інсталяції, відтворення відео може працювати неправильно! Натисніть \"Так\", щоб виправити це." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Вашій системі бракує кодеків H.264 для GStreamer, які необхідні для відтворення відео. (Спробуйте встановити пакети gstreamer1.0-plugins-bad або gstreamer1.0-libav, а потім перезапустіть Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +#~ msgid "g" +#~ msgstr "г" + +#~ msgid "Fila Saving" +#~ msgstr "Збереження філаменту" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 00a9a558ba..a0758d51ad 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -3077,6 +3077,10 @@ msgstr "Chỉnh sửa" msgid "Merge with" msgstr "Gộp với" +# AI Translated +msgid "Decompose Color" +msgstr "Phân tách màu" + # AI Translated msgid "Delete this filament" msgstr "Xóa filament này" @@ -3389,6 +3393,10 @@ msgstr "Lắp ráp" msgid "Merge parts to an object" msgstr "Gộp các phần thành một vật thể" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "Sử dụng chiều cao lớp biến đổi cùng với lớp con màu pha trộn có thể làm giảm chất lượng pha màu." + # AI Translated msgid "Add layers" msgstr "Thêm lớp" @@ -5040,7 +5048,7 @@ msgstr "" "\n" "Giá trị sẽ được đặt lại về 0." -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "Luân phiên wall phụ không hoạt động tốt khi đảm bảo độ dày shell dọc được đặt thành Tất cả." msgid "" @@ -5086,7 +5094,7 @@ msgstr "" "NO - Giữ chiều cao lớp support độc lập" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height cần nhỏ hơn layer_height.\n" @@ -5094,7 +5102,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "Độ sâu khóa phải nhỏ hơn độ sâu skin.\n" @@ -5135,6 +5143,10 @@ msgstr "" "Yes - Thay đổi các cài đặt này và bật chế độ spiral tự động\n" "No - Từ bỏ dùng chế độ spiral lần này" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Đang in" @@ -5653,10 +5665,6 @@ msgstr "Mẫu không hợp lệ. Dùng N, N#K, hoặc danh sách phân cách d msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Định dạng không hợp lệ. Mong đợi định dạng vector: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Tác nhân hệ thống" @@ -6681,16 +6689,22 @@ msgstr "Lưu dự án thành" msgid "Save current project as" msgstr "Lưu dự án hiện tại thành" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Nhập 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Tải model" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "Nhập lưu trữ Zip" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "Tải các model chứa trong lưu trữ zip" msgid "Import Configs" @@ -8288,6 +8302,10 @@ msgstr "Tùy chỉnh bản hiện tại" msgid "The %s nozzle can not print %s." msgstr "Đầu phun %s không thể in %s." +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "Việc in filament màu pha trộn trên máy in một extruder đòi hỏi thay filament và xả thường xuyên, điều này có thể làm tăng đáng kể lượng phế liệu và nguy cơ tắc đầu phun / máng chứa phế liệu." + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8430,12 +8448,44 @@ msgstr "Đồng bộ danh sách filament từ AMS" msgid "Set filaments to use" msgstr "Đặt filament để sử dụng" +# AI Translated +msgid "Add Mixed Filament" +msgstr "Thêm filament pha trộn" + +# AI Translated +msgid "Mixed Filament" +msgstr "Filament pha trộn" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "Xóa filament pha trộn cuối cùng" + +# AI Translated +msgid "Add mixed filament" +msgstr "Thêm filament pha trộn" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "Filament pha trộn có thành phần không hợp lệ hoặc không khớp. Vui lòng chỉnh sửa lại các mục bị ảnh hưởng." + msgid "Search plate, object and part." msgstr "Tìm kiếm bản, đối tượng và phần." msgid "Pellets" msgstr "Viên" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "Filament pha trộn có tham chiếu thành phần bị lỗi" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "Chỉnh sửa / Xóa / Gộp" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "Filament pha trộn đích sử dụng filament vật lý này làm thành phần. Việc gộp sẽ xóa filament vật lý này và có thể làm filament pha trộn không còn hợp lệ. Tiếp tục?" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8585,8 +8635,14 @@ msgstr "Vui lòng xác nhận G-code trong các preset này an toàn để ngăn msgid "Customized Preset" msgstr "Preset tùy chỉnh" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF8!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF-8!" # AI Translated msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -8608,10 +8664,10 @@ msgstr "Thể tích của đối tượng bằng không" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "Đối tượng từ file %s quá nhỏ, và có thể đang ở đơn vị mét hoặc inch.\n" -" Bạn có muốn chuyển đổi sang milimét?" +"Bạn có muốn chuyển đổi sang milimét?" msgid "Object too small" msgstr "Đối tượng quá nhỏ" @@ -8628,6 +8684,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "Phát hiện đối tượng nhiều phần" +# AI Translated +msgid "Matching textures to filaments" +msgstr "Đang khớp kết cấu với filament" + +# AI Translated +msgid "Texture Import Warning" +msgstr "Cảnh báo nhập kết cấu" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Tải các file này như một đối tượng đơn với nhiều phần?\n" @@ -8857,6 +8921,22 @@ msgstr "" msgid "Sync now" msgstr "Đồng bộ ngay" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "Nhập kết cấu thất bại. Mô hình có vẻ chứa dữ liệu kết cấu, nhưng không thể hoàn tất quá trình nhập kết cấu. Mô hình sẽ chỉ được nhập dưới dạng hình học." + +# AI Translated +msgid "Applying texture colors..." +msgstr "Đang áp dụng màu kết cấu..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "Đang cập nhật khung nhìn 3D..." + +# AI Translated +msgid "Texture colors applied." +msgstr "Đã áp dụng màu kết cấu." + msgid "You can keep the modified presets for the new project or discard them" msgstr "Bạn có thể giữ các preset đã chỉnh sửa cho dự án mới hoặc loại bỏ chúng" @@ -8988,6 +9068,17 @@ msgstr "Lưu file đã slice dưới dạng:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "File %s đã được gửi đến không gian lưu trữ của máy in và có thể được xem trên máy in." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Xuất bản" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Chưa đặt loại đầu phun. Vui lòng đặt đầu phun rồi thử lại." @@ -10227,6 +10318,10 @@ msgstr "Bình xoắn ốc" msgid "First layer filament sequence" msgstr "Trình tự filament lớp đầu tiên" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "Danh sách filament có chứa filament pha trộn. Trình tự filament tùy chỉnh sẽ không có hiệu lực." + msgid "By Layer" msgstr "Theo lớp" @@ -10254,9 +10349,6 @@ msgstr "Chuyển đến trang web xuất bản model" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Lưu ý: Chuẩn bị có thể mất vài phút. Vui lòng kiên nhẫn." -msgid "Publish" -msgstr "Xuất bản" - msgid "Publish was canceled" msgstr "Xuất bản đã bị hủy" @@ -10273,6 +10365,64 @@ msgstr "Đang tải dữ liệu lên" msgid "Jump to webpage" msgstr "Chuyển đến trang web" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Lưu %s dưới dạng" @@ -11692,12 +11842,12 @@ msgid "No modifications need to be copied." msgstr "Không có thay đổi nào cần sao chép." # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "Sao chép tham số" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "Sửa tham số của %s" # AI Translated @@ -12266,29 +12416,6 @@ msgstr "Khối lượng xả khi thay filament" msgid "Please choose the filament colour" msgstr "Vui lòng chọn màu filament" -# AI Translated -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "Xem trực tiếp trên Wayland thuần cần GStreamer GTK video sink. Vui lòng cài đặt plugin gtksink cho GStreamer, sau đó khởi động lại OrcaSlicer." - -# AI Translated -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "Khởi tạo GStreamer video sink trên Wayland thuần thất bại. Vui lòng kiểm tra việc cài đặt plugin GStreamer GTK của bạn." - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "Windows Media Player là cần thiết cho tác vụ này! Bạn có muốn bật 'Windows Media Player' cho hệ điều hành của bạn?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource chưa được đăng ký chính xác để phát media! Nhấn Có để đăng ký lại. Bạn sẽ được nhắc hai lần" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "Thiếu thành phần BambuSource đã đăng ký để phát media! Vui lòng cài đặt lại OrcaSlicer hoặc tìm kiếm sự giúp đỡ từ cộng đồng." - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "Đang sử dụng BambuSource từ cài đặt khác, phát video có thể không hoạt động đúng! Nhấn Có để sửa nó." - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "Hệ thống của bạn thiếu codec H.264 cho GStreamer, cần thiết để phát video. (Hãy thử cài đặt gói gstreamer1.0-plugins-bad hoặc gstreamer1.0-libav, sau đó khởi động lại Orca Slicer?)" - # AI Translated msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "Tác nhân cloud không khả dụng. Vui lòng khởi động lại OrcaSlicer rồi thử lại." @@ -13037,6 +13164,10 @@ msgstr "Nếu bạn vẫn muốn in, bạn có thể bật tùy chọn trong Tù msgid "No extrusions under current settings." msgstr "Không có đùn dưới cài đặt hiện tại." +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "Đang dùng filament pha trộn có gradient, nhưng 'Lớp con màu pha trộn' đã bị tắt. Gradient sẽ không được in." + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Chế độ mượt của timelapse không được hỗ trợ khi trình tự \"theo đối tượng\" được bật." @@ -13075,6 +13206,10 @@ msgstr "Bạn có thể muốn giảm kích thước model của mình hoặc th msgid "Variable layer height is not supported with Organic supports." msgstr "Chiều cao lớp thay đổi không được hỗ trợ với support hữu cơ." +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "Filament của wipe tower không thể là filament pha trộn." + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Đường kính đầu phun khác nhau và đường kính filament khác nhau có thể không hoạt động tốt khi prime tower được bật. Nó rất thử nghiệm, vì vậy vui lòng tiến hành thận trọng." @@ -13449,7 +13584,7 @@ msgstr "mm hoặc %" msgid "Other layers" msgstr "Lớp khác" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "Nhiệt độ bàn cho các lớp ngoại trừ lớp đầu tiên. Giá trị 0 có nghĩa là filament không hỗ trợ in trên bản Cool SuperTack." msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -14857,6 +14992,8 @@ msgstr "Thời gian lớp" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "Quạt làm mát phần sẽ được bật cho các lớp có thời gian ước tính ngắn hơn giá trị này. Tốc độ quạt được nội suy giữa tốc độ quạt tối thiểu và tối đa theo thời gian in lớp." +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -15196,6 +15333,62 @@ msgstr "Vật liệu support" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Vật liệu support thường được sử dụng để in support và giao diện support." +# AI Translated +msgid "Is mixed filament" +msgstr "Là filament pha trộn" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "Xác định xem khe filament này có phải là filament pha trộn gồm nhiều filament vật lý hay không" + +# AI Translated +msgid "Mixed filament components" +msgstr "Thành phần của filament pha trộn" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "Chỉ số của các filament thành phần, bắt đầu từ 1, phân tách bằng dấu phẩy, ví dụ \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "Tỷ lệ lớp con của filament pha trộn" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "Các giá trị tỷ lệ phân tách bằng dấu phẩy, có tổng bằng 1.0, ví dụ \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "Gradient của filament pha trộn" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "Bật chế độ gradient theo phương Z cho các lớp con của filament pha trộn. Khi bật, tỷ lệ các lớp con thay đổi tuyến tính qua các lớp." + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "Phạm vi gradient của filament pha trộn" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "Tỷ lệ đầu và cuối của thành phần thứ nhất ở chế độ gradient. Cặp giá trị phân tách bằng dấu phẩy, ví dụ \"0.10,0.90\" nghĩa là từ 10% đến 90%." + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "Đường cong gradient của filament pha trộn" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "Đường cong tùy chỉnh kiểu Photoshop (tùy chọn) ánh xạ tiến trình theo Z sang tỷ lệ của thành phần thứ nhất. Được mã hóa dưới dạng các điểm điều khiển phân tách bằng dấu gạch đứng, theo dạng \"x,y\" (kiểu cũ) hoặc \"x,y,m_in,m_out\" khi cần ghi đè tiếp tuyến (giá trị trống hoặc \"nan\" nghĩa là dùng mặc định PCHIP). x nằm trong [0,1]; y bị giới hạn trong phạm vi tỷ lệ đã cấu hình, ví dụ \"0,0.15|0.5,0.50|1,0.85\". Khi để trống, gradient_range tuyến tính sẽ được dùng thay thế." + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "Gradient theo từng phần của filament pha trộn" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "Khi chế độ gradient được bật, áp dụng gradient cho từng phần của một cụm lắp ráp một cách độc lập thay vì coi toàn bộ cụm lắp ráp là một phạm vi Z duy nhất." + # AI Translated msgid "Filament printable" msgstr "Filament in được" @@ -16508,6 +16701,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Lực đầu ra tối đa cho phép của trục Y" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -16520,6 +16714,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Tải khối lượng bàn máy của trục Y" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -16846,8 +17041,8 @@ msgid "Reduce infill retraction" msgstr "Giảm rút infill" # AI Translated -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." -msgstr "Không rút khi di chuyển ở vùng infill hoàn toàn. Điều đó có nghĩa là chảy nhựa không thể nhìn thấy. Điều này có thể giảm số lần rút cho model phức tạp và tiết kiệm thời gian in, nhưng làm cho slice và tạo G-code chậm hơn. Lưu ý rằng z-hop cũng không được thực hiện ở những vùng bỏ qua việc rút." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." +msgstr "Không rút khi di chuyển ở vùng infill hoàn toàn. Điều đó có nghĩa là chảy nhựa không thể nhìn thấy. Điều này có thể giảm số lần rút cho model phức tạp và tiết kiệm thời gian in, nhưng làm cho slice và tạo G-code chậm hơn. Lưu ý rằng Z-hop cũng không được thực hiện ở những vùng bỏ qua việc rút." msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "Tùy chọn này sẽ giảm nhiệt độ của các extruder không hoạt động để ngăn chảy nhựa." @@ -17022,7 +17217,7 @@ msgstr "Lượng rút sau khi lau" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "Độ dài rút nhanh sau khi lau, tương đối so với độ dài rút.\n" @@ -17071,7 +17266,7 @@ msgstr "Khi rút được kích hoạt trước khi đổi công cụ, filament msgid "Z-hop height" msgstr "Chiều cao Z-hop" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "Bất cứ khi nào rút được thực hiện, đầu phun được nâng lên một chút để tạo khoảng trống giữa đầu phun và bản in. Nó ngăn đầu phun va vào bản in khi di chuyển. Sử dụng đường xoắn ốc để nâng Z có thể ngăn dây kéo." msgid "Z-hop lower boundary" @@ -18140,6 +18335,14 @@ msgstr "" "\n" "Đặt giá trị trong cài đặt lượng rút trước khi lau bên dưới sẽ thực hiện bất kỳ rút dư nào trước khi lau, nếu không nó sẽ được thực hiện sau." +# AI Translated +msgid "Mixed color sublayer" +msgstr "Lớp con màu pha trộn" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "Bật việc chia thành lớp con màu pha trộn. Khi bật, các lớp có chứa filament màu pha trộn sẽ được chia thành các lớp con để tạo hiệu ứng pha màu." + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wipe tower có thể được sử dụng để làm sạch cặn trên đầu phun và ổn định áp suất buồng bên trong đầu phun, để tránh khuyết điểm bề ngoài khi in đối tượng." @@ -19260,6 +19463,10 @@ msgstr "Tạo lưới cho file mô hình thất bại hoặc không có hình d msgid "The supplied file couldn't be read because it's empty." msgstr "File được cung cấp không thể đọc được vì nó trống" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "Định dạng tệp không tương thích nên không thể phân tích." + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Định dạng file không xác định. File đầu vào phải có phần mở rộng .stl, .obj, .amf(.xml)." @@ -20793,19 +21000,19 @@ msgstr "Chỉ hiển thị tên máy in có thay đổi đối với cài đặt msgid "Only display the filament names with changes to filament presets." msgstr "Chỉ hiển thị tên filament có thay đổi đối với cài đặt sẵn filament." -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "Chỉ tên máy in có cài đặt sẵn máy in người dùng sẽ được hiển thị, và mỗi cài đặt sẵn bạn chọn sẽ được xuất dưới dạng zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "Chỉ tên filament có cài đặt sẵn filament người dùng sẽ được hiển thị, \n" "và tất cả cài đặt sẵn filament người dùng trong mỗi tên filament bạn chọn sẽ được xuất dưới dạng zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "Chỉ tên máy in có cài đặt sẵn quy trình đã thay đổi sẽ được hiển thị, \n" "và tất cả cài đặt sẵn quy trình người dùng trong mỗi tên máy in bạn chọn sẽ được xuất dưới dạng zip." @@ -21057,7 +21264,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "Chúng tôi cần thông tin để chẩn đoán nguồn gốc vấn đề. Hãy xem trang wiki để có hướng dẫn chi tiết." # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "Nút Đóng gói thu thập file dự án và nhật ký của phiên hiện tại vào một file zip." # AI Translated @@ -21113,7 +21320,7 @@ msgid "Stored logs" msgstr "Nhật ký đã lưu" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "Đóng gói toàn bộ nhật ký đã lưu vào một file zip." # AI Translated @@ -21201,7 +21408,7 @@ msgid "Authorizing..." msgstr "Đang xác thực..." # AI Translated -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "Lỗi. Không lấy được token api để xác thực" # AI Translated @@ -21681,8 +21888,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "Bật gán filament thông minh: Gán một filament cho nhiều đầu phun để tối đa hóa tiết kiệm" # AI Translated -msgid "Fila Saving" -msgstr "Tiết kiệm fila" +msgid "File Saving" +msgstr "Lưu tệp" # AI Translated msgid "Don't remind me again" @@ -22036,6 +22243,15 @@ msgstr "Thao tác này không thể hoàn tác. Tiếp tục?" msgid "Skipping objects." msgstr "Đang bỏ qua các vật thể." +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + # AI Translated msgid "Select Filament" msgstr "Chọn filament" @@ -22138,6 +22354,9 @@ msgstr "Khởi động lại ngay" msgid "NO RAMMING AT ALL" msgstr "HOÀN TOÀN KHÔNG RAMMING" +msgid "s" +msgstr "s" + # AI Translated msgid "Volumetric speed" msgstr "Tốc độ thể tích" @@ -22804,6 +23023,41 @@ msgstr "" "Tránh cong vênh\n" "Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?" +# AI Translated +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "Xem trực tiếp trên Wayland thuần cần GStreamer GTK video sink. Vui lòng cài đặt plugin gtksink cho GStreamer, sau đó khởi động lại OrcaSlicer." + +# AI Translated +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "Khởi tạo GStreamer video sink trên Wayland thuần thất bại. Vui lòng kiểm tra việc cài đặt plugin GStreamer GTK của bạn." + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "Windows Media Player là cần thiết cho tác vụ này! Bạn có muốn bật 'Windows Media Player' cho hệ điều hành của bạn?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource chưa được đăng ký chính xác để phát media! Nhấn Có để đăng ký lại. Bạn sẽ được nhắc hai lần" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "Thiếu thành phần BambuSource đã đăng ký để phát media! Vui lòng cài đặt lại OrcaSlicer hoặc tìm kiếm sự giúp đỡ từ cộng đồng." + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "Đang sử dụng BambuSource từ cài đặt khác, phát video có thể không hoạt động đúng! Nhấn Có để sửa nó." + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "Hệ thống của bạn thiếu codec H.264 cho GStreamer, cần thiết để phát video. (Hãy thử cài đặt gói gstreamer1.0-plugins-bad hoặc gstreamer1.0-libav, sau đó khởi động lại Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "Tiết kiệm fila" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 133e0815a4..7c474031c9 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle <mail@bysb.net>\n" "Language-Team: \n" @@ -2843,6 +2843,10 @@ msgstr "编辑" msgid "Merge with" msgstr "与其合并" +# AI Translated +msgid "Decompose Color" +msgstr "分解颜色" + msgid "Delete this filament" msgstr "移除此耗材" @@ -3124,6 +3128,10 @@ msgstr "组合体" msgid "Merge parts to an object" msgstr "合并零件到对象" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "同时使用可变层高与混色子层可能导致混色质量不佳。" + msgid "Add layers" msgstr "添加层" @@ -4641,7 +4649,7 @@ msgstr "" "\n" "这个数值将被重置为0。" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "“交替添加额外”与“确保垂直外壳厚度”的”全部“选项不兼容。" msgid "" @@ -4687,7 +4695,7 @@ msgstr "" "否 - 选择保留支撑独立层高" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height需要小于layer_height。\n" @@ -4695,7 +4703,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "锁定深度应小于表皮深度。\n" @@ -4735,6 +4743,9 @@ msgstr "" "是 - 自动调整这些设置并开启旋转模式\n" "否 - 暂不使用旋转模式" +msgid "N/A" +msgstr "不适用" + msgid "Printing" msgstr "打印中" @@ -5194,9 +5205,6 @@ msgstr "无效的模式。请使用 N、N#K 或逗号分隔的列表(每个条 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "无效格式,应该是\"%1%\"这种数组格式" -msgid "N/A" -msgstr "不适用" - # AI Translated msgid "System agents" msgstr "系统代理" @@ -6151,16 +6159,22 @@ msgstr "项目另存为" msgid "Save current project as" msgstr "项目另存为" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "加载模型" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "导入 ZIP 压缩文件" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "从 ZIP 压缩文件中导入一个或多个模型" msgid "Import Configs" @@ -7638,6 +7652,10 @@ msgstr "自定义当前盘" msgid "The %s nozzle can not print %s." msgstr "%s 喷嘴无法打印 %s。" +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "在单挤出机打印机上打印混色耗材丝需要频繁换料和冲刷,可能显著增加废料以及喷嘴/废料槽堵塞的风险。" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "不建议在打印时将 %1% 与 %2% 混合。\n" @@ -7763,12 +7781,44 @@ msgstr "从AMS同步材料列表" msgid "Set filaments to use" msgstr "配置可选择的材料" +# AI Translated +msgid "Add Mixed Filament" +msgstr "添加混合耗材丝" + +# AI Translated +msgid "Mixed Filament" +msgstr "混合耗材丝" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "移除最后一个混合耗材丝" + +# AI Translated +msgid "Add mixed filament" +msgstr "添加混合耗材丝" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "混合耗材丝的组分无效或不匹配。请重新编辑受影响的条目。" + msgid "Search plate, object and part." msgstr "搜索盘、模型和零件。" msgid "Pellets" msgstr "颗粒" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "混合耗材丝的组分引用已失效" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "编辑 / 删除 / 合并" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "目标混合耗材丝将此物理耗材丝用作组分。合并将移除此物理耗材丝,并可能使该混合耗材丝失效。是否继续?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "完成操作后,%s 项目将关闭并创建一个新项目。" @@ -7905,8 +7955,14 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造 msgid "Customized Preset" msgstr "自定义的预设" -msgid "Component name(s) inside step file not in UTF8 format!" -msgstr "STEP 文件中的部件名称不是 UTF8 格式!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" +msgstr "STEP 文件中的部件名称不是 UTF-8 格式!" # AI Translated msgid "Because of unsupported text encoding, garbage characters may appear!" @@ -7928,7 +7984,7 @@ msgstr "对象的体积为零" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "文件 %s 中对象的尺寸过小,似乎是以米(m)或者英寸(inch)为单位定义的。\n" "OrcaSlicer的内部单位为毫米(mm)。是否要转换成毫米(mm)?" @@ -7949,6 +8005,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "检测到多部分对象" +# AI Translated +msgid "Matching textures to filaments" +msgstr "正在将纹理匹配到耗材丝" + +# AI Translated +msgid "Texture Import Warning" +msgstr "纹理导入警告" + msgid "Load these files as a single object with multiple parts?\n" msgstr "将这些文件加载为一个多零件对象?\n" @@ -8154,6 +8218,22 @@ msgstr "" msgid "Sync now" msgstr "立即同步" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "纹理导入失败。模型中似乎包含纹理数据,但纹理导入过程未能完成。将仅导入模型的几何数据。" + +# AI Translated +msgid "Applying texture colors..." +msgstr "正在应用纹理颜色..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "正在更新 3D 视图..." + +# AI Translated +msgid "Texture colors applied." +msgstr "纹理颜色已应用。" + msgid "You can keep the modified presets for the new project or discard them" msgstr "您可以保留修改的预设到新项目中或者忽略这些修改" @@ -8286,6 +8366,17 @@ msgstr "切片文件另存为:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "发布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "未设置喷嘴类型。请设置喷嘴并重试。" @@ -9389,6 +9480,10 @@ msgstr "旋转花瓶" msgid "First layer filament sequence" msgstr "首层耗材打印顺序" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "耗材丝列表中包含混合耗材丝。自定义耗材丝顺序将不会生效。" + msgid "By Layer" msgstr "逐层" @@ -9417,9 +9512,6 @@ msgstr "跳转到发布页面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:发布前需要一些准备时间,请耐心等待。" -msgid "Publish" -msgstr "发布" - msgid "Publish was canceled" msgstr "发布已取消" @@ -9435,6 +9527,64 @@ msgstr "正在上传数据" msgid "Jump to webpage" msgstr "跳转到网页" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存%s为" @@ -10738,12 +10888,12 @@ msgid "No modifications need to be copied." msgstr "没有需要复制的修改。" # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "复制参数" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "修改 %s 的参数" # AI Translated @@ -11258,27 +11408,6 @@ msgstr "耗材丝更换时的冲刷体积" msgid "Please choose the filament colour" msgstr "请选择耗材丝颜色" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。" - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "原生 Wayland GStreamer 视频接收器初始化失败。请检查您的 GStreamer GTK 插件安装情况。" - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "此任务需要 Windows Media Player!您是否要为您的操作系统启用'Windows Media Player'?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "BambuSource 未正确注册用于媒体播放!按是重新注册它。您将被提示两次" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "缺少用于媒体播放的已注册 BambuSource 组件!请重新安装 OrcaSlicer 或寻求社区帮助。" - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "使用来自不同安装的 BambuSource,视频播放可能无法正常工作!按是修复它。" - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "您的系统缺少 GStreamer 所需的 H.264 编解码器,这是播放视频所必需的。(尝试安装 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 软件包,然后重新启动 Orca Slicer?)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "云代理不可用。请重启 OrcaSlicer 后重试。" @@ -11991,6 +12120,10 @@ msgstr "如果您仍要打印,可以在 偏好设置 / 控制 / 切片 / 移 msgid "No extrusions under current settings." msgstr "根据当前设置,不会生成任何打印。" +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "使用了渐变混合耗材丝,但“混色子层”已关闭。渐变将不会被打印。" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "平滑模式的延时摄影不支持在逐件打印模式下使用。" @@ -12027,6 +12160,10 @@ msgstr "或许您想要缩小模型的尺寸,或者更改当前打印设置, msgid "Variable layer height is not supported with Organic supports." msgstr "Organic支撑不支持可变层高。" +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "擦拭塔耗材丝不能是混合耗材丝。" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "当启用擦拭塔时,不同的喷嘴直径和不同的耗材丝直径可能无法很好地工作。这是非常实验性的,所以请谨慎操作。" @@ -12374,7 +12511,7 @@ msgstr "mm 或 %" msgid "Other layers" msgstr "其它层" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "除首层外的其他层的热床温度。0值表示该耗材丝不支持在Cool Plate SuperTack上打印。" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13695,6 +13832,8 @@ msgstr "层时间" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "当层预估打印时间小于该数值时,部件冷却风扇将会被开启。风扇转速将根据层打印时间在最大和最小风扇转速之间插值获得" +# AI Translated +msgctxt "second" msgid "s" msgstr "s" @@ -14013,6 +14152,62 @@ msgstr "支撑材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "支撑材料通常用于打印支撑体和支撑接触面" +# AI Translated +msgid "Is mixed filament" +msgstr "是否为混合耗材丝" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "该耗材丝槽位是否为由多种物理耗材丝组成的混合耗材丝" + +# AI Translated +msgid "Mixed filament components" +msgstr "混合耗材丝组分" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "以逗号分隔的组分耗材丝序号(从 1 开始),例如 \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "混合耗材丝子层比例" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "以逗号分隔、总和为 1.0 的比例值,例如 \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "混合耗材丝渐变" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "为混合耗材丝的子层启用 Z 方向渐变模式。启用后,子层比例会随层数线性变化。" + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "混合耗材丝渐变范围" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "渐变模式下第一个组分的起始和结束比例。以逗号分隔的一对数值,例如 \"0.10,0.90\" 表示从 10% 到 90%。" + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "混合耗材丝渐变曲线" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "可选的 Photoshop 风格自定义曲线,将 Z 方向进度映射到第一个组分的比例。以竖线分隔的控制点进行编码,格式为 \"x,y\"(旧格式)或在需要覆盖切线时使用 \"x,y,m_in,m_out\"(留空或填 \"nan\" 表示使用 PCHIP 默认值)。x 取值范围为 [0,1];y 会被限制在所配置的比例范围内,例如 \"0,0.15|0.5,0.50|1,0.85\"。留空时改用线性的 gradient_range。" + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "混合耗材丝逐零件渐变" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "启用渐变模式时,对组合体中的每个零件分别应用渐变,而不是将整个组合体视为一个 Z 范围。" + msgid "Filament printable" msgstr "可打印耗材" @@ -15264,6 +15459,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Y 轴允许的最大输出力" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15276,6 +15472,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Y 轴的机器热床质量负载" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15583,7 +15780,7 @@ msgstr "从切割区域到垃圾桶的起始和结束点。" msgid "Reduce infill retraction" msgstr "减小填充回抽" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "当空驶完全在填充区域内时不触发回抽。这意味着即使漏料也是不可见的。对于复杂模型,该设置能够减少回抽次数以及打印时长,但是会造成G-code生成变慢" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15754,7 +15951,7 @@ msgstr "擦拭后的回抽量" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "擦拭后快速回抽的长度,相对于回抽长度。\n" @@ -15801,7 +15998,7 @@ msgstr "在换工具头之前触发回抽时,耗材丝会按指定的长度回 msgid "Z-hop height" msgstr "Z抬升高度" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "回抽完成之后,喷嘴轻微抬升,和打印件之间产生一定间隙。这能够避免空驶时喷嘴和打印件剐蹭和碰撞。使用螺旋线抬升z能够减少拉丝。" msgid "Z-hop lower boundary" @@ -16847,6 +17044,14 @@ msgstr "" "\n" "在下方的擦拭前回抽量设置中输入一个数值,将在擦拭动作之前执行任何超出部分的回抽,否则超出部分的回抽将在擦拭之后执行。" +# AI Translated +msgid "Mixed color sublayer" +msgstr "混色子层" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "启用混色子层拆分。启用后,含有混色耗材丝的层将被拆分为子层,以实现混色效果。" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "擦拭塔可以用来清理喷嘴上的残留料和让喷嘴内部的腔压达到稳定状态,以避免打印物体时出现外观瑕疵。" @@ -17922,6 +18127,10 @@ msgstr "模型文件的网格划分失败,或缺少有效的形状。" msgid "The supplied file couldn't be read because it's empty." msgstr "无法读取提供的文件,因为该文件内容为空。" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "文件格式不兼容,无法解析。" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "未知的文件格式。输入文件的扩展名必须为 .stl、.obj 或 .amf(.xml)。" @@ -19386,17 +19595,17 @@ msgstr "仅显示对打印机、耗材和工艺预设有改动的打印机名称 msgid "Only display the filament names with changes to filament presets." msgstr "仅显示对耗材预设有改动的耗材名称。" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "只显示带有用户打印机预设的打印机名称,并且您选择的每个预设都将导出为一个 ZIP 文件。" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "只显示带有用户耗材预设的耗材名称,您选择的每个耗材名称中的所有用户耗材预设都将导出为一个 ZIP 文件。" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "只显示带有更改的工艺预设的打印机名称,您选择的每个打印机名称中的所有用户工艺预设都将导出为一个 ZIP 文件。" msgid "Please select at least one printer or filament." @@ -19635,7 +19844,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "我们需要相关信息来诊断问题的根源。请查看 wiki 页面获取详细指南。" # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "“打包”按钮会将当前会话的项目文件和日志收集到一个 zip 文件中。" # AI Translated @@ -19691,7 +19900,7 @@ msgid "Stored logs" msgstr "已存储的日志" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "将所有已存储的日志打包到一个 zip 文件中。" # AI Translated @@ -19771,7 +19980,7 @@ msgstr "未找到打印机类型,请手动选择。" msgid "Authorizing..." msgstr "正在授权..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "错误。无法获取用于授权的 API 令牌" msgid "Could not parse server response." @@ -20221,8 +20430,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "启用智能耗材分配:将一种耗材分配给多个喷嘴以最大化节省" # AI Translated -msgid "Fila Saving" -msgstr "耗材节省" +msgid "File Saving" +msgstr "文件保存" msgid "Don't remind me again" msgstr "不再提醒" @@ -20508,6 +20717,15 @@ msgstr "此操作无法撤消。继续?" msgid "Skipping objects." msgstr "跳过对象。" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "选择耗材" @@ -20587,6 +20805,9 @@ msgstr "立即重启" msgid "NO RAMMING AT ALL" msgstr "完全不挤压" +msgid "s" +msgstr "s" + msgid "Volumetric speed" msgstr "体积流量" @@ -21211,6 +21432,39 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。" + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "原生 Wayland GStreamer 视频接收器初始化失败。请检查您的 GStreamer GTK 插件安装情况。" + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "此任务需要 Windows Media Player!您是否要为您的操作系统启用'Windows Media Player'?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "BambuSource 未正确注册用于媒体播放!按是重新注册它。您将被提示两次" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "缺少用于媒体播放的已注册 BambuSource 组件!请重新安装 OrcaSlicer 或寻求社区帮助。" + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "使用来自不同安装的 BambuSource,视频播放可能无法正常工作!按是修复它。" + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "您的系统缺少 GStreamer 所需的 H.264 编解码器,这是播放视频所必需的。(尝试安装 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 软件包,然后重新启动 Orca Slicer?)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "耗材节省" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index cf6a2519c3..83b22ca029 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-09-03 10:27+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -2913,6 +2913,10 @@ msgstr "編輯" msgid "Merge with" msgstr "合併到" +# AI Translated +msgid "Decompose Color" +msgstr "分解顏色" + msgid "Delete this filament" msgstr "刪除此線材" @@ -3209,6 +3213,10 @@ msgstr "組合體" msgid "Merge parts to an object" msgstr "合併零件為物件" +# AI Translated +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "同時使用可變層高與混色子層可能導致混色品質不佳。" + # AI Translated msgid "Add layers" msgstr "新增層" @@ -4758,7 +4766,7 @@ msgstr "" "\n" "該值將會重設為 0。" -msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All." +msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All." msgstr "當確保垂直外殼厚度設為『全部』時,交錯額外牆壁效果不佳。" msgid "" @@ -4815,7 +4823,7 @@ msgstr "" "否 - 選擇保留獨立支撐層高" msgid "" -"seam_slope_start_height need to be smaller than layer_height.\n" +"seam_slope_start_height needs to be smaller than layer_height.\n" "Reset to 0." msgstr "" "seam_slope_start_height 必須小於 layer_height。\n" @@ -4824,7 +4832,7 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Lock depth should smaller than skin depth.\n" +"Lock depth should be smaller than skin depth.\n" "Reset to 50% of skin depth." msgstr "" "鎖定深度應小於表皮深度。\n" @@ -4864,6 +4872,9 @@ msgstr "" "是 - 自動調整這些設定並啟用花瓶模式\n" "否 - 不使用花瓶模式" +msgid "N/A" +msgstr "不適用" + msgid "Printing" msgstr "列印中" @@ -5323,9 +5334,6 @@ msgstr "無效的格式。請使用 N、N#K 或逗號分隔的清單,每個項 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無效格式,應該是「%1%」這種格式" -msgid "N/A" -msgstr "不適用" - # AI Translated msgid "System agents" msgstr "系統代理程式" @@ -6281,16 +6289,22 @@ msgstr "另存專案為" msgid "Save current project as" msgstr "將目前專案另存為" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "載入模型" -msgid "Import Zip Archive" +msgid "Import ZIP Archive" msgstr "匯入壓縮檔" -msgid "Load models contained within a zip archive" +msgid "Load models contained within a ZIP archive" msgstr "載入壓縮檔中的模型" msgid "Import Configs" @@ -7799,6 +7813,10 @@ msgstr "自訂列印板參數" msgid "The %s nozzle can not print %s." msgstr "%s 噴嘴無法列印 %s。" +# AI Translated +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "在單擠出機列印裝置上列印混色線材需要頻繁換料與清理,可能大幅增加廢料以及噴嘴/廢料槽堵塞的風險。" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "不建議在列印時混用 %1% 和 %2%。\n" @@ -7924,12 +7942,44 @@ msgstr "從 AMS 同步線材清單" msgid "Set filaments to use" msgstr "設定可選擇的線材" +# AI Translated +msgid "Add Mixed Filament" +msgstr "新增混合線材" + +# AI Translated +msgid "Mixed Filament" +msgstr "混合線材" + +# AI Translated +msgid "Remove last mixed filament" +msgstr "移除最後一個混合線材" + +# AI Translated +msgid "Add mixed filament" +msgstr "新增混合線材" + +# AI Translated +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "混合線材的成分無效或不相符。請重新編輯受影響的項目。" + msgid "Search plate, object and part." msgstr "搜尋列印板、物件和零件。" msgid "Pellets" msgstr "顆粒" +# AI Translated +msgid "Mixed filament has broken component references" +msgstr "混合線材的成分參照已失效" + +# AI Translated +msgid "Edit / Delete / Merge" +msgstr "編輯 / 刪除 / 合併" + +# AI Translated +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "目標混合線材使用此實體線材作為成分。合併將移除此實體線材,並可能使該混合線材失效。是否繼續?" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "完成操作後,%s 專案將關閉並建立新專案。" @@ -8066,7 +8116,13 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝 msgid "Customized Preset" msgstr "自訂預設" -msgid "Component name(s) inside step file not in UTF8 format!" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed:" +msgstr "" + +msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!" # AI Translated @@ -8089,7 +8145,7 @@ msgstr "物件的體積為零" #, c-format, boost-format msgid "" "The object from file %s is too small, and may be in meters or inches.\n" -" Do you want to scale to millimeters?" +"Do you want to scale to millimeters?" msgstr "" "檔案 %s 中的物件太小,可能以公尺(M)或英吋(Inches)為單位。\n" "是否要轉換成毫米(mm)?" @@ -8110,6 +8166,14 @@ msgstr "" msgid "Multi-part object detected" msgstr "偵測到多部分物件" +# AI Translated +msgid "Matching textures to filaments" +msgstr "正在將紋理對應到線材" + +# AI Translated +msgid "Texture Import Warning" +msgstr "紋理匯入警告" + msgid "Load these files as a single object with multiple parts?\n" msgstr "將這些檔案載入為一個多零件物件?\n" @@ -8320,6 +8384,22 @@ msgstr "" msgid "Sync now" msgstr "立即同步" +# AI Translated +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "紋理匯入失敗。模型中似乎包含紋理資料,但紋理匯入程序未能完成。將僅匯入模型的幾何資料。" + +# AI Translated +msgid "Applying texture colors..." +msgstr "正在套用紋理顏色..." + +# AI Translated +msgid "Updating 3D view..." +msgstr "正在更新 3D 檢視..." + +# AI Translated +msgid "Texture colors applied." +msgstr "紋理顏色已套用。" + msgid "You can keep the modified presets for the new project or discard them" msgstr "您可以將修改後的預設檔保留到新專案中或者忽略這些修改" @@ -8452,6 +8532,17 @@ msgstr "切片檔案另存為:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "發布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。" @@ -9563,6 +9654,10 @@ msgstr "螺旋花瓶模式" msgid "First layer filament sequence" msgstr "首層線材列印順序" +# AI Translated +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "線材清單中包含混合線材。自訂線材順序將不會生效。" + msgid "By Layer" msgstr "逐層" @@ -9590,9 +9685,6 @@ msgstr "發布頁面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:發布前需要一些準備時間,請耐心等待。" -msgid "Publish" -msgstr "發布" - msgid "Publish was canceled" msgstr "發布已取消" @@ -9608,6 +9700,64 @@ msgstr "正在上傳資料" msgid "Jump to webpage" msgstr "跳至網頁" +msgid "Material" +msgstr "" + +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to be published in the 3MF file" +msgstr "" + +msgid "Publish 3MF Wiki" +msgstr "" + +msgid "Publish 3MF Video Guide" +msgstr "" + +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存 %s 為" @@ -10944,12 +11094,12 @@ msgid "No modifications need to be copied." msgstr "沒有需要複製的修改。" # AI Translated -msgid "Copy paramters" +msgid "Copy parameters" msgstr "複製參數" # AI Translated #, c-format, boost-format -msgid "Modify paramters of %s" +msgid "Modify parameters of %s" msgstr "修改 %s 的參數" # AI Translated @@ -11466,27 +11616,6 @@ msgstr "線材更換時產生的廢料體積" msgid "Please choose the filament colour" msgstr "請選擇線材顏色" -msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." -msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。" - -msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." -msgstr "無法初始化原生 Wayland GStreamer 視訊接收器。請檢查您的 GStreamer GTK 外掛程式安裝。" - -msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" -msgstr "執行此設定需要 Windows Media Player!您是否要啟用 Windows Media Player?" - -msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" -msgstr "「BambuSource 未正確註冊為媒體播放模組!請點選『是』進行重新註冊,過程中會有兩次提示" - -msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." -msgstr "缺少用於媒體播放的已註冊 BambuSource 元件!請重新安裝 OrcaSlicer 或尋求社群協助。" - -msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." -msgstr "BambuSource 來自其他安裝版本,可能導致影片播放異常!請點選『是』進行修復。" - -msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" -msgstr "您的系統缺少 GStreamer 的 H.264 編解碼器,這是播放影片所必需的。(請嘗試安裝 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 套件,然後重新啟動 Orca Slicer。)" - msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "雲端代理無法使用。請重新啟動 OrcaSlicer 後再試一次。" @@ -12195,6 +12324,10 @@ msgstr "如果您仍想列印,可以在「偏好設定 / 控制 / 切片 / 移 msgid "No extrusions under current settings." msgstr "根據目前設定,不會進行任何列印。" +# AI Translated +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "使用了漸層混合線材,但「混色子層」已停用。漸層將不會列印。" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "逐件列印模式下不支援使用平滑模式的縮時錄影。" @@ -12231,6 +12364,10 @@ msgstr "您可能想要減小模型的尺寸或更改目前的列印設定並重 msgid "Variable layer height is not supported with Organic supports." msgstr "有機樹支撐不支持可變層高。" +# AI Translated +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "換料塔線材不能是混合線材。" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "當啟用換料時,不同的噴嘴直徑和線材直徑可能無法正常配合。此功能屬於實驗性階段,請小心使用。" @@ -12578,7 +12715,7 @@ msgstr "mm 或 %" msgid "Other layers" msgstr "其它層" -msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." +msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack." msgstr "除首層外的其他層的熱床溫度。0值表示該線材不支援在低溫增穩列印板上列印。" msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate." @@ -13908,6 +14045,8 @@ msgstr "每一層列印時間" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "當層預估列印時間小於該數值時,物件冷卻風扇將會被開啟。風扇轉速將根據層列印時間在最大和最小風扇轉速之間自動調整" +# AI Translated +msgctxt "second" msgid "s" msgstr "秒" @@ -14213,6 +14352,62 @@ msgstr "支撐材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "支撐材料通常用於列印支撐體和支撐接觸面" +# AI Translated +msgid "Is mixed filament" +msgstr "是否為混合線材" + +# AI Translated +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "此線材槽是否為由多種實體線材組成的混合線材" + +# AI Translated +msgid "Mixed filament components" +msgstr "混合線材成分" + +# AI Translated +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "以逗號分隔的成分線材序號(從 1 開始),例如 \"1,3\"" + +# AI Translated +msgid "Mixed filament sublayer ratios" +msgstr "混合線材子層比例" + +# AI Translated +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "以逗號分隔、總和為 1.0 的比例值,例如 \"0.7,0.3\"" + +# AI Translated +msgid "Mixed filament gradient" +msgstr "混合線材漸層" + +# AI Translated +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "為混合線材的子層啟用 Z 方向漸層模式。啟用後,子層比例會隨層數線性變化。" + +# AI Translated +msgid "Mixed filament gradient range" +msgstr "混合線材漸層範圍" + +# AI Translated +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "漸層模式下第一個成分的起始與結束比例。以逗號分隔的一對數值,例如 \"0.10,0.90\" 表示從 10% 到 90%。" + +# AI Translated +msgid "Mixed filament gradient curve" +msgstr "混合線材漸層曲線" + +# AI Translated +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "選用的 Photoshop 風格自訂曲線,將 Z 方向進度對應到第一個成分的比例。以直立線分隔的控制點進行編碼,格式為 \"x,y\"(舊格式)或在需要覆寫切線時使用 \"x,y,m_in,m_out\"(留空或填入 \"nan\" 表示使用 PCHIP 預設值)。x 的取值範圍為 [0,1];y 會被限制在所設定的比例範圍內,例如 \"0,0.15|0.5,0.50|1,0.85\"。留空時改用線性的 gradient_range。" + +# AI Translated +msgid "Mixed filament per-part gradient" +msgstr "混合線材逐零件漸層" + +# AI Translated +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "啟用漸層模式時,對組合體中的每個零件分別套用漸層,而不是將整個組合體視為單一 Z 範圍。" + msgid "Filament printable" msgstr "線材可列印" @@ -15465,6 +15660,7 @@ msgid "The allowed maximum output force of Y axis" msgstr "Y 軸允許的最大輸出力" # AI Translated +msgctxt "Newton" msgid "N" msgstr "N" @@ -15477,6 +15673,7 @@ msgid "The machine bed mass load of Y axis" msgstr "Y 軸的機器床台質量負載" # AI Translated +msgctxt "gram" msgid "g" msgstr "g" @@ -15790,7 +15987,7 @@ msgstr "從切割區域到垃圾桶的起始和結束點。" msgid "Reduce infill retraction" msgstr "減小填充回抽" -msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped." +msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped." msgstr "當空駛完全在填充區域內時不觸發回抽。這意味著即使漏料也是不可見的。對於複雜模型,該設定能夠減少回抽次數以及列印時長,但是會造成 G-code 產生變慢" msgid "This option will drop the temperature of the inactive extruders to prevent oozing." @@ -15961,7 +16158,7 @@ msgstr "擦拭後的回抽量" # AI Translated #, no-c-format, no-boost-format msgid "" -"The length of fast retraction after wipe, relative to retraction length.\n" +"This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" "擦拭後快速回抽的長度,相對於回抽長度。\n" @@ -16008,7 +16205,7 @@ msgstr "在換工具之前觸發回抽時,線材會依指定的長度回抽( msgid "Z-hop height" msgstr "Z 抬升高度" -msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing." +msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." msgstr "回抽完成之後,噴嘴輕微抬升,和列印物件之間產生一定間隙。這能夠避免空駛時噴嘴和列印物件剮蹭和碰撞。使用螺旋線抬升z能夠減少拉絲" msgid "Z-hop lower boundary" @@ -17041,6 +17238,14 @@ msgstr "" "\n" "在以下的『擦拭前的回抽量』設定中設定一個值,將在擦拭之前執行任何額外的回抽操作;否則,將在擦拭之後執行。" +# AI Translated +msgid "Mixed color sublayer" +msgstr "混色子層" + +# AI Translated +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "啟用混色子層分割。啟用後,含有混色線材的層將被分割為子層,以達成混色效果。" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "換料塔的功能是用於清除噴嘴上的殘留物,同時穩定噴嘴內的壓力,從而避免列印物件時出現外觀瑕疵。" @@ -18110,6 +18315,10 @@ msgstr "模型檔案網格化失敗或沒有有效形狀" msgid "The supplied file couldn't be read because it's empty." msgstr "無法讀取提供的檔案,因為該檔案為空" +# AI Translated +msgid "The file format is incompatible and cannot be parsed." +msgstr "檔案格式不相容,無法解析。" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "檔案格式未知。輸入的檔案必須是 .stl、.obj 或 .amf(.xml) 格式。" @@ -19573,19 +19782,19 @@ msgstr "僅顯示對列印裝置、線材和處理預設設定有變更的列印 msgid "Only display the filament names with changes to filament presets." msgstr "僅顯示對線材預設設定有變更的線材名稱。" -msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive." msgstr "只有具有使用者列印裝置預設設定的列印裝置名稱會顯示,您選擇的每個預設設定將以 zip 檔案格式匯出。" msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be exported as a ZIP archive." msgstr "" "只有具有使用者線材預設設定的線材名稱會顯示,\n" "您選擇的每個線材名稱中的所有使用者線材預設設定將以 zip 檔案格式匯出。" msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be exported as a ZIP archive." msgstr "" "只有具有變更過處理預設設定的列印裝置名稱會顯示,\n" "您選擇的每個列印裝置名稱中的所有使用者處理預設設定將以 zip 檔案格式匯出。" @@ -19826,7 +20035,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f msgstr "我們需要相關資訊以診斷問題來源。請查看 wiki 頁面以取得詳細指南。" # AI Translated -msgid "Pack button collects project file and logs of current session onto a zip file." +msgid "Pack button collects project file and logs of current session onto a ZIP archive." msgstr "「打包」按鈕會將目前工作階段的專案檔案與記錄收集到一個 zip 檔案中。" # AI Translated @@ -19882,7 +20091,7 @@ msgid "Stored logs" msgstr "已儲存的記錄" # AI Translated -msgid "Packs all stored logs onto a zip file." +msgid "Packs all stored logs onto a ZIP archive." msgstr "將所有已儲存的記錄打包成一個 zip 檔案。" # AI Translated @@ -19962,7 +20171,7 @@ msgstr "找不到列印裝置類型,請手動選取。" msgid "Authorizing..." msgstr "授權中..." -msgid "Error. Can't get api token for authorization" +msgid "Error. Can't get API token for authorization" msgstr "錯誤。無法取得用於授權的 API token。" msgid "Could not parse server response." @@ -20414,8 +20623,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to msgstr "啟用智慧線材指派:將一種線材指派給多個噴嘴以最大化節省" # AI Translated -msgid "Fila Saving" -msgstr "線材節省" +msgid "File Saving" +msgstr "檔案儲存" msgid "Don't remind me again" msgstr "不要再提醒我" @@ -20701,6 +20910,15 @@ msgstr "此操作無法撤消。繼續?" msgid "Skipping objects." msgstr "跳過物件。" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + +msgid "Ratio" +msgstr "" + msgid "Select Filament" msgstr "選擇線材" @@ -20780,6 +20998,9 @@ msgstr "立即重新啟動" msgid "NO RAMMING AT ALL" msgstr "完全不擠壓" +msgid "s" +msgstr "秒" + msgid "Volumetric speed" msgstr "體積速度" @@ -21425,6 +21646,39 @@ msgstr "" "避免翹曲\n" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。" +#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." +#~ msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。" + +#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation." +#~ msgstr "無法初始化原生 Wayland GStreamer 視訊接收器。請檢查您的 GStreamer GTK 外掛程式安裝。" + +#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +#~ msgstr "執行此設定需要 Windows Media Player!您是否要啟用 Windows Media Player?" + +#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +#~ msgstr "「BambuSource 未正確註冊為媒體播放模組!請點選『是』進行重新註冊,過程中會有兩次提示" + +#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help." +#~ msgstr "缺少用於媒體播放的已註冊 BambuSource 元件!請重新安裝 OrcaSlicer 或尋求社群協助。" + +#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +#~ msgstr "BambuSource 來自其他安裝版本,可能導致影片播放異常!請點選『是』進行修復。" + +#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +#~ msgstr "您的系統缺少 GStreamer 的 H.264 編解碼器,這是播放影片所必需的。(請嘗試安裝 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 套件,然後重新啟動 Orca Slicer。)" + +# AI Translated +#~ msgid "N" +#~ msgstr "N" + +# AI Translated +#~ msgid "g" +#~ msgstr "g" + +# AI Translated +#~ msgid "Fila Saving" +#~ msgstr "線材節省" + #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" diff --git a/resources/images/menu_publish.svg b/resources/images/menu_publish.svg new file mode 100644 index 0000000000..e444623e33 --- /dev/null +++ b/resources/images/menu_publish.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M1.5,8 14.5,1.5 7.5,14.5 6.3,9.7 Z" style="fill:none;stroke:gray;stroke-linecap:round;stroke-linejoin:round"/></svg> diff --git a/resources/images/param_spiralinset.svg b/resources/images/param_spiralinset.svg new file mode 100644 index 0000000000..6ec1ab36aa --- /dev/null +++ b/resources/images/param_spiralinset.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12.00,12.00 L12.00,11.96 L12.01,11.92 L12.03,11.89 L12.05,11.85 L12.08,11.82 L12.12,11.80 L12.16,11.78 L12.20,11.76 L12.25,11.75 L12.30,11.75 L12.35,11.75 L12.40,11.77 L12.46,11.79 L12.51,11.81 L12.56,11.85 L12.61,11.89 L12.66,11.94 L12.70,12.00 L12.74,12.06 L12.77,12.14 L12.79,12.21 L12.80,12.29 L12.81,12.38 L12.81,12.47 L12.80,12.56 L12.77,12.65 L12.74,12.74 L12.70,12.83 L12.65,12.92 L12.58,13.01 L12.51,13.09 L12.43,13.17 L12.33,13.24 L12.23,13.30 L12.12,13.36 L12.00,13.40 L11.87,13.43 L11.74,13.46 L11.61,13.46 L11.47,13.46 L11.33,13.45 L11.18,13.41 L11.04,13.37 L10.90,13.31 L10.76,13.24 L10.63,13.15 L10.50,13.05 L10.38,12.93 L10.27,12.81 L10.17,12.67 L10.08,12.51 L10.01,12.35 L9.95,12.18 L9.90,12.00 L9.87,11.81 L9.86,11.62 L9.86,11.43 L9.88,11.23 L9.92,11.03 L9.98,10.83 L10.06,10.64 L10.15,10.45 L10.27,10.27 L10.40,10.09 L10.55,9.93 L10.72,9.78 L10.90,9.64 L11.10,9.52 L11.31,9.41 L11.53,9.32 L11.76,9.25 L12.00,9.20 L12.25,9.17 L12.50,9.17 L12.75,9.18 L13.01,9.22 L13.27,9.29 L13.52,9.37 L13.76,9.48 L14.00,9.62 L14.23,9.77 L14.44,9.95 L14.64,10.15 L14.83,10.37 L15.00,10.60 L15.14,10.86 L15.27,11.12 L15.37,11.41 L15.45,11.70 L15.50,12.00 L15.53,12.31 L15.52,12.62 L15.49,12.94 L15.44,13.25 L15.35,13.56 L15.23,13.87 L15.09,14.16 L14.92,14.45 L14.72,14.72 L14.50,14.98 L14.25,15.22 L13.98,15.44 L13.69,15.63 L13.38,15.80 L13.06,15.94 L12.72,16.06 L12.36,16.15 L12.00,16.20 L11.63,16.22 L11.26,16.21 L10.88,16.17 L10.51,16.09 L10.14,15.98 L9.78,15.84 L9.43,15.66 L9.10,15.46 L8.78,15.22 L8.48,14.95 L8.21,14.65 L7.96,14.33 L7.74,13.99 L7.54,13.62 L7.38,13.24 L7.25,12.84 L7.16,12.42 L7.10,12.00 L7.08,11.57 L7.10,11.14 L7.15,10.70 L7.25,10.27 L7.38,9.85 L7.55,9.43 L7.76,9.03 L8.01,8.65 L8.29,8.29 L8.60,7.95 L8.94,7.64 L9.32,7.35 L9.72,7.10 L10.14,6.88 L10.58,6.70 L11.04,6.56 L11.52,6.46 L12.00,6.40 L12.49,6.38 L12.99,6.41 L13.48,6.48 L13.97,6.59 L14.45,6.75 L14.92,6.95 L15.37,7.19 L15.80,7.47 L16.21,7.79 L16.59,8.15 L16.94,8.54 L17.25,8.97 L17.53,9.42 L17.77,9.90 L17.97,10.40 L18.13,10.92 L18.24,11.45 L18.30,12.00 L18.31,12.55 L18.28,13.11 L18.20,13.66 L18.07,14.21 L17.89,14.74 L17.66,15.27 L17.38,15.77 L17.06,16.25 L16.70,16.70 L16.30,17.12 L15.86,17.51 L15.38,17.86 L14.88,18.17 L14.34,18.43 L13.78,18.65 L13.20,18.82 L12.61,18.93 L12.00,19.00 L11.39,19.01 L10.77,18.97 L10.16,18.87 L9.55,18.72 L8.96,18.52 L8.38,18.26 L7.83,17.96 L7.30,17.60 L6.80,17.20 L6.34,16.75 L5.92,16.26 L5.53,15.73 L5.20,15.17 L4.91,14.58 L4.68,13.96 L4.49,13.32 L4.37,12.67 L4.30,12.00 L4.29,11.33 L4.34,10.65 L4.45,9.98 L4.62,9.31 L4.85,8.66 L5.13,8.03 L5.47,7.43 L5.86,6.85 L6.31,6.31 L6.80,5.80 L7.34,5.34 L7.92,4.93 L8.53,4.56 L9.18,4.25 L9.86,4.00 L10.55,3.80 L11.27,3.67 L12.00,3.60" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><rect x="1.5" y="1.5" width="21" height="21" rx="2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg> \ No newline at end of file diff --git a/resources/printers/bambu_filament_ids.json b/resources/printers/bambu_filament_ids.json new file mode 100644 index 0000000000..b21946f1a3 --- /dev/null +++ b/resources/printers/bambu_filament_ids.json @@ -0,0 +1,607 @@ +{ + "bambustudio_commit": "66e405477", + "filaments": { + "OF0UJcb6": { + "bambu_id": "GFG60", + "name": "PolyLite PETG", + "type": "PETG", + "vendor": "Polymaker" + }, + "OF0wBGNx": { + "bambu_id": "GFB51", + "name": "Bambu ASA-CF", + "type": "ASA-CF", + "vendor": "Bambu Lab" + }, + "OF1UNk9P": { + "bambu_id": "GFP97", + "name": "Generic PP", + "type": "PP", + "vendor": "Generic" + }, + "OF2GCW1l": { + "bambu_id": "GFSNL08", + "name": "SUNLU PETG", + "type": "PETG", + "vendor": "SUNLU" + }, + "OF2VFe4J": { + "bambu_id": "GFN04", + "name": "Bambu PAHT-CF", + "type": "PA-CF", + "vendor": "Bambu Lab" + }, + "OF342jVN": { + "bambu_id": "GFA10", + "name": "Bambu PLA Tough+", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OF4RvVuU": { + "bambu_id": "GFT02", + "name": "Bambu PPS-CF", + "type": "PPS-CF", + "vendor": "Bambu Lab" + }, + "OF54B0S0": { + "bambu_id": "GFN06", + "name": "Bambu PPA-CF", + "type": "PPA-CF", + "vendor": "Bambu Lab" + }, + "OF5CgdDq": { + "bambu_id": "GFL00", + "name": "PolyLite PLA", + "type": "PLA", + "vendor": "Polymaker" + }, + "OF6rdQ6M": { + "bambu_id": "GFT98", + "name": "Generic PPS-CF", + "type": "PPS-CF", + "vendor": "Generic" + }, + "OF74KeQR": { + "bambu_id": "GFR98", + "name": "Generic PHA", + "type": "PHA", + "vendor": "Generic" + }, + "OF7lOgYF": { + "bambu_id": "GFG96", + "name": "Generic PETG HF", + "type": "PETG", + "vendor": "Generic" + }, + "OF8Tlg47": { + "bambu_id": "GFN96", + "name": "Generic PPA-GF", + "type": "PPA-GF", + "vendor": "Generic" + }, + "OF8tPByX": { + "bambu_id": "GFN97", + "name": "Generic PPA-CF", + "type": "PPA-CF", + "vendor": "Generic" + }, + "OF9OlTWH": { + "bambu_id": "GFA07", + "name": "Bambu PLA Marble", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFAnyRUI": { + "bambu_id": "GFS02", + "name": "Bambu Support For PLA", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFBSW57R": { + "bambu_id": "GFA11", + "name": "Bambu PLA Aero", + "type": "PLA-AERO", + "vendor": "Bambu Lab" + }, + "OFBw6eEG": { + "bambu_id": "GFL05", + "name": "Overture Matte PLA", + "type": "PLA", + "vendor": "Overture" + }, + "OFCD8qiU": { + "bambu_id": "GFR99", + "name": "Generic EVA", + "type": "EVA", + "vendor": "Generic" + }, + "OFDGigEI": { + "bambu_id": "GFA13", + "name": "Bambu PLA Dynamic", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFDSrzZ8": { + "bambu_id": "GFL99", + "name": "Generic PLA", + "type": "PLA", + "vendor": "Generic" + }, + "OFDvXujf": { + "bambu_id": "GFS99", + "name": "Generic PVA", + "type": "PVA", + "vendor": "Generic" + }, + "OFDxfPgH": { + "bambu_id": "GFA08", + "name": "Bambu PLA Sparkle", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFEGNJD4": { + "bambu_id": "GFA05", + "name": "Bambu PLA Silk", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFEkPBwx": { + "bambu_id": "GFA12", + "name": "Bambu PLA Glow", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFEswT5W": { + "bambu_id": "GFA50", + "name": "Bambu PLA-CF", + "type": "PLA-CF", + "vendor": "Bambu Lab" + }, + "OFFNYwWR": { + "bambu_id": "GFN03", + "name": "Bambu PA-CF", + "type": "PA-CF", + "vendor": "Bambu Lab" + }, + "OFFbSnCD": { + "bambu_id": "GFA17", + "name": "Bambu PLA Translucent", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFFvzqcd": { + "bambu_id": "GFG00", + "name": "Bambu PETG Basic", + "type": "PETG", + "vendor": "Bambu Lab" + }, + "OFHWSM21": { + "bambu_id": "GFL54", + "name": "Fiberon PET-CF", + "type": "PET-CF", + "vendor": "Polymaker" + }, + "OFHa48An": { + "bambu_id": "GFT01", + "name": "Bambu PET-CF", + "type": "PET-CF", + "vendor": "Bambu Lab" + }, + "OFHmPYRy": { + "bambu_id": "GFSNL04", + "name": "SUNLU PLA+ 2.0", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFIBbYO5": { + "bambu_id": "GFU02", + "name": "Bambu TPU for AMS", + "type": "TPU-AMS", + "vendor": "Bambu Lab" + }, + "OFIfnzxC": { + "bambu_id": "GFS05", + "name": "Bambu Support For PLA/PETG", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFKhMPeX": { + "bambu_id": "GFC00", + "name": "Bambu PC", + "type": "PC", + "vendor": "Bambu Lab" + }, + "OFLJ8S6I": { + "bambu_id": "GFSNL07", + "name": "SUNLU Wood PLA", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFLPAxz3": { + "bambu_id": "GFB98", + "name": "Generic ASA", + "type": "ASA", + "vendor": "Generic" + }, + "OFLakOUI": { + "bambu_id": "GFC99", + "name": "Generic PC", + "type": "PC", + "vendor": "Generic" + }, + "OFMTK0UC": { + "bambu_id": "GFS03", + "name": "Bambu Support For PA/PET", + "type": "PA", + "vendor": "Bambu Lab" + }, + "OFMUWNkp": { + "bambu_id": "GFSNL03", + "name": "SUNLU PLA+", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFMjtqTC": { + "bambu_id": "GFA16", + "name": "Bambu PLA Wood", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFNk8bxk": { + "bambu_id": "GFN08", + "name": "Bambu PA6-GF", + "type": "PA-GF", + "vendor": "Bambu Lab" + }, + "OFOvv91M": { + "bambu_id": "GFB60", + "name": "PolyLite ABS", + "type": "ABS", + "vendor": "Polymaker" + }, + "OFPklMI1": { + "bambu_id": "GFP99", + "name": "Generic PE", + "type": "PE", + "vendor": "Generic" + }, + "OFQ3e56w": { + "bambu_id": "GFA15", + "name": "Bambu PLA Galaxy", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFQHiNJs": { + "bambu_id": "GFS01", + "name": "Bambu Support G", + "type": "PA", + "vendor": "Bambu Lab" + }, + "OFQLcbps": { + "bambu_id": "GFN98", + "name": "Generic PA-CF", + "type": "PA-CF", + "vendor": "Generic" + }, + "OFS2tn6G": { + "bambu_id": "GFL53", + "name": "Fiberon PA612-CF", + "type": "PA", + "vendor": "Polymaker" + }, + "OFTHDCqA": { + "bambu_id": "GFA19", + "name": "Bambu PLA Pure", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFTRZ8Y4": { + "bambu_id": "GFG50", + "name": "Bambu PETG-CF", + "type": "PETG-CF", + "vendor": "Bambu Lab" + }, + "OFUanySo": { + "bambu_id": "GFA06", + "name": "Bambu PLA Silk+", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFVCkX5w": { + "bambu_id": "GFU01", + "name": "Bambu TPU 95A", + "type": "TPU", + "vendor": "Bambu Lab" + }, + "OFW29a9R": { + "bambu_id": "GFL01", + "name": "PolyTerra PLA", + "type": "PLA", + "vendor": "Polymaker" + }, + "OFWbdGsC": { + "bambu_id": "GFL98", + "name": "Generic PLA-CF", + "type": "PLA-CF", + "vendor": "Generic" + }, + "OFX0ycRQ": { + "bambu_id": "GFL52", + "name": "Fiberon PA12-CF", + "type": "PA-CF", + "vendor": "Polymaker" + }, + "OFXIbw5D": { + "bambu_id": "GFA01", + "name": "Bambu PLA Matte", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFXkm8q1": { + "bambu_id": "GFP96", + "name": "Generic PP-CF", + "type": "PP-CF", + "vendor": "Generic" + }, + "OFXzQ4yL": { + "bambu_id": "GFB02", + "name": "Bambu ASA-Aero", + "type": "ASA-AERO", + "vendor": "Bambu Lab" + }, + "OFY9muEs": { + "bambu_id": "GFB99", + "name": "Generic ABS", + "type": "ABS", + "vendor": "Generic" + }, + "OFYPdQJh": { + "bambu_id": "GFG99", + "name": "Generic PETG", + "type": "PETG", + "vendor": "Generic" + }, + "OFaQMgRH": { + "bambu_id": "GFA09", + "name": "Bambu PLA Tough", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFc3xdm9": { + "bambu_id": "GFL04", + "name": "Overture PLA", + "type": "PLA", + "vendor": "Overture" + }, + "OFcytyoA": { + "bambu_id": "GFL06", + "name": "Fiberon PETG-ESD", + "type": "PETG", + "vendor": "Polymaker" + }, + "OFd0Fv0k": { + "bambu_id": "GFP98", + "name": "Generic PE-CF", + "type": "PE-CF", + "vendor": "Generic" + }, + "OFdyfQvU": { + "bambu_id": "GFG03", + "name": "Bambu PETG Matte", + "type": "PETG", + "vendor": "Bambu Lab" + }, + "OFesA6rF": { + "bambu_id": "GFL96", + "name": "Generic PLA Silk", + "type": "PLA", + "vendor": "Generic" + }, + "OFf6mfQO": { + "bambu_id": "GFS06", + "name": "Bambu Support for ABS", + "type": "ABS", + "vendor": "Bambu Lab" + }, + "OFfBpSRI": { + "bambu_id": "GFB01", + "name": "Bambu ASA", + "type": "ASA", + "vendor": "Bambu Lab" + }, + "OFg57Nmc": { + "bambu_id": "GFC01", + "name": "Bambu PC FR", + "type": "PC", + "vendor": "Bambu Lab" + }, + "OFg8ndtj": { + "bambu_id": "GFN99", + "name": "Generic PA", + "type": "PA", + "vendor": "Generic" + }, + "OFgbpcy9": { + "bambu_id": "GFU99", + "name": "Generic TPU", + "type": "TPU", + "vendor": "Generic" + }, + "OFhuaUQB": { + "bambu_id": "GFB00", + "name": "Bambu ABS", + "type": "ABS", + "vendor": "Bambu Lab" + }, + "OFk8t9mz": { + "bambu_id": "GFL55", + "name": "Fiberon PETG-rCF", + "type": "PETG-CF", + "vendor": "Polymaker" + }, + "OFkOviHk": { + "bambu_id": "GFL50", + "name": "Fiberon PA6-CF", + "type": "PA6-CF", + "vendor": "Polymaker" + }, + "OFknl9Iz": { + "bambu_id": "GFB50", + "name": "Bambu ABS-GF", + "type": "ABS-GF", + "vendor": "Bambu Lab" + }, + "OFlfuj2k": { + "bambu_id": "GFU04", + "name": "Bambu TPU 85A", + "type": "TPU", + "vendor": "Bambu Lab" + }, + "OFmN2lvw": { + "bambu_id": "GFU98", + "name": "Generic TPU for AMS", + "type": "TPU-AMS", + "vendor": "Generic" + }, + "OFmpMwxS": { + "bambu_id": "GFL95", + "name": "Generic PLA High Speed", + "type": "PLA", + "vendor": "Generic" + }, + "OFnfxTvi": { + "bambu_id": "GFA18", + "name": "Bambu PLA Lite", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFniMuTN": { + "bambu_id": "GFN05", + "name": "Bambu PA6-CF", + "type": "PA6-CF", + "vendor": "Bambu Lab" + }, + "OFo2UF2C": { + "bambu_id": "GFS97", + "name": "Generic BVOH", + "type": "BVOH", + "vendor": "Generic" + }, + "OFoYSJKi": { + "bambu_id": "GFG98", + "name": "Generic PETG-CF", + "type": "PETG-CF", + "vendor": "Generic" + }, + "OFoiVqVM": { + "bambu_id": "GFA00", + "name": "Bambu PLA Basic", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFovEIbw": { + "bambu_id": "GFG02", + "name": "Bambu PETG HF", + "type": "PETG", + "vendor": "Bambu Lab" + }, + "OFpPGSKG": { + "bambu_id": "GFSNL05", + "name": "SUNLU Silk PLA+", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFpW4gdi": { + "bambu_id": "GFSNL02", + "name": "SUNLU PLA Matte", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFq9svOz": { + "bambu_id": "GFT97", + "name": "Generic PPS", + "type": "PPS", + "vendor": "Generic" + }, + "OFqINlYj": { + "bambu_id": "GFL03", + "name": "eSUN PLA+", + "type": "PLA", + "vendor": "eSUN" + }, + "OFrKLeE3": { + "bambu_id": "GFA02", + "name": "Bambu PLA Metal", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFsFon5l": { + "bambu_id": "GFS98", + "name": "Generic HIPS", + "type": "HIPS", + "vendor": "Generic" + }, + "OFsHSVZc": { + "bambu_id": "GFS00", + "name": "Bambu Support W", + "type": "PLA", + "vendor": "Bambu Lab" + }, + "OFsijjtH": { + "bambu_id": "GFP95", + "name": "Generic PP-GF", + "type": "PP-GF", + "vendor": "Generic" + }, + "OFtkLO6q": { + "bambu_id": "GFU03", + "name": "Bambu TPU 90A", + "type": "TPU", + "vendor": "Bambu Lab" + }, + "OFu1evlr": { + "bambu_id": "GFG97", + "name": "Generic PCTG", + "type": "PCTG", + "vendor": "Generic" + }, + "OFvKUnLh": { + "bambu_id": "GFU00", + "name": "Bambu TPU 95A HF", + "type": "TPU", + "vendor": "Bambu Lab" + }, + "OFvrXuV7": { + "bambu_id": "GFB61", + "name": "PolyLite ASA", + "type": "ASA", + "vendor": "Polymaker" + }, + "OFwPrlCM": { + "bambu_id": "GFG01", + "name": "Bambu PETG Translucent", + "type": "PETG", + "vendor": "Bambu Lab" + }, + "OFwaYjL6": { + "bambu_id": "GFL51", + "name": "Fiberon PA6-GF", + "type": "PA-GF", + "vendor": "Polymaker" + }, + "OFxUwUeW": { + "bambu_id": "GFSNL06", + "name": "SUNLU PLA Marble", + "type": "PLA", + "vendor": "SUNLU" + }, + "OFzyIxba": { + "bambu_id": "GFS04", + "name": "Bambu PVA", + "type": "PVA", + "vendor": "Bambu Lab" + } + }, + "generated": "2026-09-04", + "source": "https://github.com/bambulab/BambuStudio" +} diff --git a/resources/profiles/Afinia.json b/resources/profiles/Afinia.json index a11cc0ecf6..517d0148c3 100644 --- a/resources/profiles/Afinia.json +++ b/resources/profiles/Afinia.json @@ -1,6 +1,6 @@ { "name": "Afinia", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Afinia configurations", "machine_model_list": [ diff --git a/resources/profiles/Afinia/filament/Afinia ABS+@HS.json b/resources/profiles/Afinia/filament/Afinia ABS+@HS.json index 79a5b294b9..77fc0deee9 100644 --- a/resources/profiles/Afinia/filament/Afinia ABS+@HS.json +++ b/resources/profiles/Afinia/filament/Afinia ABS+@HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB00_01", + "filament_id": "OFLfywkp", "setting_id": "wAJTMxtCY7EoavRi", "name": "Afinia ABS+@HS", "from": "system", diff --git a/resources/profiles/Afinia/filament/Afinia ABS@HS.json b/resources/profiles/Afinia/filament/Afinia ABS@HS.json index 90c4f9610a..e905e002bd 100644 --- a/resources/profiles/Afinia/filament/Afinia ABS@HS.json +++ b/resources/profiles/Afinia/filament/Afinia ABS@HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB00_01", + "filament_id": "OFV5wEMe", "setting_id": "qCDnb2iBaz4hd4vX", "name": "Afinia ABS@HS", "from": "system", diff --git a/resources/profiles/Afinia/filament/Afinia PLA@HS.json b/resources/profiles/Afinia/filament/Afinia PLA@HS.json index 6f37a09ac3..cfd15a574b 100644 --- a/resources/profiles/Afinia/filament/Afinia PLA@HS.json +++ b/resources/profiles/Afinia/filament/Afinia PLA@HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFA00_01", + "filament_id": "OF9HCdyQ", "setting_id": "N3sCgjdjvp6FTtw9", "name": "Afinia PLA@HS", "from": "system", diff --git a/resources/profiles/Afinia/filament/Afinia TPU@HS.json b/resources/profiles/Afinia/filament/Afinia TPU@HS.json index c2590ff9ef..56992bf983 100644 --- a/resources/profiles/Afinia/filament/Afinia TPU@HS.json +++ b/resources/profiles/Afinia/filament/Afinia TPU@HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "zUqTgAEbqTN1EdRl", - "filament_id": "GFU01_01", + "filament_id": "OFDJU6R3", "instantiation": "true", "filament_vendor": [ "Afinia" diff --git a/resources/profiles/Afinia/filament/Afinia Value ABS@HS.json b/resources/profiles/Afinia/filament/Afinia Value ABS@HS.json index 79b0ea9db3..f98da8225d 100644 --- a/resources/profiles/Afinia/filament/Afinia Value ABS@HS.json +++ b/resources/profiles/Afinia/filament/Afinia Value ABS@HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB00_01", + "filament_id": "OFXi59OX", "setting_id": "OxIiEYjbhEvSykaQ", "name": "Afinia Value ABS@HS", "from": "system", diff --git a/resources/profiles/Afinia/filament/Afinia Value PLA@HS.json b/resources/profiles/Afinia/filament/Afinia Value PLA@HS.json index 20dceb0249..1d9f669bd0 100644 --- a/resources/profiles/Afinia/filament/Afinia Value PLA@HS.json +++ b/resources/profiles/Afinia/filament/Afinia Value PLA@HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFA00_01", + "filament_id": "OFgHh8ly", "setting_id": "BASsUdyvElEVJ9AA", "name": "Afinia Value PLA@HS", "from": "system", diff --git a/resources/profiles/Anker.json b/resources/profiles/Anker.json index 544d889b4f..098b1df003 100644 --- a/resources/profiles/Anker.json +++ b/resources/profiles/Anker.json @@ -1,6 +1,6 @@ { "name": "Anker", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Anker configurations", "machine_model_list": [ @@ -161,172 +161,172 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Anker Generic ABS @base", - "sub_path": "filament/Anker Generic ABS @base.json" + "name": "Generic ABS @Anker base", + "sub_path": "filament/Generic ABS @Anker base.json" }, { - "name": "Anker Generic ASA @base", - "sub_path": "filament/Anker Generic ASA @base.json" + "name": "Generic ASA @Anker base", + "sub_path": "filament/Generic ASA @Anker base.json" }, { - "name": "Anker Generic PA @base", - "sub_path": "filament/Anker Generic PA @base.json" + "name": "Generic PA @Anker base", + "sub_path": "filament/Generic PA @Anker base.json" }, { - "name": "Anker Generic PA-CF @base", - "sub_path": "filament/Anker Generic PA-CF @base.json" + "name": "Generic PA-CF @Anker base", + "sub_path": "filament/Generic PA-CF @Anker base.json" }, { - "name": "Anker Generic PC @base", - "sub_path": "filament/Anker Generic PC @base.json" + "name": "Generic PC @Anker base", + "sub_path": "filament/Generic PC @Anker base.json" }, { - "name": "Anker Generic PETG @base", - "sub_path": "filament/Anker Generic PETG @base.json" + "name": "Generic PETG @Anker base", + "sub_path": "filament/Generic PETG @Anker base.json" }, { - "name": "Anker Generic PETG-CF @base", - "sub_path": "filament/Anker Generic PETG-CF @base.json" + "name": "Generic PETG-CF @Anker base", + "sub_path": "filament/Generic PETG-CF @Anker base.json" }, { - "name": "Anker Generic PLA @base", - "sub_path": "filament/Anker Generic PLA @base.json" + "name": "Generic PLA @Anker base", + "sub_path": "filament/Generic PLA @Anker base.json" }, { - "name": "Anker Generic PLA Silk @base", - "sub_path": "filament/Anker Generic PLA Silk @base.json" + "name": "Generic PLA Silk @Anker base", + "sub_path": "filament/Generic PLA Silk @Anker base.json" }, { - "name": "Anker Generic PLA+ @base", - "sub_path": "filament/Anker Generic PLA+ @base.json" + "name": "Generic PLA+ @Anker base", + "sub_path": "filament/Generic PLA+ @Anker base.json" }, { - "name": "Anker Generic PLA-CF @base", - "sub_path": "filament/Anker Generic PLA-CF @base.json" + "name": "Generic PLA-CF @Anker base", + "sub_path": "filament/Generic PLA-CF @Anker base.json" }, { - "name": "Anker Generic PVA @base", - "sub_path": "filament/Anker Generic PVA @base.json" + "name": "Generic PVA @Anker base", + "sub_path": "filament/Generic PVA @Anker base.json" }, { - "name": "Anker Generic TPU @base", - "sub_path": "filament/Anker Generic TPU @base.json" + "name": "Generic TPU @Anker base", + "sub_path": "filament/Generic TPU @Anker base.json" }, { - "name": "Anker Generic ABS", - "sub_path": "filament/Anker Generic ABS.json" + "name": "Generic ABS @Anker", + "sub_path": "filament/Generic ABS @Anker.json" }, { - "name": "Anker Generic ABS 0.2 nozzle", - "sub_path": "filament/Anker Generic ABS 0.2 nozzle.json" + "name": "Generic ABS @Anker 0.2 nozzle", + "sub_path": "filament/Generic ABS @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic ABS 0.25 nozzle", - "sub_path": "filament/Anker Generic ABS 0.25 nozzle.json" + "name": "Generic ABS @Anker 0.25 nozzle", + "sub_path": "filament/Generic ABS @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic ASA", - "sub_path": "filament/Anker Generic ASA.json" + "name": "Generic ASA @Anker", + "sub_path": "filament/Generic ASA @Anker.json" }, { - "name": "Anker Generic ASA 0.2 nozzle", - "sub_path": "filament/Anker Generic ASA 0.2 nozzle.json" + "name": "Generic ASA @Anker 0.2 nozzle", + "sub_path": "filament/Generic ASA @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic ASA 0.25 nozzle", - "sub_path": "filament/Anker Generic ASA 0.25 nozzle.json" + "name": "Generic ASA @Anker 0.25 nozzle", + "sub_path": "filament/Generic ASA @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PA", - "sub_path": "filament/Anker Generic PA.json" + "name": "Generic PA @Anker", + "sub_path": "filament/Generic PA @Anker.json" }, { - "name": "Anker Generic PA 0.2 nozzle", - "sub_path": "filament/Anker Generic PA 0.2 nozzle.json" + "name": "Generic PA @Anker 0.2 nozzle", + "sub_path": "filament/Generic PA @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PA 0.25 nozzle", - "sub_path": "filament/Anker Generic PA 0.25 nozzle.json" + "name": "Generic PA @Anker 0.25 nozzle", + "sub_path": "filament/Generic PA @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PA-CF", - "sub_path": "filament/Anker Generic PA-CF.json" + "name": "Generic PA-CF @Anker", + "sub_path": "filament/Generic PA-CF @Anker.json" }, { - "name": "Anker Generic PC", - "sub_path": "filament/Anker Generic PC.json" + "name": "Generic PC @Anker", + "sub_path": "filament/Generic PC @Anker.json" }, { - "name": "Anker Generic PC 0.2 nozzle", - "sub_path": "filament/Anker Generic PC 0.2 nozzle.json" + "name": "Generic PC @Anker 0.2 nozzle", + "sub_path": "filament/Generic PC @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PC 0.25 nozzle", - "sub_path": "filament/Anker Generic PC 0.25 nozzle.json" + "name": "Generic PC @Anker 0.25 nozzle", + "sub_path": "filament/Generic PC @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PETG", - "sub_path": "filament/Anker Generic PETG.json" + "name": "Generic PETG @Anker", + "sub_path": "filament/Generic PETG @Anker.json" }, { - "name": "Anker Generic PETG 0.2 nozzle", - "sub_path": "filament/Anker Generic PETG 0.2 nozzle.json" + "name": "Generic PETG @Anker 0.2 nozzle", + "sub_path": "filament/Generic PETG @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PETG 0.25 nozzle", - "sub_path": "filament/Anker Generic PETG 0.25 nozzle.json" + "name": "Generic PETG @Anker 0.25 nozzle", + "sub_path": "filament/Generic PETG @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PETG-CF", - "sub_path": "filament/Anker Generic PETG-CF.json" + "name": "Generic PETG-CF @Anker", + "sub_path": "filament/Generic PETG-CF @Anker.json" }, { - "name": "Anker Generic PLA", - "sub_path": "filament/Anker Generic PLA.json" + "name": "Generic PLA @Anker", + "sub_path": "filament/Generic PLA @Anker.json" }, { - "name": "Anker Generic PLA 0.2 nozzle", - "sub_path": "filament/Anker Generic PLA 0.2 nozzle.json" + "name": "Generic PLA @Anker 0.2 nozzle", + "sub_path": "filament/Generic PLA @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PLA 0.25 nozzle", - "sub_path": "filament/Anker Generic PLA 0.25 nozzle.json" + "name": "Generic PLA @Anker 0.25 nozzle", + "sub_path": "filament/Generic PLA @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PLA Silk", - "sub_path": "filament/Anker Generic PLA Silk.json" + "name": "Generic PLA Silk @Anker", + "sub_path": "filament/Generic PLA Silk @Anker.json" }, { - "name": "Anker Generic PLA Silk 0.2 nozzle", - "sub_path": "filament/Anker Generic PLA Silk 0.2 nozzle.json" + "name": "Generic PLA Silk @Anker 0.2 nozzle", + "sub_path": "filament/Generic PLA Silk @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PLA Silk 0.25 nozzle", - "sub_path": "filament/Anker Generic PLA Silk 0.25 nozzle.json" + "name": "Generic PLA Silk @Anker 0.25 nozzle", + "sub_path": "filament/Generic PLA Silk @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PLA+", - "sub_path": "filament/Anker Generic PLA+.json" + "name": "Generic PLA+ @Anker", + "sub_path": "filament/Generic PLA+ @Anker.json" }, { - "name": "Anker Generic PLA+ 0.2 nozzle", - "sub_path": "filament/Anker Generic PLA+ 0.2 nozzle.json" + "name": "Generic PLA+ @Anker 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Anker 0.2 nozzle.json" }, { - "name": "Anker Generic PLA+ 0.25 nozzle", - "sub_path": "filament/Anker Generic PLA+ 0.25 nozzle.json" + "name": "Generic PLA+ @Anker 0.25 nozzle", + "sub_path": "filament/Generic PLA+ @Anker 0.25 nozzle.json" }, { - "name": "Anker Generic PLA-CF", - "sub_path": "filament/Anker Generic PLA-CF.json" + "name": "Generic PLA-CF @Anker", + "sub_path": "filament/Generic PLA-CF @Anker.json" }, { - "name": "Anker Generic PVA", - "sub_path": "filament/Anker Generic PVA.json" + "name": "Generic PVA @Anker", + "sub_path": "filament/Generic PVA @Anker.json" }, { - "name": "Anker Generic TPU", - "sub_path": "filament/Anker Generic TPU.json" + "name": "Generic TPU @Anker", + "sub_path": "filament/Generic TPU @Anker.json" } ], "machine_list": [ diff --git a/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.2 nozzle.json b/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.2 nozzle.json deleted file mode 100644 index 90c78475bd..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.2 nozzle.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA Silk 0.2 nozzle", - "inherits": "Anker Generic PLA Silk @base", - "from": "system", - "setting_id": "A1l6NiwRrasdV556", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "2" - ], - "compatible_printers": [ - "Anker M5 0.2 nozzle", - "Anker M5 All-Metal 0.2 nozzle", - "Anker M5C 0.2 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.25 nozzle.json b/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.25 nozzle.json deleted file mode 100644 index 45032d46c3..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA Silk 0.25 nozzle.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA Silk 0.25 nozzle", - "inherits": "Anker Generic PLA Silk @base", - "from": "system", - "setting_id": "yzHmKTOtA9JamlNf", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "3" - ], - "compatible_printers": [ - "Anker M5 0.25 nozzle", - "Anker M5 All-Metal 0.25 nozzle", - "Anker M5C 0.25 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA Silk.json b/resources/profiles/Anker/filament/Anker Generic PLA Silk.json deleted file mode 100644 index df8b1d7cdb..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA Silk.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA Silk", - "inherits": "Anker Generic PLA Silk @base", - "from": "system", - "setting_id": "BGttYO9m2rGcnrEG", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA+ 0.2 nozzle.json b/resources/profiles/Anker/filament/Anker Generic PLA+ 0.2 nozzle.json deleted file mode 100644 index 9923efcd6f..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA+ 0.2 nozzle.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA+ 0.2 nozzle", - "inherits": "Anker Generic PLA+ @base", - "from": "system", - "setting_id": "6IcMSjyxt0szdUuY", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "2" - ], - "compatible_printers": [ - "Anker M5 0.2 nozzle", - "Anker M5 All-Metal 0.2 nozzle", - "Anker M5C 0.2 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA+ 0.25 nozzle.json b/resources/profiles/Anker/filament/Anker Generic PLA+ 0.25 nozzle.json deleted file mode 100644 index 809b57ef69..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA+ 0.25 nozzle.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA+ 0.25 nozzle", - "inherits": "Anker Generic PLA+ @base", - "from": "system", - "setting_id": "a2Rf07ZUhpTPONN1", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "3" - ], - "compatible_printers": [ - "Anker M5 0.25 nozzle", - "Anker M5 All-Metal 0.25 nozzle", - "Anker M5C 0.25 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA+.json b/resources/profiles/Anker/filament/Anker Generic PLA+.json deleted file mode 100644 index 4c4ded7c11..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA+.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA+", - "inherits": "Anker Generic PLA+ @base", - "from": "system", - "setting_id": "0yQN44WNvLVjQu2b", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA-CF.json b/resources/profiles/Anker/filament/Anker Generic PLA-CF.json deleted file mode 100644 index 7a2d6d5e97..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA-CF.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA-CF", - "inherits": "Anker Generic PLA-CF @base", - "from": "system", - "setting_id": "diNUVM7UcHLnOr9J", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA.json b/resources/profiles/Anker/filament/Anker Generic PLA.json deleted file mode 100644 index 1c4b7bc5fb..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PLA.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PLA", - "inherits": "Anker Generic PLA @base", - "from": "system", - "setting_id": "qfKC91VAAFZSExhm", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic PVA.json b/resources/profiles/Anker/filament/Anker Generic PVA.json deleted file mode 100644 index 97039a12d6..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic PVA.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic PVA", - "inherits": "Anker Generic PVA @base", - "from": "system", - "setting_id": "GRtdOKUkQfZ5eDH4", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic TPU.json b/resources/profiles/Anker/filament/Anker Generic TPU.json deleted file mode 100644 index fb99d95f0d..0000000000 --- a/resources/profiles/Anker/filament/Anker Generic TPU.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Anker Generic TPU", - "inherits": "Anker Generic TPU @base", - "from": "system", - "setting_id": "YyTaPGGiEyAzmh9A", - "instantiation": "true", - "compatible_printers": [ - "Anker M5 0.4 nozzle", - "Anker M5 0.6 nozzle", - "Anker M5 All-Metal 0.4 nozzle", - "Anker M5 All-Metal 0.6 nozzle", - "Anker M5C 0.4 nozzle", - "Anker M5C 0.6 nozzle" - ] -} diff --git a/resources/profiles/Anker/filament/Anker Generic ABS 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic ABS @Anker 0.2 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic ABS 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic ABS @Anker 0.2 nozzle.json index aaa175bacd..c3e47c80a3 100644 --- a/resources/profiles/Anker/filament/Anker Generic ABS 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic ABS @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ABS 0.2 nozzle", - "inherits": "Anker Generic ABS @base", + "name": "Generic ABS @Anker 0.2 nozzle", + "inherits": "Generic ABS @Anker base", + "renamed_from": "Anker Generic ABS 0.2 nozzle", "from": "system", - "setting_id": "BD5ODYVM90Ig44C5", + "setting_id": "iOCt7x95XbWYMe5q", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic PETG 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic ABS @Anker 0.25 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic PETG 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic ABS @Anker 0.25 nozzle.json index 689836eae3..64fd62eb64 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic ABS @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PETG 0.25 nozzle", - "inherits": "Anker Generic PETG @base", + "name": "Generic ABS @Anker 0.25 nozzle", + "inherits": "Generic ABS @Anker base", + "renamed_from": "Anker Generic ABS 0.25 nozzle", "from": "system", - "setting_id": "UgKfPuleh1xnoJLT", + "setting_id": "7Q2pr70SpSjK7v7Y", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic ABS @base.json b/resources/profiles/Anker/filament/Generic ABS @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic ABS @base.json rename to resources/profiles/Anker/filament/Generic ABS @Anker base.json index 1f6ad45f63..fe24d081e4 100644 --- a/resources/profiles/Anker/filament/Anker Generic ABS @base.json +++ b/resources/profiles/Anker/filament/Generic ABS @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic ABS @base", + "name": "Generic ABS @Anker base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFY9muEs", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic ASA.json b/resources/profiles/Anker/filament/Generic ABS @Anker.json similarity index 65% rename from resources/profiles/Anker/filament/Anker Generic ASA.json rename to resources/profiles/Anker/filament/Generic ABS @Anker.json index 66041c0463..978bc00e31 100644 --- a/resources/profiles/Anker/filament/Anker Generic ASA.json +++ b/resources/profiles/Anker/filament/Generic ABS @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ASA", - "inherits": "Anker Generic ASA @base", + "name": "Generic ABS @Anker", + "inherits": "Generic ABS @Anker base", + "renamed_from": "Anker Generic ABS", "from": "system", - "setting_id": "QiFoBW5WuDUJGmFZ", + "setting_id": "x3IBYtgKBx6Mszzk", "instantiation": "true", "compatible_printers": [ "Anker M5 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic PETG 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic ASA @Anker 0.2 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic PETG 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic ASA @Anker 0.2 nozzle.json index 18686402e1..1a40e93730 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic ASA @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PETG 0.2 nozzle", - "inherits": "Anker Generic PETG @base", + "name": "Generic ASA @Anker 0.2 nozzle", + "inherits": "Generic ASA @Anker base", + "renamed_from": "Anker Generic ASA 0.2 nozzle", "from": "system", - "setting_id": "VItvDP6zmenWXwPO", + "setting_id": "lTR8QLbuttyVs5UW", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic ABS 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic ASA @Anker 0.25 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic ABS 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic ASA @Anker 0.25 nozzle.json index 76c10b1018..0b85eef27c 100644 --- a/resources/profiles/Anker/filament/Anker Generic ABS 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic ASA @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ABS 0.25 nozzle", - "inherits": "Anker Generic ABS @base", + "name": "Generic ASA @Anker 0.25 nozzle", + "inherits": "Generic ASA @Anker base", + "renamed_from": "Anker Generic ASA 0.25 nozzle", "from": "system", - "setting_id": "WS5wXckNuiQqSVwO", + "setting_id": "FU4BiMydEyo7zxq5", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic ASA @base.json b/resources/profiles/Anker/filament/Generic ASA @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic ASA @base.json rename to resources/profiles/Anker/filament/Generic ASA @Anker base.json index fb0ef78ee7..f2349d13ab 100644 --- a/resources/profiles/Anker/filament/Anker Generic ASA @base.json +++ b/resources/profiles/Anker/filament/Generic ASA @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic ASA @base", + "name": "Generic ASA @Anker base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB98", + "filament_id": "OFLPAxz3", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic PETG-CF.json b/resources/profiles/Anker/filament/Generic ASA @Anker.json similarity index 65% rename from resources/profiles/Anker/filament/Anker Generic PETG-CF.json rename to resources/profiles/Anker/filament/Generic ASA @Anker.json index 3f0dd59e94..53b84223df 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG-CF.json +++ b/resources/profiles/Anker/filament/Generic ASA @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PETG-CF", - "inherits": "Anker Generic PETG-CF @base", + "name": "Generic ASA @Anker", + "inherits": "Generic ASA @Anker base", + "renamed_from": "Anker Generic ASA", "from": "system", - "setting_id": "j8PLF6AZD0R0oVs8", + "setting_id": "aDADuxiEKt2dVKOJ", "instantiation": "true", "compatible_printers": [ "Anker M5 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic PA 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PA @Anker 0.2 nozzle.json similarity index 55% rename from resources/profiles/Anker/filament/Anker Generic PA 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic PA @Anker 0.2 nozzle.json index 3e7a0b85d1..6460721e2f 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PA @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PA 0.2 nozzle", - "inherits": "Anker Generic PA @base", + "name": "Generic PA @Anker 0.2 nozzle", + "inherits": "Generic PA @Anker base", + "renamed_from": "Anker Generic PA 0.2 nozzle", "from": "system", - "setting_id": "NZB26MSD9WbOeY2S", + "setting_id": "tYAT7xnNFD6gY84A", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic PA 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PA @Anker 0.25 nozzle.json similarity index 55% rename from resources/profiles/Anker/filament/Anker Generic PA 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic PA @Anker 0.25 nozzle.json index 8c0233d67e..ee2514e92c 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PA @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PA 0.25 nozzle", - "inherits": "Anker Generic PA @base", + "name": "Generic PA @Anker 0.25 nozzle", + "inherits": "Generic PA @Anker base", + "renamed_from": "Anker Generic PA 0.25 nozzle", "from": "system", - "setting_id": "Wj7oXTGUxo8lie1B", + "setting_id": "Zlv65wLA94PbevRG", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic PA @base.json b/resources/profiles/Anker/filament/Generic PA @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic PA @base.json rename to resources/profiles/Anker/filament/Generic PA @Anker base.json index 9215733825..b4a45b1e66 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA @base.json +++ b/resources/profiles/Anker/filament/Generic PA @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic PA @base", + "name": "Generic PA @Anker base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN99", + "filament_id": "OFg8ndtj", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic PC.json b/resources/profiles/Anker/filament/Generic PA @Anker.json similarity index 60% rename from resources/profiles/Anker/filament/Anker Generic PC.json rename to resources/profiles/Anker/filament/Generic PA @Anker.json index 3be5d34b71..e9acc2d7f6 100644 --- a/resources/profiles/Anker/filament/Anker Generic PC.json +++ b/resources/profiles/Anker/filament/Generic PA @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PC", - "inherits": "Anker Generic PC @base", + "name": "Generic PA @Anker", + "inherits": "Generic PA @Anker base", + "renamed_from": "Anker Generic PA", "from": "system", - "setting_id": "xY25QcIsR9pWai3n", + "setting_id": "sLWVtBxpAC53eUwo", "instantiation": "true", "compatible_printers": [ "Anker M5 All-Metal 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic PA-CF @base.json b/resources/profiles/Anker/filament/Generic PA-CF @Anker base.json similarity index 79% rename from resources/profiles/Anker/filament/Anker Generic PA-CF @base.json rename to resources/profiles/Anker/filament/Generic PA-CF @Anker base.json index 7f23645d43..fc0740ee53 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA-CF @base.json +++ b/resources/profiles/Anker/filament/Generic PA-CF @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PA-CF @base", + "name": "Generic PA-CF @Anker base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN98", + "filament_id": "OFQLcbps", "instantiation": "false", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Anker/filament/Anker Generic PA.json b/resources/profiles/Anker/filament/Generic PA-CF @Anker.json similarity index 59% rename from resources/profiles/Anker/filament/Anker Generic PA.json rename to resources/profiles/Anker/filament/Generic PA-CF @Anker.json index 43f3724ea9..6c3b2d1860 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA.json +++ b/resources/profiles/Anker/filament/Generic PA-CF @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PA", - "inherits": "Anker Generic PA @base", + "name": "Generic PA-CF @Anker", + "inherits": "Generic PA-CF @Anker base", + "renamed_from": "Anker Generic PA-CF", "from": "system", - "setting_id": "QbIiX554Yee6vb32", + "setting_id": "K4LcpR0zBp5klSpb", "instantiation": "true", "compatible_printers": [ "Anker M5 All-Metal 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic PC 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PC @Anker 0.2 nozzle.json similarity index 55% rename from resources/profiles/Anker/filament/Anker Generic PC 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic PC @Anker 0.2 nozzle.json index 87f09622b9..0126f9f893 100644 --- a/resources/profiles/Anker/filament/Anker Generic PC 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PC @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PC 0.2 nozzle", - "inherits": "Anker Generic PC @base", + "name": "Generic PC @Anker 0.2 nozzle", + "inherits": "Generic PC @Anker base", + "renamed_from": "Anker Generic PC 0.2 nozzle", "from": "system", - "setting_id": "GhIOAidtgDkzh9Aj", + "setting_id": "2sSOgctcnVh9bGbQ", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic PC 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PC @Anker 0.25 nozzle.json similarity index 55% rename from resources/profiles/Anker/filament/Anker Generic PC 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic PC @Anker 0.25 nozzle.json index 38794a6a44..50aca840aa 100644 --- a/resources/profiles/Anker/filament/Anker Generic PC 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PC @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PC 0.25 nozzle", - "inherits": "Anker Generic PC @base", + "name": "Generic PC @Anker 0.25 nozzle", + "inherits": "Generic PC @Anker base", + "renamed_from": "Anker Generic PC 0.25 nozzle", "from": "system", - "setting_id": "TQm9EPdenyGJMvgP", + "setting_id": "h7IRuq5uekjNw4vg", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic PC @base.json b/resources/profiles/Anker/filament/Generic PC @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic PC @base.json rename to resources/profiles/Anker/filament/Generic PC @Anker base.json index 1947ecdd35..90ded72d2f 100644 --- a/resources/profiles/Anker/filament/Anker Generic PC @base.json +++ b/resources/profiles/Anker/filament/Generic PC @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic PC @base", + "name": "Generic PC @Anker base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC99", + "filament_id": "OFLakOUI", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic PA-CF.json b/resources/profiles/Anker/filament/Generic PC @Anker.json similarity index 60% rename from resources/profiles/Anker/filament/Anker Generic PA-CF.json rename to resources/profiles/Anker/filament/Generic PC @Anker.json index b821bede88..5433518c5a 100644 --- a/resources/profiles/Anker/filament/Anker Generic PA-CF.json +++ b/resources/profiles/Anker/filament/Generic PC @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PA-CF", - "inherits": "Anker Generic PA-CF @base", + "name": "Generic PC @Anker", + "inherits": "Generic PC @Anker base", + "renamed_from": "Anker Generic PC", "from": "system", - "setting_id": "qdsEps11ugFHJkn7", + "setting_id": "ffufXVvW95sunH1B", "instantiation": "true", "compatible_printers": [ "Anker M5 All-Metal 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic ASA 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PETG @Anker 0.2 nozzle.json similarity index 57% rename from resources/profiles/Anker/filament/Anker Generic ASA 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic PETG @Anker 0.2 nozzle.json index b13a09de2a..2ff7eca4d1 100644 --- a/resources/profiles/Anker/filament/Anker Generic ASA 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PETG @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ASA 0.2 nozzle", - "inherits": "Anker Generic ASA @base", + "name": "Generic PETG @Anker 0.2 nozzle", + "inherits": "Generic PETG @Anker base", + "renamed_from": "Anker Generic PETG 0.2 nozzle", "from": "system", - "setting_id": "G7pzEyyhPFDnae3R", + "setting_id": "67ZHuiXPyCP6Tdtr", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic PLA 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PETG @Anker 0.25 nozzle.json similarity index 57% rename from resources/profiles/Anker/filament/Anker Generic PLA 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic PETG @Anker 0.25 nozzle.json index d3775b07e2..9f9ae2da35 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PETG @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PLA 0.25 nozzle", - "inherits": "Anker Generic PLA @base", + "name": "Generic PETG @Anker 0.25 nozzle", + "inherits": "Generic PETG @Anker base", + "renamed_from": "Anker Generic PETG 0.25 nozzle", "from": "system", - "setting_id": "uKfcnPWdXxAGB5Ls", + "setting_id": "aLuRALDt0Otbd2So", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic PETG @base.json b/resources/profiles/Anker/filament/Generic PETG @Anker base.json similarity index 83% rename from resources/profiles/Anker/filament/Anker Generic PETG @base.json rename to resources/profiles/Anker/filament/Generic PETG @Anker base.json index c7b85e701a..9a0ccc2fe4 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG @base.json +++ b/resources/profiles/Anker/filament/Generic PETG @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PETG @base", + "name": "Generic PETG @Anker base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFYPdQJh", "instantiation": "false", "filament_type": [ "PETG" diff --git a/resources/profiles/Anker/filament/Generic PETG @Anker.json b/resources/profiles/Anker/filament/Generic PETG @Anker.json new file mode 100644 index 0000000000..cdb08f8671 --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PETG @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PETG @Anker", + "inherits": "Generic PETG @Anker base", + "renamed_from": "Anker Generic PETG", + "from": "system", + "setting_id": "hvV0rmnzRHJk9sMz", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PETG-CF @base.json b/resources/profiles/Anker/filament/Generic PETG-CF @Anker base.json similarity index 86% rename from resources/profiles/Anker/filament/Anker Generic PETG-CF @base.json rename to resources/profiles/Anker/filament/Generic PETG-CF @Anker base.json index 4a36c58a86..3c0f59949a 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG-CF @base.json +++ b/resources/profiles/Anker/filament/Generic PETG-CF @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PETG-CF @base", + "name": "Generic PETG-CF @Anker base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG98", + "filament_id": "OFoYSJKi", "instantiation": "false", "filament_type": [ "PETG-CF" diff --git a/resources/profiles/Anker/filament/Generic PETG-CF @Anker.json b/resources/profiles/Anker/filament/Generic PETG-CF @Anker.json new file mode 100644 index 0000000000..e5a265c40f --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PETG-CF @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PETG-CF @Anker", + "inherits": "Generic PETG-CF @Anker base", + "renamed_from": "Anker Generic PETG-CF", + "from": "system", + "setting_id": "vCAuQeQLoXUk28ph", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PLA @Anker 0.2 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic PLA 0.2 nozzle.json rename to resources/profiles/Anker/filament/Generic PLA @Anker 0.2 nozzle.json index 6c31b3949c..e8ffdb8c57 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA 0.2 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PLA @Anker 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PLA 0.2 nozzle", - "inherits": "Anker Generic PLA @base", + "name": "Generic PLA @Anker 0.2 nozzle", + "inherits": "Generic PLA @Anker base", + "renamed_from": "Anker Generic PLA 0.2 nozzle", "from": "system", - "setting_id": "j6QmCITPJoP7bWHq", + "setting_id": "rCvmCzPgi4KA6nmI", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Anker/filament/Anker Generic ASA 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PLA @Anker 0.25 nozzle.json similarity index 58% rename from resources/profiles/Anker/filament/Anker Generic ASA 0.25 nozzle.json rename to resources/profiles/Anker/filament/Generic PLA @Anker 0.25 nozzle.json index fad3cb2a20..5e4e3e0f0b 100644 --- a/resources/profiles/Anker/filament/Anker Generic ASA 0.25 nozzle.json +++ b/resources/profiles/Anker/filament/Generic PLA @Anker 0.25 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ASA 0.25 nozzle", - "inherits": "Anker Generic ASA @base", + "name": "Generic PLA @Anker 0.25 nozzle", + "inherits": "Generic PLA @Anker base", + "renamed_from": "Anker Generic PLA 0.25 nozzle", "from": "system", - "setting_id": "ErUUDTQ7h1wNHAKT", + "setting_id": "C0hNEbEueKrcYojS", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/Anker/filament/Anker Generic PLA @base.json b/resources/profiles/Anker/filament/Generic PLA @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic PLA @base.json rename to resources/profiles/Anker/filament/Generic PLA @Anker base.json index 4dbfca4e28..d9cc2b2641 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA @base.json +++ b/resources/profiles/Anker/filament/Generic PLA @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic PLA @base", + "name": "Generic PLA @Anker base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFDSrzZ8", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic ABS.json b/resources/profiles/Anker/filament/Generic PLA @Anker.json similarity index 65% rename from resources/profiles/Anker/filament/Anker Generic ABS.json rename to resources/profiles/Anker/filament/Generic PLA @Anker.json index 5588d39ff3..5049571bcb 100644 --- a/resources/profiles/Anker/filament/Anker Generic ABS.json +++ b/resources/profiles/Anker/filament/Generic PLA @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic ABS", - "inherits": "Anker Generic ABS @base", + "name": "Generic PLA @Anker", + "inherits": "Generic PLA @Anker base", + "renamed_from": "Anker Generic PLA", "from": "system", - "setting_id": "axEspGzFJnrnidm4", + "setting_id": "GfVhcxRmt6mHSemI", "instantiation": "true", "compatible_printers": [ "Anker M5 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.2 nozzle.json new file mode 100644 index 0000000000..e28ab1c79a --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.2 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA Silk @Anker 0.2 nozzle", + "inherits": "Generic PLA Silk @Anker base", + "renamed_from": "Anker Generic PLA Silk 0.2 nozzle", + "from": "system", + "setting_id": "NWGiPWYmLVktDMJt", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Anker M5 0.2 nozzle", + "Anker M5 All-Metal 0.2 nozzle", + "Anker M5C 0.2 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.25 nozzle.json new file mode 100644 index 0000000000..2699cb1aea --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA Silk @Anker 0.25 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA Silk @Anker 0.25 nozzle", + "inherits": "Generic PLA Silk @Anker base", + "renamed_from": "Anker Generic PLA Silk 0.25 nozzle", + "from": "system", + "setting_id": "4thKBCnYgDtnAtF5", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3" + ], + "compatible_printers": [ + "Anker M5 0.25 nozzle", + "Anker M5 All-Metal 0.25 nozzle", + "Anker M5C 0.25 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA Silk @base.json b/resources/profiles/Anker/filament/Generic PLA Silk @Anker base.json similarity index 87% rename from resources/profiles/Anker/filament/Anker Generic PLA Silk @base.json rename to resources/profiles/Anker/filament/Generic PLA Silk @Anker base.json index aac1e8e86b..2db35d21c1 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA Silk @base.json +++ b/resources/profiles/Anker/filament/Generic PLA Silk @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PLA Silk @base", + "name": "Generic PLA Silk @Anker base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL96", + "filament_id": "OFesA6rF", "instantiation": "false", "filament_cost": [ "20" diff --git a/resources/profiles/Anker/filament/Generic PLA Silk @Anker.json b/resources/profiles/Anker/filament/Generic PLA Silk @Anker.json new file mode 100644 index 0000000000..9629ba4f0b --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA Silk @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA Silk @Anker", + "inherits": "Generic PLA Silk @Anker base", + "renamed_from": "Anker Generic PLA Silk", + "from": "system", + "setting_id": "URRIeNXIiIPjxbKL", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.2 nozzle.json b/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.2 nozzle.json new file mode 100644 index 0000000000..f32fb75a92 --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.2 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Anker 0.2 nozzle", + "inherits": "Generic PLA+ @Anker base", + "renamed_from": "Anker Generic PLA+ 0.2 nozzle", + "from": "system", + "setting_id": "5m3xLxdReqLlE2Jp", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Anker M5 0.2 nozzle", + "Anker M5 All-Metal 0.2 nozzle", + "Anker M5C 0.2 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.25 nozzle.json b/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.25 nozzle.json new file mode 100644 index 0000000000..291773e546 --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA+ @Anker 0.25 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Anker 0.25 nozzle", + "inherits": "Generic PLA+ @Anker base", + "renamed_from": "Anker Generic PLA+ 0.25 nozzle", + "from": "system", + "setting_id": "wwkWVDsg6SoeCS0F", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3" + ], + "compatible_printers": [ + "Anker M5 0.25 nozzle", + "Anker M5 All-Metal 0.25 nozzle", + "Anker M5C 0.25 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA+ @base.json b/resources/profiles/Anker/filament/Generic PLA+ @Anker base.json similarity index 82% rename from resources/profiles/Anker/filament/Anker Generic PLA+ @base.json rename to resources/profiles/Anker/filament/Generic PLA+ @Anker base.json index 39b4ecdfee..0ec8e81392 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA+ @base.json +++ b/resources/profiles/Anker/filament/Generic PLA+ @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PLA+ @base", + "name": "Generic PLA+ @Anker base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL95", + "filament_id": "OFEWYR89", "instantiation": "false", "filament_cost": [ "25" diff --git a/resources/profiles/Anker/filament/Generic PLA+ @Anker.json b/resources/profiles/Anker/filament/Generic PLA+ @Anker.json new file mode 100644 index 0000000000..1381c839da --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA+ @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Anker", + "inherits": "Generic PLA+ @Anker base", + "renamed_from": "Anker Generic PLA+", + "from": "system", + "setting_id": "MDb4CH02FxbgPNjS", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PLA-CF @base.json b/resources/profiles/Anker/filament/Generic PLA-CF @Anker base.json similarity index 88% rename from resources/profiles/Anker/filament/Anker Generic PLA-CF @base.json rename to resources/profiles/Anker/filament/Generic PLA-CF @Anker base.json index d8eb0f56d9..d1faf47a16 100644 --- a/resources/profiles/Anker/filament/Anker Generic PLA-CF @base.json +++ b/resources/profiles/Anker/filament/Generic PLA-CF @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic PLA-CF @base", + "name": "Generic PLA-CF @Anker base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL98", + "filament_id": "OFWbdGsC", "instantiation": "false", "filament_type": [ "PLA-CF" diff --git a/resources/profiles/Anker/filament/Generic PLA-CF @Anker.json b/resources/profiles/Anker/filament/Generic PLA-CF @Anker.json new file mode 100644 index 0000000000..7be034702f --- /dev/null +++ b/resources/profiles/Anker/filament/Generic PLA-CF @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA-CF @Anker", + "inherits": "Generic PLA-CF @Anker base", + "renamed_from": "Anker Generic PLA-CF", + "from": "system", + "setting_id": "5AdjHUxRi8LCU4E9", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/filament/Anker Generic PVA @base.json b/resources/profiles/Anker/filament/Generic PVA @Anker base.json similarity index 61% rename from resources/profiles/Anker/filament/Anker Generic PVA @base.json rename to resources/profiles/Anker/filament/Generic PVA @Anker base.json index 5c7775c2d2..d52cd9b729 100644 --- a/resources/profiles/Anker/filament/Anker Generic PVA @base.json +++ b/resources/profiles/Anker/filament/Generic PVA @Anker base.json @@ -1,8 +1,8 @@ { "type": "filament", - "name": "Anker Generic PVA @base", + "name": "Generic PVA @Anker base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "GFS99", + "filament_id": "OFDvXujf", "instantiation": "false" } diff --git a/resources/profiles/Anker/filament/Anker Generic PETG.json b/resources/profiles/Anker/filament/Generic PVA @Anker.json similarity index 65% rename from resources/profiles/Anker/filament/Anker Generic PETG.json rename to resources/profiles/Anker/filament/Generic PVA @Anker.json index ed70b54983..35a7dd456a 100644 --- a/resources/profiles/Anker/filament/Anker Generic PETG.json +++ b/resources/profiles/Anker/filament/Generic PVA @Anker.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Anker Generic PETG", - "inherits": "Anker Generic PETG @base", + "name": "Generic PVA @Anker", + "inherits": "Generic PVA @Anker base", + "renamed_from": "Anker Generic PVA", "from": "system", - "setting_id": "FMnK9qOMiqDcGqhd", + "setting_id": "HXERDaP3AgzWtmiu", "instantiation": "true", "compatible_printers": [ "Anker M5 0.4 nozzle", diff --git a/resources/profiles/Anker/filament/Anker Generic TPU @base.json b/resources/profiles/Anker/filament/Generic TPU @Anker base.json similarity index 81% rename from resources/profiles/Anker/filament/Anker Generic TPU @base.json rename to resources/profiles/Anker/filament/Generic TPU @Anker base.json index 3ca7c49029..233d7c8bc6 100644 --- a/resources/profiles/Anker/filament/Anker Generic TPU @base.json +++ b/resources/profiles/Anker/filament/Generic TPU @Anker base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Anker Generic TPU @base", + "name": "Generic TPU @Anker base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU99", + "filament_id": "OFgbpcy9", "instantiation": "false", "filament_retraction_speed": "90", "filament_deretraction_speed": "50", diff --git a/resources/profiles/Anker/filament/Generic TPU @Anker.json b/resources/profiles/Anker/filament/Generic TPU @Anker.json new file mode 100644 index 0000000000..44204f1113 --- /dev/null +++ b/resources/profiles/Anker/filament/Generic TPU @Anker.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic TPU @Anker", + "inherits": "Generic TPU @Anker base", + "renamed_from": "Anker Generic TPU", + "from": "system", + "setting_id": "5YigkBBSP2RM1MbK", + "instantiation": "true", + "compatible_printers": [ + "Anker M5 0.4 nozzle", + "Anker M5 0.6 nozzle", + "Anker M5 All-Metal 0.4 nozzle", + "Anker M5 All-Metal 0.6 nozzle", + "Anker M5C 0.4 nozzle", + "Anker M5C 0.6 nozzle" + ] +} diff --git a/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json index e4543fa084..6389fba7bc 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.2mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json index 88662e7bab..3feda012a3 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.25mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json index 42810014ea..593cc53888 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json @@ -13,7 +13,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.20mm Standard @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json index 11d8b3cf62..3e3dc25c62 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json @@ -19,7 +19,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.30mm Standard 0.6 nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json index 0240748426..ba4083b2be 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.2mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json index 8a5600df05..21201c4147 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.25mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json index 6434e3c76b..948cc7a3b8 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json @@ -13,7 +13,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.20mm Standard @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json index 4c5c7a82ef..2dcb107d93 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json @@ -19,7 +19,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.30mm Standard 0.6 nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json b/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json index e6944177ad..7fade72381 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V8111v2", - "default_materials": "Anker Generic PLA;Anker Generic PLA+;Anker Generic PLA Silk;Anker Generic TPU;Anker Generic PETG" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" } diff --git a/resources/profiles/Anker/machine/Anker M5.json b/resources/profiles/Anker/machine/Anker M5.json index 489151a669..5c9839d1ff 100644 --- a/resources/profiles/Anker/machine/Anker M5.json +++ b/resources/profiles/Anker/machine/Anker M5.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V8111", - "default_materials": "Anker Generic PLA;Anker Generic PLA+;Anker Generic PLA Silk;Anker Generic TPU;Anker Generic PETG" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" } diff --git a/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json index b88d21dae3..a5db1517a7 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.2mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json index 7aec134ac4..fd5c40ea05 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json @@ -16,7 +16,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.10mm Standard 0.25mm nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json index 573784f2f3..7dd6f8036b 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json @@ -13,7 +13,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.20mm Standard @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json index d6d1212b63..5323967ae2 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json @@ -19,7 +19,7 @@ "auxiliary_fan": "0", "bed_exclude_area": [], "default_filament_profile": [ - "Anker Generic PLA+" + "Generic PLA+ @Anker" ], "default_print_profile": "0.30mm Standard 0.6 nozzle @Anker", "extruder_clearance_height_to_lid": "250", diff --git a/resources/profiles/Anker/machine/Anker M5C.json b/resources/profiles/Anker/machine/Anker M5C.json index d709bfc4c3..cf539851e5 100644 --- a/resources/profiles/Anker/machine/Anker M5C.json +++ b/resources/profiles/Anker/machine/Anker M5C.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V81101C3", - "default_materials": "Anker Generic PLA;Anker Generic PLA+;Anker Generic PLA Silk;Anker Generic TPU;Anker Generic PETG" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" } diff --git a/resources/profiles/Anycubic.json b/resources/profiles/Anycubic.json index d0a5ad0852..205fd359d8 100644 --- a/resources/profiles/Anycubic.json +++ b/resources/profiles/Anycubic.json @@ -1,1234 +1,1234 @@ -{ - "name": "Anycubic", - "version": "02.04.00.02", - "force_update": "0", - "description": "Anycubic configurations", - "machine_model_list": [ - { - "name": "Anycubic 4Max Pro", - "sub_path": "machine/Anycubic 4Max Pro.json" - }, - { - "name": "Anycubic 4Max Pro 2", - "sub_path": "machine/Anycubic 4Max Pro 2.json" - }, - { - "name": "Anycubic Chiron", - "sub_path": "machine/Anycubic Chiron.json" - }, - { - "name": "Anycubic Kobra", - "sub_path": "machine/Anycubic Kobra.json" - }, - { - "name": "Anycubic Kobra 2", - "sub_path": "machine/Anycubic Kobra 2.json" - }, - { - "name": "Anycubic Kobra 2 Max", - "sub_path": "machine/Anycubic Kobra 2 Max.json" - }, - { - "name": "Anycubic Kobra 2 Neo", - "sub_path": "machine/Anycubic Kobra 2 Neo.json" - }, - { - "name": "Anycubic Kobra 2 Plus", - "sub_path": "machine/Anycubic Kobra 2 Plus.json" - }, - { - "name": "Anycubic Kobra 2 Pro", - "sub_path": "machine/Anycubic Kobra 2 Pro.json" - }, - { - "name": "Anycubic Kobra 3", - "sub_path": "machine/Anycubic Kobra 3.json" - }, - { - "name": "Anycubic Kobra 3 Max", - "sub_path": "machine/Anycubic Kobra 3 Max.json" - }, - { - "name": "Anycubic Kobra Max", - "sub_path": "machine/Anycubic Kobra Max.json" - }, - { - "name": "Anycubic Kobra Neo", - "sub_path": "machine/Anycubic Kobra Neo.json" - }, - { - "name": "Anycubic Kobra Plus", - "sub_path": "machine/Anycubic Kobra Plus.json" - }, - { - "name": "Anycubic Kobra S1", - "sub_path": "machine/Anycubic Kobra S1.json" - }, - { - "name": "Anycubic Kobra S1 Max", - "sub_path": "machine/Anycubic Kobra S1 Max.json" - }, - { - "name": "Anycubic Kobra X", - "sub_path": "machine/Anycubic Kobra X.json" - }, - { - "name": "Anycubic Predator", - "sub_path": "machine/Anycubic Predator.json" - }, - { - "name": "Anycubic Vyper", - "sub_path": "machine/Anycubic Vyper.json" - }, - { - "name": "Anycubic i3 Mega S", - "sub_path": "machine/Anycubic i3 Mega S.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.08mm Standard @Anycubic Kobra X", - "sub_path": "process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.10mm Detail @Anycubic Kobra 3 0.2 nozzle", - "sub_path": "process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json" - }, - { - "name": "0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "0.12mm Detail @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "0.12mm High Quality @Anycubic Kobra X", - "sub_path": "process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra X", - "sub_path": "process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.15mm Optimal @Anycubic 4MaxPro2", - "sub_path": "process/0.15mm Optimal @Anycubic 4MaxPro2.json" - }, - { - "name": "0.15mm Optimal @Anycubic Chiron", - "sub_path": "process/0.15mm Optimal @Anycubic Chiron.json" - }, - { - "name": "0.15mm Optimal @Anycubic Kobra", - "sub_path": "process/0.15mm Optimal @Anycubic Kobra.json" - }, - { - "name": "0.15mm Optimal @Anycubic Kobra2", - "sub_path": "process/0.15mm Optimal @Anycubic Kobra2.json" - }, - { - "name": "0.15mm Optimal @Anycubic KobraMax", - "sub_path": "process/0.15mm Optimal @Anycubic KobraMax.json" - }, - { - "name": "0.15mm Optimal @Anycubic KobraPlus", - "sub_path": "process/0.15mm Optimal @Anycubic KobraPlus.json" - }, - { - "name": "0.15mm Optimal @Anycubic Vyper", - "sub_path": "process/0.15mm Optimal @Anycubic Vyper.json" - }, - { - "name": "0.15mm Optimal @Anycubic i3MegaS", - "sub_path": "process/0.15mm Optimal @Anycubic i3MegaS.json" - }, - { - "name": "0.16mm High Quality @Anycubic Kobra X", - "sub_path": "process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra X", - "sub_path": "process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "0.20mm High Quality @Anycubic Kobra X", - "sub_path": "process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic 4MaxPro", - "sub_path": "process/0.20mm Standard @Anycubic 4MaxPro.json" - }, - { - "name": "0.20mm Standard @Anycubic 4MaxPro2", - "sub_path": "process/0.20mm Standard @Anycubic 4MaxPro2.json" - }, - { - "name": "0.20mm Standard @Anycubic Chiron", - "sub_path": "process/0.20mm Standard @Anycubic Chiron.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra", - "sub_path": "process/0.20mm Standard @Anycubic Kobra.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra X", - "sub_path": "process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra2", - "sub_path": "process/0.20mm Standard @Anycubic Kobra2.json" - }, - { - "name": "0.20mm Standard @Anycubic KobraMax", - "sub_path": "process/0.20mm Standard @Anycubic KobraMax.json" - }, - { - "name": "0.20mm Standard @Anycubic KobraPlus", - "sub_path": "process/0.20mm Standard @Anycubic KobraPlus.json" - }, - { - "name": "0.20mm Standard @Anycubic Predator", - "sub_path": "process/0.20mm Standard @Anycubic Predator.json" - }, - { - "name": "0.20mm Standard @Anycubic Vyper", - "sub_path": "process/0.20mm Standard @Anycubic Vyper.json" - }, - { - "name": "0.20mm Standard @Anycubic i3MegaS", - "sub_path": "process/0.20mm Standard @Anycubic i3MegaS.json" - }, - { - "name": "0.24mm Draft @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra X", - "sub_path": "process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle", - "sub_path": "process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra X", - "sub_path": "process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "0.30mm Draft @Anycubic 4MaxPro2", - "sub_path": "process/0.30mm Draft @Anycubic 4MaxPro2.json" - }, - { - "name": "0.30mm Draft @Anycubic Chiron", - "sub_path": "process/0.30mm Draft @Anycubic Chiron.json" - }, - { - "name": "0.30mm Draft @Anycubic Kobra", - "sub_path": "process/0.30mm Draft @Anycubic Kobra.json" - }, - { - "name": "0.30mm Draft @Anycubic Kobra2", - "sub_path": "process/0.30mm Draft @Anycubic Kobra2.json" - }, - { - "name": "0.30mm Draft @Anycubic KobraMax", - "sub_path": "process/0.30mm Draft @Anycubic KobraMax.json" - }, - { - "name": "0.30mm Draft @Anycubic KobraPlus", - "sub_path": "process/0.30mm Draft @Anycubic KobraPlus.json" - }, - { - "name": "0.30mm Draft @Anycubic Vyper", - "sub_path": "process/0.30mm Draft @Anycubic Vyper.json" - }, - { - "name": "0.30mm Draft @Anycubic i3MegaS", - "sub_path": "process/0.30mm Draft @Anycubic i3MegaS.json" - }, - { - "name": "0.30mm Standard @Anycubic Kobra 3 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Anycubic Kobra 3 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - - { - "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - - { - "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - - { - "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - } - - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic Generic ABS", - "sub_path": "filament/Anycubic Generic ABS.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic Generic ASA", - "sub_path": "filament/Anycubic Generic ASA.json" - }, - { - "name": "Anycubic Generic PA", - "sub_path": "filament/Anycubic Generic PA.json" - }, - { - "name": "Anycubic Generic PA-CF", - "sub_path": "filament/Anycubic Generic PA-CF.json" - }, - { - "name": "Fiberon PA6-CF20 @Anycubic Kobra S1", - "sub_path": "filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json" - }, - { - "name": "Anycubic Generic PC", - "sub_path": "filament/Anycubic Generic PC.json" - }, - { - "name": "Anycubic Generic PETG", - "sub_path": "filament/Anycubic Generic PETG.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Generic PLA", - "sub_path": "filament/Anycubic Generic PLA.json" - }, - { - "name": "Anycubic Generic PLA-CF", - "sub_path": "filament/Anycubic Generic PLA-CF.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Panchroma PLA @Anycubic Kobra S1", - "sub_path": "filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json" - }, - { - "name": "Polymaker PLA Pro @Anycubic Kobra S1", - "sub_path": "filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json" - }, - { - "name": "Polymaker PLA Pro Metallic @Anycubic Kobra S1", - "sub_path": "filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json" - }, - { - "name": "Anycubic Generic PVA", - "sub_path": "filament/Anycubic Generic PVA.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic Generic TPU", - "sub_path": "filament/Anycubic Generic TPU.json" - }, - { - "name": "Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic TPU @Anycubic Kobra S1 0.4 nozzle", - "sub_path": "filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Generic ABS @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 0.2 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 0.6 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra 3 0.8 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Generic TPU @Anycubic Kobra 3 0.4 nozzle", - "sub_path": "filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json" - } - - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "Anycubic 4Max Pro 0.4 nozzle", - "sub_path": "machine/Anycubic 4Max Pro 0.4 nozzle.json" - }, - { - "name": "Anycubic 4Max Pro 2 0.4 nozzle", - "sub_path": "machine/Anycubic 4Max Pro 2 0.4 nozzle.json" - }, - { - "name": "Anycubic Chiron 0.4 nozzle", - "sub_path": "machine/Anycubic Chiron 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 2 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 2 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 2 Max 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 2 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 2 Neo 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 2 Neo 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 2 Plus 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 2 Plus 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 2 Pro 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 2 Pro 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 0.2 nozzle", - "sub_path": "machine/Anycubic Kobra 3 0.2 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 0.6 nozzle", - "sub_path": "machine/Anycubic Kobra 3 0.6 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 0.8 nozzle", - "sub_path": "machine/Anycubic Kobra 3 0.8 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 Max 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra 3 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 Max 0.6 nozzle", - "sub_path": "machine/Anycubic Kobra 3 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic Kobra 3 Max 0.8 nozzle", - "sub_path": "machine/Anycubic Kobra 3 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic Kobra Max 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra Neo 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra Neo 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra Plus 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra Plus 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra S1 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic Kobra X 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra X 0.4 nozzle.json" - }, - { - "name": "Anycubic Predator 0.4 nozzle", - "sub_path": "machine/Anycubic Predator 0.4 nozzle.json" - }, - { - "name": "Anycubic Vyper 0.4 nozzle", - "sub_path": "machine/Anycubic Vyper 0.4 nozzle.json" - }, - { - "name": "Anycubic i3 Mega S 0.4 nozzle", - "sub_path": "machine/Anycubic i3 Mega S 0.4 nozzle.json" - } - ] -} +{ + "name": "Anycubic", + "version": "02.04.00.03", + "force_update": "0", + "description": "Anycubic configurations", + "machine_model_list": [ + { + "name": "Anycubic 4Max Pro", + "sub_path": "machine/Anycubic 4Max Pro.json" + }, + { + "name": "Anycubic 4Max Pro 2", + "sub_path": "machine/Anycubic 4Max Pro 2.json" + }, + { + "name": "Anycubic Chiron", + "sub_path": "machine/Anycubic Chiron.json" + }, + { + "name": "Anycubic Kobra", + "sub_path": "machine/Anycubic Kobra.json" + }, + { + "name": "Anycubic Kobra 2", + "sub_path": "machine/Anycubic Kobra 2.json" + }, + { + "name": "Anycubic Kobra 2 Max", + "sub_path": "machine/Anycubic Kobra 2 Max.json" + }, + { + "name": "Anycubic Kobra 2 Neo", + "sub_path": "machine/Anycubic Kobra 2 Neo.json" + }, + { + "name": "Anycubic Kobra 2 Plus", + "sub_path": "machine/Anycubic Kobra 2 Plus.json" + }, + { + "name": "Anycubic Kobra 2 Pro", + "sub_path": "machine/Anycubic Kobra 2 Pro.json" + }, + { + "name": "Anycubic Kobra 3", + "sub_path": "machine/Anycubic Kobra 3.json" + }, + { + "name": "Anycubic Kobra 3 Max", + "sub_path": "machine/Anycubic Kobra 3 Max.json" + }, + { + "name": "Anycubic Kobra Max", + "sub_path": "machine/Anycubic Kobra Max.json" + }, + { + "name": "Anycubic Kobra Neo", + "sub_path": "machine/Anycubic Kobra Neo.json" + }, + { + "name": "Anycubic Kobra Plus", + "sub_path": "machine/Anycubic Kobra Plus.json" + }, + { + "name": "Anycubic Kobra S1", + "sub_path": "machine/Anycubic Kobra S1.json" + }, + { + "name": "Anycubic Kobra S1 Max", + "sub_path": "machine/Anycubic Kobra S1 Max.json" + }, + { + "name": "Anycubic Kobra X", + "sub_path": "machine/Anycubic Kobra X.json" + }, + { + "name": "Anycubic Predator", + "sub_path": "machine/Anycubic Predator.json" + }, + { + "name": "Anycubic Vyper", + "sub_path": "machine/Anycubic Vyper.json" + }, + { + "name": "Anycubic i3 Mega S", + "sub_path": "machine/Anycubic i3 Mega S.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.08mm Standard @Anycubic Kobra X", + "sub_path": "process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.10mm Detail @Anycubic Kobra 3 0.2 nozzle", + "sub_path": "process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json" + }, + { + "name": "0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "0.12mm High Quality @Anycubic Kobra X", + "sub_path": "process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.12mm Standard @Anycubic Kobra X", + "sub_path": "process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.15mm Optimal @Anycubic 4MaxPro2", + "sub_path": "process/0.15mm Optimal @Anycubic 4MaxPro2.json" + }, + { + "name": "0.15mm Optimal @Anycubic Chiron", + "sub_path": "process/0.15mm Optimal @Anycubic Chiron.json" + }, + { + "name": "0.15mm Optimal @Anycubic Kobra", + "sub_path": "process/0.15mm Optimal @Anycubic Kobra.json" + }, + { + "name": "0.15mm Optimal @Anycubic Kobra2", + "sub_path": "process/0.15mm Optimal @Anycubic Kobra2.json" + }, + { + "name": "0.15mm Optimal @Anycubic KobraMax", + "sub_path": "process/0.15mm Optimal @Anycubic KobraMax.json" + }, + { + "name": "0.15mm Optimal @Anycubic KobraPlus", + "sub_path": "process/0.15mm Optimal @Anycubic KobraPlus.json" + }, + { + "name": "0.15mm Optimal @Anycubic Vyper", + "sub_path": "process/0.15mm Optimal @Anycubic Vyper.json" + }, + { + "name": "0.15mm Optimal @Anycubic i3MegaS", + "sub_path": "process/0.15mm Optimal @Anycubic i3MegaS.json" + }, + { + "name": "0.16mm High Quality @Anycubic Kobra X", + "sub_path": "process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "0.16mm Standard @Anycubic Kobra X", + "sub_path": "process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "0.20mm High Quality @Anycubic Kobra X", + "sub_path": "process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic 4MaxPro", + "sub_path": "process/0.20mm Standard @Anycubic 4MaxPro.json" + }, + { + "name": "0.20mm Standard @Anycubic 4MaxPro2", + "sub_path": "process/0.20mm Standard @Anycubic 4MaxPro2.json" + }, + { + "name": "0.20mm Standard @Anycubic Chiron", + "sub_path": "process/0.20mm Standard @Anycubic Chiron.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra", + "sub_path": "process/0.20mm Standard @Anycubic Kobra.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra X", + "sub_path": "process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra2", + "sub_path": "process/0.20mm Standard @Anycubic Kobra2.json" + }, + { + "name": "0.20mm Standard @Anycubic KobraMax", + "sub_path": "process/0.20mm Standard @Anycubic KobraMax.json" + }, + { + "name": "0.20mm Standard @Anycubic KobraPlus", + "sub_path": "process/0.20mm Standard @Anycubic KobraPlus.json" + }, + { + "name": "0.20mm Standard @Anycubic Predator", + "sub_path": "process/0.20mm Standard @Anycubic Predator.json" + }, + { + "name": "0.20mm Standard @Anycubic Vyper", + "sub_path": "process/0.20mm Standard @Anycubic Vyper.json" + }, + { + "name": "0.20mm Standard @Anycubic i3MegaS", + "sub_path": "process/0.20mm Standard @Anycubic i3MegaS.json" + }, + { + "name": "0.24mm Draft @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra X", + "sub_path": "process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle", + "sub_path": "process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json" + }, + { + "name": "0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "0.28mm Standard @Anycubic Kobra X", + "sub_path": "process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "0.30mm Draft @Anycubic 4MaxPro2", + "sub_path": "process/0.30mm Draft @Anycubic 4MaxPro2.json" + }, + { + "name": "0.30mm Draft @Anycubic Chiron", + "sub_path": "process/0.30mm Draft @Anycubic Chiron.json" + }, + { + "name": "0.30mm Draft @Anycubic Kobra", + "sub_path": "process/0.30mm Draft @Anycubic Kobra.json" + }, + { + "name": "0.30mm Draft @Anycubic Kobra2", + "sub_path": "process/0.30mm Draft @Anycubic Kobra2.json" + }, + { + "name": "0.30mm Draft @Anycubic KobraMax", + "sub_path": "process/0.30mm Draft @Anycubic KobraMax.json" + }, + { + "name": "0.30mm Draft @Anycubic KobraPlus", + "sub_path": "process/0.30mm Draft @Anycubic KobraPlus.json" + }, + { + "name": "0.30mm Draft @Anycubic Vyper", + "sub_path": "process/0.30mm Draft @Anycubic Vyper.json" + }, + { + "name": "0.30mm Draft @Anycubic i3MegaS", + "sub_path": "process/0.30mm Draft @Anycubic i3MegaS.json" + }, + { + "name": "0.30mm Standard @Anycubic Kobra 3 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Anycubic Kobra 3 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + + { + "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + + { + "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + + { + "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + } + + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Anycubic", + "sub_path": "filament/Generic ABS @Anycubic.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic ASA @Anycubic", + "sub_path": "filament/Generic ASA @Anycubic.json" + }, + { + "name": "Generic PA @Anycubic", + "sub_path": "filament/Generic PA @Anycubic.json" + }, + { + "name": "Generic PA-CF @Anycubic", + "sub_path": "filament/Generic PA-CF @Anycubic.json" + }, + { + "name": "Fiberon PA6-CF20 @Anycubic Kobra S1", + "sub_path": "filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json" + }, + { + "name": "Generic PC @Anycubic", + "sub_path": "filament/Generic PC @Anycubic.json" + }, + { + "name": "Generic PETG @Anycubic", + "sub_path": "filament/Generic PETG @Anycubic.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Generic PLA @Anycubic", + "sub_path": "filament/Generic PLA @Anycubic.json" + }, + { + "name": "Generic PLA-CF @Anycubic", + "sub_path": "filament/Generic PLA-CF @Anycubic.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Panchroma PLA @Anycubic Kobra S1", + "sub_path": "filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json" + }, + { + "name": "Polymaker PLA Pro @Anycubic Kobra S1", + "sub_path": "filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json" + }, + { + "name": "Polymaker PLA Pro Metallic @Anycubic Kobra S1", + "sub_path": "filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json" + }, + { + "name": "Generic PVA @Anycubic", + "sub_path": "filament/Generic PVA @Anycubic.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic TPU @Anycubic", + "sub_path": "filament/Generic TPU @Anycubic.json" + }, + { + "name": "Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic TPU @Anycubic Kobra S1 0.4 nozzle", + "sub_path": "filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 0.2 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 0.6 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra 3 0.8 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Generic TPU @Anycubic Kobra 3 0.4 nozzle", + "sub_path": "filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json" + } + + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "Anycubic 4Max Pro 0.4 nozzle", + "sub_path": "machine/Anycubic 4Max Pro 0.4 nozzle.json" + }, + { + "name": "Anycubic 4Max Pro 2 0.4 nozzle", + "sub_path": "machine/Anycubic 4Max Pro 2 0.4 nozzle.json" + }, + { + "name": "Anycubic Chiron 0.4 nozzle", + "sub_path": "machine/Anycubic Chiron 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 2 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 2 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 2 Max 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 2 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 2 Neo 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 2 Neo 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 2 Plus 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 2 Plus 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 2 Pro 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 2 Pro 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 0.2 nozzle", + "sub_path": "machine/Anycubic Kobra 3 0.2 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 3 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 0.6 nozzle", + "sub_path": "machine/Anycubic Kobra 3 0.6 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 0.8 nozzle", + "sub_path": "machine/Anycubic Kobra 3 0.8 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 Max 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra 3 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 Max 0.6 nozzle", + "sub_path": "machine/Anycubic Kobra 3 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic Kobra 3 Max 0.8 nozzle", + "sub_path": "machine/Anycubic Kobra 3 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic Kobra Max 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra Max 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra Neo 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra Neo 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra Plus 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra Plus 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra S1 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic Kobra X 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra X 0.4 nozzle.json" + }, + { + "name": "Anycubic Predator 0.4 nozzle", + "sub_path": "machine/Anycubic Predator 0.4 nozzle.json" + }, + { + "name": "Anycubic Vyper 0.4 nozzle", + "sub_path": "machine/Anycubic Vyper 0.4 nozzle.json" + }, + { + "name": "Anycubic i3 Mega S 0.4 nozzle", + "sub_path": "machine/Anycubic i3 Mega S 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json index f560328d28..99d8da0f4b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "RDI26qeSRSTe0PDg", - "filament_id": "GFB99", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json index 4e5b8117bc..95d5884132 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "Moc1cylP6mmSQjlb", - "filament_id": "GFB99", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json index 5b5dbd88a8..3a6e2c9073 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "2xgfnUKyOUQwYWPa", - "filament_id": "GFB99", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json index 762dee8f05..f49664c14b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "NOiAgxA0BbvLhR1v", - "filament_id": "GFB99", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json index a37305a1bd..10b81c21b9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "MDWaiSjl89E6Edsn", - "filament_id": "GFABS", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json index 5638f4c226..ea9295b1e5 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "wZjVYc7dBDSKRusJ", - "filament_id": "GFABS", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json index 37cd31a19e..db2517faac 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "AbB6JtoPRsNgmxyy", - "filament_id": "GFABS", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json index 8a9663981c..841d07300a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "exX565xnrLPkYkvu", - "filament_id": "GFABS", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json index 5443dacb34..c37ebcb971 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "KeEk3yQZrKmJY9Q0", - "filament_id": "GFABS", + "filament_id": "OF223rZv", "instantiation": "true", "filament_settings_id": [ "Anycubic ABS @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json index 56f4d8957a..790d365ee5 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic ASA @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic ASA", + "inherits": "Generic ASA @Anycubic", "from": "system", "setting_id": "U66DGcpZeZ24VfPe", - "filament_id": "GFA99", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json index af221cecff..05d943ece7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "06j8OTuYw3Sh9BxL", - "filament_id": "GFA99", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json index 0c2d38c349..2a43e7b355 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "s2XJm0JghCSUDzhh", - "filament_id": "GFA99", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json index 7395073bce..1b038f7ba0 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "rf792xZNR7tRGKNg", - "filament_id": "GFA99", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json index 59113ee018..fff937f65e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "wqK6AVf1mNkIOmnt", - "filament_id": "GFASA", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_type": [ "ASA" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json index 6ee5e7d750..b682258829 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "aMgpooFosBBvlKKR", - "filament_id": "GFASA", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json index 8dc0f96a2c..af3076163a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "Isk7NkdH7GxsEZkS", - "filament_id": "GFASA", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json index 3ca00083f5..f2c2c816d8 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "Ew0Lg6u3e5Xj19Bz", - "filament_id": "GFASA", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json index cf04fda679..36c2d4a7da 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "PEg6aLXcyUc70p9F", - "filament_id": "GFASA", + "filament_id": "OF0yFLkY", "instantiation": "true", "filament_settings_id": [ "Anycubic ASA @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json index 66428b6c93..ad40090b9e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "hcL5OHthGzApICTk", - "filament_id": "GFPA", + "filament_id": "OFzS7zt4", "instantiation": "true", "filament_settings_id": [ "Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json index be313bf621..27b3bba016 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "OJbFCKoG5DtVGT9J", - "filament_id": "GFPA", + "filament_id": "OFzS7zt4", "instantiation": "true", "filament_settings_id": [ "Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json index 077e222d49..55756b72f7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "6mMIVw8iheDn1OuV", - "filament_id": "GFPA", + "filament_id": "OFzS7zt4", "instantiation": "true", "filament_settings_id": [ "Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index a67c82ac59..1484c7b6f9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "epl6B2WNjV1dxG5Z", - "filament_id": "GFPA6-CF", + "filament_id": "OFQe7sAx", "instantiation": "true", "filament_settings_id": [ "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index 6a58147c35..c6a01fd874 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "eMUXd3PFKHl41TIq", - "filament_id": "GFPA6-CF", + "filament_id": "OFQe7sAx", "instantiation": "true", "filament_settings_id": [ "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 553f17901d..9fab6c40b9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "y9XYrUJrUYKcBhCI", - "filament_id": "GFPA6-CF", + "filament_id": "OFQe7sAx", "instantiation": "true", "filament_settings_id": [ "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index bdc62ab11a..24ac67340d 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "nO6m8EaBKREWUi3f", - "filament_id": "GFPAHT-CF", + "filament_id": "OFaEuvNF", "instantiation": "true", "filament_settings_id": [ "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index 04cd241a06..fcc33a27cf 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "ebKput7Vyn4IQez1", - "filament_id": "GFPAHT-CF", + "filament_id": "OFaEuvNF", "instantiation": "true", "filament_settings_id": [ "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 429647426e..a292502096 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "jzrflGdwy9U8kl1c", - "filament_id": "GFPAHT-CF", + "filament_id": "OFaEuvNF", "instantiation": "true", "filament_settings_id": [ "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json index cfe5743cb9..1fadd8ce20 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "7F0I28djSlDopbIp", - "filament_id": "GFPC", + "filament_id": "OFZtkHRq", "instantiation": "true", "filament_settings_id": [ "Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json index c8ed72562f..05523149be 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "wF10XxL2tNXh8C1p", - "filament_id": "GFPC", + "filament_id": "OFZtkHRq", "instantiation": "true", "filament_settings_id": [ "Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json index 76e21e1ed2..e1cdbd5d6d 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "t3VfcIKMk0ELiPP7", - "filament_id": "GFPC", + "filament_id": "OFZtkHRq", "instantiation": "true", "filament_settings_id": [ "Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index 3321afd452..133f388fa1 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "dOOXRvGwMe3NeUj0", - "filament_id": "GFPC-CF", + "filament_id": "OFeIyhUx", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index 73378f1ffd..fb7b6e3e98 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "H0IECyfsMaCMdefe", - "filament_id": "GFPC-CF", + "filament_id": "OFeIyhUx", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 11ac6e7bec..96792e69de 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "7nu7lbiAHMeFBIJc", - "filament_id": "GFPC-CF", + "filament_id": "OFeIyhUx", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json index 53e4aba120..9f60de8562 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "puSuSfNyKlYlmLjL", - "filament_id": "GFPC-GF", + "filament_id": "OFxJRuVF", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json index 183655a8a9..9a168b8331 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "1Qdmjm0MNJKU7aCD", - "filament_id": "GFPC-GF", + "filament_id": "OFxJRuVF", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json index 61de49c647..033135697d 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "Z0qp7SdwN9luxLFO", - "filament_id": "GFPC-GF", + "filament_id": "OFxJRuVF", "instantiation": "true", "filament_settings_id": [ "Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json index 035648964d..2d5c70f60b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "gmni9H2Du5nxBqQu", - "filament_id": "GFU99", + "filament_id": "OFUaHEO9", "instantiation": "true", "filament_settings_id": [ "Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json index 93b2dd3423..ae51a2b31f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "zCqTTjac3ydSAw3q", - "filament_id": "GFPEBA", + "filament_id": "OFjLAYgO", "instantiation": "true", "filament_settings_id": [ "Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json index 1abbe033ae..171c1f085c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "1bCJcP2RcDlvIqEo", - "filament_id": "GFPEBA", + "filament_id": "OFjLAYgO", "instantiation": "true", "filament_settings_id": [ "Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json index 5f2fbc693c..65d1e762b4 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "5v6coSKjAl220Cnq", - "filament_id": "GFPEBA", + "filament_id": "OFjLAYgO", "instantiation": "true", "filament_settings_id": [ "Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index 852d9be237..b4ab737c8e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "saRQ24o8KHgc1YnM", - "filament_id": "GFPET-CF", + "filament_id": "OFRhCTUg", "instantiation": "true", "filament_settings_id": [ "Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index 688d699495..b8bdfac90f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "hYFR2CtiXab9KZUp", - "filament_id": "GFPET-CF", + "filament_id": "OFRhCTUg", "instantiation": "true", "filament_settings_id": [ "Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 95fd9fd80e..1f21b4144f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "RCaf3c84JsWkuJzd", - "filament_id": "GFPET-CF", + "filament_id": "OFRhCTUg", "instantiation": "true", "filament_settings_id": [ "Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json index cc24576ed0..213ee1ce70 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PETG @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PETG", + "inherits": "Generic PETG @Anycubic", "from": "system", "setting_id": "qe2wYLf7CEMjmfxj", - "filament_id": "GFG99", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json index bd02903dcc..fbab6ab82c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "uNktFymJ3RbGa7k0", - "filament_id": "GFG99", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json index e7f271b6a4..5966ceb3dd 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "EaW663aw4torYXG8", - "filament_id": "GFG99", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json index a0e8481d7f..13c1aae54f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "lgVEMmBHMen0sWsI", - "filament_id": "GFG99", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json index d513cdd1d4..85edb1eca9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "uLRMTzyJIara4Hr2", - "filament_id": "GFG99", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.96" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json index 9c59bd3643..7fb1d1f66c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "FAyFkKpV5w6G5dU2", - "filament_id": "GFPETG", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json index d97f7fc564..64ec8774b0 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "duduwoswLHk9I9sY", - "filament_id": "GFPETG", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json index bd1a1768c0..ea95c2b1c5 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "b3GU7ytZPEYNNyne", - "filament_id": "GFPETG", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json index d8913fe29e..a2cd9ecc5e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "SrHKJh6prBzMz4Se", - "filament_id": "GFPETG", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json index a14c08e5c4..b0c543cebf 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "HyTi93UGno6uAJEO", - "filament_id": "GFPETG", + "filament_id": "OFo6n2pB", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index 6263a4c033..bbe7575b49 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "ajFzrQq9AvGtZCui", - "filament_id": "GFPETG-CF", + "filament_id": "OF9UJOGF", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index d374e345e0..d78fcc1d27 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "VOV59iBwqwMtmi48", - "filament_id": "GFPETG-CF", + "filament_id": "OF9UJOGF", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 1e4342272a..cc3e8a15fc 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "L6GIF36jbXf5NVOw", - "filament_id": "GFPETG-CF", + "filament_id": "OF9UJOGF", "instantiation": "true", "filament_settings_id": [ "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json index 7e8a8b189b..7faa84782c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "XIq1GeZdHqOl9Gtr", - "filament_id": "GFL92", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json index 2e2c0d094a..583473ed30 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "EaVdXQHAyocYUCez", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json index e96d1b0884..8e531b88a4 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "UpC1Qut0kjYRD9po", - "filament_id": "GFL92", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json index c60020dfda..01b3d45f23 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "ELCOJflyY3DfpPAH", - "filament_id": "GFL92", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json index 4e058c6f74..2898403b36 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 3 0.2 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "enkHPcq0yYHsRk7g", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json index 42d757d7e9..a4e34756ec 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "qw4uL96miCLTNE7b", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json index f01ded111e..af7e374dc7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 3 0.6 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "KrlWgkC2kVdSRNUx", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json index 0a12e310b4..5c8936316f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra 3 0.8 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "gK0NhTnxz1VBNHbu", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json index c94f05a52f..504a4b382c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "4nCPU0WS74OXowyr", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json index 3fc828b305..df464f2fa9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "0Ae57Dt0KXnpQUJu", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json index 7f862c1b1c..4e60bf4527 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "otxG4N1WrXHUw8Z9", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json index 03627128bc..80c120870e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "GblA3LvgCL63V7Qx", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json index 717e533526..43ec857824 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "zYYM5Fznkiz0UgHN", - "filament_id": "GFL99", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json index 13a4eccfc2..0f53f104b5 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Z0T8Mul8Ta7zqRjS", - "filament_id": "GFPLA", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json index f4a7632c12..cddede3f5a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "61KPHMw1fRcuaGHk", - "filament_id": "GFPLA", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json index 82691cd80f..398befabb4 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "RQJLrGtzvbP2PksP", - "filament_id": "GFPLA", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json index d00931d974..fd949e041a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "50Ailboxk7bEclVp", - "filament_id": "GFPLA", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json index 795805eb82..f4e9e91f6f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "1hyHPSJZgUpLcW7u", - "filament_id": "GFPLA", + "filament_id": "OFmjN2bc", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json index 3df60b8a89..9cb1eef59f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "m7o0ek6sbOavVUpG", - "filament_id": "GFL98", + "filament_id": "OF5PtjTp", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json index 5bb37daa1f..968eba0ec4 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,339 +1,339 @@ -{ - "type": "filament", - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "Anycubic Generic PLA", - "from": "system", - "setting_id": "NVrxrFGYkHRyzrFq", - "filament_id": "GFPLA Glow", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "activate_air_filtration": [ - "1" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0,0,0\n0,0,0" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "85" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "30" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "fan_p2_speed_before_x_layers": [ - "50" - ], - "filament_adhesiveness_category": [ - "100" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode " - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "-1" - ], - "nozzle_temperature": [ - "190" - ], - "nozzle_temperature_BRASS": [ - "220" - ], - "nozzle_temperature_HS": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "220" - ], - "nozzle_temperature_initial_layer_HS": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "45" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "Generic PLA @Anycubic", + "from": "system", + "setting_id": "NVrxrFGYkHRyzrFq", + "filament_id": "OF5PtjTp", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "activate_air_filtration": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0,0,0\n0,0,0" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "85" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "30" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "fan_p2_speed_before_x_layers": [ + "50" + ], + "filament_adhesiveness_category": [ + "100" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode " + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "-1" + ], + "nozzle_temperature": [ + "190" + ], + "nozzle_temperature_BRASS": [ + "220" + ], + "nozzle_temperature_HS": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "220" + ], + "nozzle_temperature_initial_layer_HS": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.03" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "45" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json index 284a1f93fd..7d8be15657 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,351 +1,351 @@ -{ - "type": "filament", - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "Anycubic Generic PLA", - "from": "system", - "setting_id": "swLSkqq7X3PhbRiQ", - "filament_id": "GFPLA Glow", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "5" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "5" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "filament_adhesiveness_category": [ - "100" - ], - "filament_change_length": [ - "10" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flush_temp": [ - "nil" - ], - "filament_flush_volumetric_speed": [ - "nil" - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_prime_volume": [ - "45" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_ramming_volumetric_speed": [ - "-1" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_BRASS": [ - "210" - ], - "nozzle_temperature_HS": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "220" - ], - "nozzle_temperature_initial_layer_HS": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "55" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "Generic PLA @Anycubic", + "from": "system", + "setting_id": "swLSkqq7X3PhbRiQ", + "filament_id": "OF5PtjTp", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "5" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "5" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "filament_adhesiveness_category": [ + "100" + ], + "filament_change_length": [ + "10" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode\n" + ], + "filament_flush_temp": [ + "nil" + ], + "filament_flush_volumetric_speed": [ + "nil" + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_prime_volume": [ + "45" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_ramming_volumetric_speed": [ + "-1" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_BRASS": [ + "210" + ], + "nozzle_temperature_HS": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "220" + ], + "nozzle_temperature_initial_layer_HS": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.03" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "55" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json index 26d53a4f72..26181302ec 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,351 +1,351 @@ -{ - "type": "filament", - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "Anycubic Generic PLA", - "from": "system", - "setting_id": "rsOyKXt6G37Ze51l", - "filament_id": "GFPLA Glow", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "5" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "5" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "filament_adhesiveness_category": [ - "100" - ], - "filament_change_length": [ - "10" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flush_temp": [ - "nil" - ], - "filament_flush_volumetric_speed": [ - "nil" - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_prime_volume": [ - "45" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_ramming_volumetric_speed": [ - "-1" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_BRASS": [ - "210" - ], - "nozzle_temperature_HS": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "210" - ], - "nozzle_temperature_initial_layer_HS": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "45" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "Generic PLA @Anycubic", + "from": "system", + "setting_id": "rsOyKXt6G37Ze51l", + "filament_id": "OF5PtjTp", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "5" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "5" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "filament_adhesiveness_category": [ + "100" + ], + "filament_change_length": [ + "10" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode\n" + ], + "filament_flush_temp": [ + "nil" + ], + "filament_flush_volumetric_speed": [ + "nil" + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_prime_volume": [ + "45" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_ramming_volumetric_speed": [ + "-1" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_BRASS": [ + "210" + ], + "nozzle_temperature_HS": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "210" + ], + "nozzle_temperature_initial_layer_HS": [ + "210" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.03" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "45" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json index 0050079b0d..97c2eff0d6 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "7GISZDRG9YilzBXM", - "filament_id": "GFPLA Glow", + "filament_id": "OF5PtjTp", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json index d36e50bf95..5b069135b3 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "Sio4qE22N2krNjx1", - "filament_id": "GFL96", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json index c5e434f90f..eb59d710e0 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "4FQaTeouNl9pL4Vl", - "filament_id": "GFL99", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json index d996d2d84b..9b37a8911c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "AEKT5WgqOTAVYijs", - "filament_id": "GFL99", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.96" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json index ad8be5c9f1..1c5babfe87 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "xTuh6dk8MdeAovdB", - "filament_id": "GFPLA High Speed", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json index 4f2a9b55e4..4db8e137e9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "BpBYwZqt4ik1XIFp", - "filament_id": "GFPLA High Speed", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json index 809c243223..0deb583eaa 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "2Rk0UA3rtW53ECqo", - "filament_id": "GFPLA High Speed", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json index 12ba8b6984..75fb882984 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "hQ90rvCLS2rVEPVJ", - "filament_id": "GFPLA High Speed", + "filament_id": "OFjVOWfJ", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json index 18450cf484..03ea837c0c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "wi26Yq5bX8oGt4CA", - "filament_id": "GFL99", + "filament_id": "OFIgbDHq", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json index 88dc0be839..474deb3deb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "kVOaVF3YyfGrXTdW", - "filament_id": "GFL95", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json index 74e41f42aa..7dad057149 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "qSpZJ4cRcg3xb2b2", - "filament_id": "GFL99", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json index 64a690ea12..6797adcb5d 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "WvmwXnXSDPPtXS8S", - "filament_id": "GFPLA Matte", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json index bf2a4dfa91..9580807a70 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "jFKsrMeqeUAcMAyf", - "filament_id": "GFPLA Matte", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json index 6b0be29514..3d87a20b63 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "ueznw2fLdjN2EbIC", - "filament_id": "GFPLA Matte", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json index dc79a8b11f..ef72f06ca1 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "JxYmWTeCtw0VvUcC", - "filament_id": "GFPLA Matte", + "filament_id": "OFIE3vOf", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json index f7a73c748c..d7832ced4c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "1EID0A7FceyLzja5", - "filament_id": "GFL97", + "filament_id": "OFCp3Bgo", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json index 51dbc781fa..9aebb3860e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Fszb00FtQHFOcDmz", - "filament_id": "GFL99", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json index 24db6eab18..166e46e620 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "wnt68LydXcNxhGhN", - "filament_id": "GFL99", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.96" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json index 269f5acf24..2998b7d2eb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "AzEerDakdHs9Rj3I", - "filament_id": "GFPLA Silk", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json index aeaed4784e..2b685352b9 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "pUB5V3n7yAbPxFQC", - "filament_id": "GFPLA Silk", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json index 91edc58d3c..a1ec3be6e4 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "N96XNT6EoNVVFYz0", - "filament_id": "GFPLA Silk", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json index 426ea3744d..79a96e1143 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Yc1P4D9Z42Abjfut", - "filament_id": "GFPLA Silk", + "filament_id": "OFFwJWea", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json index f29c6e2674..0ea21e81ed 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "zAUNjIY9cGOO3Np5", - "filament_id": "GFL94", + "filament_id": "OFrGJ4tR", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json index 74b39048ee..ea42c44729 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "DkuffHU9VM48p50f", - "filament_id": "GFPLA Translucent", + "filament_id": "OF7c9fln", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json index 836edf10c5..59fd701496 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic PLA", + "inherits": "Generic PLA @Anycubic", "from": "system", "setting_id": "1va1bLu3J0b5GQt3", - "filament_id": "GFL93", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_vendor": [ "Anycubic" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json index 625e0ddad2..a80ab1d88f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "XN8zwImhwbZCkl6m", - "filament_id": "GFL99", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json index a7b7d4f595..d31d75f532 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Vs1ZyZJWHFue8Vc8", - "filament_id": "GFL99", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "0.96" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json index e437edc973..ad437f2cab 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "CjXfeHJpdOaSEzN0", - "filament_id": "GFPLA+", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json index 7bd1cded91..7b8dd55359 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "ol5UhwlAQy7yrXYU", - "filament_id": "GFPLA+", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json index 087e7e479c..3256b90dd3 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "u9nOmt30hBeZoN2w", - "filament_id": "GFPLA+", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json index 9bddef96ad..e5db637d98 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "lehlBFE2WVyi24s0", - "filament_id": "GFPLA+", + "filament_id": "OFnmp6rt", "instantiation": "true", "filament_settings_id": [ "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index ee6ea50ef1..bbee6ae226 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,336 +1,336 @@ -{ - "type": "filament", - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "Anycubic Generic PLA-CF", - "from": "system", - "setting_id": "Y9mFng36B2vAnP19", - "filament_id": "GFPLA-CF", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA-CF" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0,0,0\n0,0,0" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "85" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "5" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "5" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "filament_adhesiveness_category": [ - "100" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_retract_before_wipe": [ - "0%" - ], - "filament_retract_lift_above": [ - "0" - ], - "filament_retract_lift_below": [ - "349" - ], - "filament_retract_lift_enforce": [ - "All Surfaces" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Auto Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "-1" - ], - "nozzle_temperature": [ - "225" - ], - "nozzle_temperature_BRASS": [ - "230" - ], - "nozzle_temperature_HS": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "240" - ], - "nozzle_temperature_initial_layer_HS": [ - "240" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.03" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "45" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "Generic PLA-CF @Anycubic", + "from": "system", + "setting_id": "Y9mFng36B2vAnP19", + "filament_id": "OFZ0mR5b", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA-CF" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0,0,0\n0,0,0" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "85" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "5" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "5" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "filament_adhesiveness_category": [ + "100" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode\n" + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": [ + "0%" + ], + "filament_retract_lift_above": [ + "0" + ], + "filament_retract_lift_below": [ + "349" + ], + "filament_retract_lift_enforce": [ + "All Surfaces" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Auto Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "-1" + ], + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_BRASS": [ + "230" + ], + "nozzle_temperature_HS": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "240" + ], + "nozzle_temperature_initial_layer_HS": [ + "240" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.03" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "45" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index 91927df4a8..ab96e9fca8 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,351 +1,351 @@ -{ - "type": "filament", - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "Anycubic Generic PLA-CF", - "from": "system", - "setting_id": "9XGVjrGzNa4Br8kB", - "filament_id": "GFPLA-CF", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA-CF" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "5" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "5" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "filament_adhesiveness_category": [ - "100" - ], - "filament_change_length": [ - "10" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flush_temp": [ - "nil" - ], - "filament_flush_volumetric_speed": [ - "nil" - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_prime_volume": [ - "45" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_ramming_volumetric_speed": [ - "-1" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_BRASS": [ - "230" - ], - "nozzle_temperature_HS": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "230" - ], - "nozzle_temperature_initial_layer_HS": [ - "230" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "55" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "Generic PLA-CF @Anycubic", + "from": "system", + "setting_id": "9XGVjrGzNa4Br8kB", + "filament_id": "OFZ0mR5b", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA-CF" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "5" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "5" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "filament_adhesiveness_category": [ + "100" + ], + "filament_change_length": [ + "10" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode\n" + ], + "filament_flush_temp": [ + "nil" + ], + "filament_flush_volumetric_speed": [ + "nil" + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_prime_volume": [ + "45" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_ramming_volumetric_speed": [ + "-1" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_BRASS": [ + "230" + ], + "nozzle_temperature_HS": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "230" + ], + "nozzle_temperature_initial_layer_HS": [ + "230" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.025" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "55" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index 7619db9764..b1db8876da 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,351 +1,351 @@ -{ - "type": "filament", - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "Anycubic Generic PLA-CF", - "from": "system", - "setting_id": "vPSse40nqlQ0xBnp", - "filament_id": "GFPLA-CF", - "instantiation": "true", - "filament_settings_id": [ - "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle" - ], - "filament_vendor": [ - "Anycubic" - ], - "filament_type": [ - "PLA-CF" - ], - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "activate_air_filtration": [ - "0" - ], - "activate_chamber_temp_control": [ - "0" - ], - "adaptive_pressure_advance": [ - "0" - ], - "adaptive_pressure_advance_bridges": [ - "0" - ], - "adaptive_pressure_advance_model": [ - "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" - ], - "adaptive_pressure_advance_overhangs": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "chamber_temperature": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "compatible_printers_condition": "", - "compatible_prints": [], - "compatible_prints_condition": "", - "complete_print_exhaust_fan_speed": [ - "5" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "default_filament_colour": [ - "" - ], - "dont_slow_down_outer_wall": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "5" - ], - "enable_overhang_bridge_fan": [ - "1" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_cooling_layer_time_BRASS": [ - "100" - ], - "fan_cooling_layer_time_HS": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_max_speed_BRASS": [ - "100" - ], - "fan_max_speed_HS": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "fan_min_speed_BRASS": [ - "100" - ], - "fan_min_speed_HS": [ - "100" - ], - "filament_adhesiveness_category": [ - "0" - ], - "filament_change_length": [ - "10" - ], - "filament_cooling_final_speed": [ - "0" - ], - "filament_cooling_initial_speed": [ - "0" - ], - "filament_cooling_moves": [ - "0" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_end_gcode": [ - "; filament end gcode\n" - ], - "filament_flush_temp": [ - "nil" - ], - "filament_flush_volumetric_speed": [ - "nil" - ], - "filament_is_support": [ - "0" - ], - "filament_loading_speed": [ - "0" - ], - "filament_loading_speed_start": [ - "0" - ], - "filament_long_retractions_when_cut": [ - "nil" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_multitool_ramming": [ - "0" - ], - "filament_multitool_ramming_flow": [ - "0" - ], - "filament_multitool_ramming_volume": [ - "0" - ], - "filament_notes": [ - "" - ], - "filament_prime_volume": [ - "45" - ], - "filament_ramming_parameters": [ - "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" - ], - "filament_ramming_volumetric_speed": [ - "-1" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_lift_above": [ - "nil" - ], - "filament_retract_lift_below": [ - "nil" - ], - "filament_retract_lift_enforce": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_distances_when_cut": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_shrink": [ - "100%" - ], - "filament_shrinkage_compensation_z": [ - "100%" - ], - "filament_soluble": [ - "0" - ], - "filament_stamping_distance": [ - "0" - ], - "filament_stamping_loading_speed": [ - "0" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_toolchange_delay": [ - "0" - ], - "filament_unloading_speed": [ - "0" - ], - "filament_unloading_speed_start": [ - "0" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "idle_temperature": [ - "0" - ], - "internal_bridge_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_BRASS": [ - "220" - ], - "nozzle_temperature_HS": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_initial_layer_BRASS": [ - "220" - ], - "nozzle_temperature_initial_layer_HS": [ - "230" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "pellet_flow_coefficient": [ - "0.4157" - ], - "pressure_advance": [ - "0.025" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "3" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_layer_time_BRASS": [ - "8" - ], - "slow_down_layer_time_HS": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], - "support_material_interface_fan_speed": [ - "-1" - ], - "temperature_vitrification": [ - "55" - ], - "textured_cool_plate_temp": [ - "40" - ], - "textured_cool_plate_temp_initial_layer": [ - "40" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "60" - ] -} +{ + "type": "filament", + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "Generic PLA-CF @Anycubic", + "from": "system", + "setting_id": "vPSse40nqlQ0xBnp", + "filament_id": "OFZ0mR5b", + "instantiation": "true", + "filament_settings_id": [ + "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle" + ], + "filament_vendor": [ + "Anycubic" + ], + "filament_type": [ + "PLA-CF" + ], + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "adaptive_pressure_advance": [ + "0" + ], + "adaptive_pressure_advance_bridges": [ + "0" + ], + "adaptive_pressure_advance_model": [ + "0.042,0.72,5000\n0.044,1.44,5000\n0.045,2.16,5000\n0.045,2.88,5000\n0.045,3.58,5000\n0.044,4.3,5000\n0.045,5.02,5000\n0.043,5.73,5000\n0.045,6.45,5000\n0.041,7.17,5000\n0.039,7.89,5000\n0.038,8.61,5000\n0.036,9.33,5000\n0.033,10.05,5000\n0.032,10.77,5000\n0.034,11.49,5000\n0.033,12.21,5000" + ], + "adaptive_pressure_advance_overhangs": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "5" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "dont_slow_down_outer_wall": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "5" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "1" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_cooling_layer_time_BRASS": [ + "100" + ], + "fan_cooling_layer_time_HS": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_max_speed_BRASS": [ + "100" + ], + "fan_max_speed_HS": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "fan_min_speed_BRASS": [ + "100" + ], + "fan_min_speed_HS": [ + "100" + ], + "filament_adhesiveness_category": [ + "0" + ], + "filament_change_length": [ + "10" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode\n" + ], + "filament_flush_temp": [ + "nil" + ], + "filament_flush_volumetric_speed": [ + "nil" + ], + "filament_is_support": [ + "0" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "0" + ], + "filament_multitool_ramming_volume": [ + "0" + ], + "filament_notes": [ + "" + ], + "filament_prime_volume": [ + "45" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_ramming_volumetric_speed": [ + "-1" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_shrink": [ + "100%" + ], + "filament_shrinkage_compensation_z": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_stamping_distance": [ + "0" + ], + "filament_stamping_loading_speed": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "idle_temperature": [ + "0" + ], + "internal_bridge_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_BRASS": [ + "220" + ], + "nozzle_temperature_HS": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_initial_layer_BRASS": [ + "220" + ], + "nozzle_temperature_initial_layer_HS": [ + "230" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pellet_flow_coefficient": [ + "0.4157" + ], + "pressure_advance": [ + "0.025" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_layer_time_BRASS": [ + "8" + ], + "slow_down_layer_time_HS": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "55" + ], + "textured_cool_plate_temp": [ + "40" + ], + "textured_cool_plate_temp_initial_layer": [ + "40" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json index 30c1a36997..52a7741b59 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "RXGVKThses3TsFql", - "filament_id": "GFPVA", + "filament_id": "OFTkj6DR", "instantiation": "true", "filament_settings_id": [ "Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json index 388a395309..e24dff10cb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "1QcMzxPPVVj8k9Zy", - "filament_id": "GFPVA", + "filament_id": "OFTkj6DR", "instantiation": "true", "filament_settings_id": [ "Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json index 9ffe3a4047..df978e5c9c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "70hdDTET074FJB0W", - "filament_id": "GFPVA", + "filament_id": "OFTkj6DR", "instantiation": "true", "filament_settings_id": [ "Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json index f166aa4a6f..7013b6e7d7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "uZIHFQ0GxFemfZUN", - "filament_id": "GFPVA", + "filament_id": "OFTkj6DR", "instantiation": "true", "filament_settings_id": [ "Anycubic PVA @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json index 9579f701eb..d20d995486 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "V130y2Wie3uJtzho", - "filament_id": "GFTPU 95A", + "filament_id": "OFML2aVd", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json index ababa2bbb9..77a2e2fbcc 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "BAYwaV7mcaLAo1uD", - "filament_id": "GFTPU 95A", + "filament_id": "OFML2aVd", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle" @@ -13,7 +13,7 @@ "Anycubic" ], "filament_type": [ - "PEBA" + "TPU" ], "compatible_printers": [ "Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json index 70fc1e02d7..26f7745b9e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "FvdMeI7MlR1OEt0y", - "filament_id": "GFTPU 95A", + "filament_id": "OFML2aVd", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json index a7067cc8a7..c20722ad8e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "9zwUSJcKXHTuDM1i", - "filament_id": "GFTPU 95A", + "filament_id": "OFML2aVd", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json index dbf66104c0..5141d90404 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "CdtZIoH8bvFOFU6l", - "filament_id": "GFU99", + "filament_id": "OFMsDGbs", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json index 13f0c712e3..d6b5217879 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "F3l2tNcFwp9qG7W6", - "filament_id": "GFU99", + "filament_id": "OFMsDGbs", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json index 4310aba363..a5f6e735b0 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "WkMd8rjotz7XNLDM", - "filament_id": "GFU99", + "filament_id": "OFMsDGbs", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json index 85252f7057..d17fd1217a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json @@ -4,11 +4,14 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "ias4IbNNwygyeow9", - "filament_id": "GFU99", + "filament_id": "OFMsDGbs", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU @Anycubic Kobra S1 0.4 nozzle" ], + "filament_vendor": [ + "Anycubic" + ], "filament_flow_ratio": [ "1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json index 7f8d97a333..a9d3339d48 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "9UgHz7Bgv8GpydSE", - "filament_id": "GFTPU for ACE", + "filament_id": "OF0FfcAG", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle" @@ -13,7 +13,7 @@ "Anycubic" ], "filament_type": [ - "TPU for ACE" + "TPU" ], "compatible_printers": [ "Anycubic Kobra S1 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json index e9b2079dff..da5f869cdd 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "IcPG0rhSw4AuIcPl", - "filament_id": "GFTPU for ACE", + "filament_id": "OF0FfcAG", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle" @@ -13,7 +13,7 @@ "Anycubic" ], "filament_type": [ - "PEBA" + "TPU" ], "compatible_printers": [ "Anycubic Kobra S1 Max 0.6 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json index d3b82264a5..64e303eda7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "fVVxpwKdzpOMntDc", - "filament_id": "GFTPU for ACE", + "filament_id": "OF0FfcAG", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json index 7ac3014639..65c41524b7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "Z6f3hM30bVcmttUo", - "filament_id": "GFTPU for ACE", + "filament_id": "OF0FfcAG", "instantiation": "true", "filament_settings_id": [ "Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json index 71e7beac0e..988340c1eb 100644 --- a/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic ABS @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic ABS", + "inherits": "Generic ABS @Anycubic", "from": "system", "setting_id": "W3GiC5YLzxbbjXLY", - "filament_id": "GFB99", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_vendor": [ "Generic" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic ABS.json b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic.json similarity index 80% rename from resources/profiles/Anycubic/filament/Anycubic Generic ABS.json rename to resources/profiles/Anycubic/filament/Generic ABS @Anycubic.json index c2863fd513..cc7334fa34 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic ABS.json +++ b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic ABS", + "name": "Generic ABS @Anycubic", "inherits": "fdm_filament_abs", + "renamed_from": "Anycubic Generic ABS", "from": "system", - "setting_id": "az6wmXeWSCKcUEsK", - "filament_id": "GFB99", + "setting_id": "jKvjWU6rcHvWblWC", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.926" @@ -22,7 +23,6 @@ "Anycubic 4Max Pro 0.4 nozzle", "Anycubic 4Max Pro 2 0.4 nozzle", "Anycubic Kobra 2 0.4 nozzle", - "Anycubic Kobra 3 0.4 nozzle", "Anycubic Kobra 3 Max 0.4 nozzle" ] } diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic ASA.json b/resources/profiles/Anycubic/filament/Generic ASA @Anycubic.json similarity index 81% rename from resources/profiles/Anycubic/filament/Anycubic Generic ASA.json rename to resources/profiles/Anycubic/filament/Generic ASA @Anycubic.json index 6bddb8f194..282f590739 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic ASA.json +++ b/resources/profiles/Anycubic/filament/Generic ASA @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic ASA", + "name": "Generic ASA @Anycubic", "inherits": "fdm_filament_asa", + "renamed_from": "Anycubic Generic ASA", "from": "system", - "setting_id": "qKcef8t7nj8nBjPu", - "filament_id": "GFB98", + "setting_id": "o2Cr8cBtE4OKsTqm", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PA.json b/resources/profiles/Anycubic/filament/Generic PA @Anycubic.json similarity index 80% rename from resources/profiles/Anycubic/filament/Anycubic Generic PA.json rename to resources/profiles/Anycubic/filament/Generic PA @Anycubic.json index 5c93bd4a56..da5d2424e2 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PA.json +++ b/resources/profiles/Anycubic/filament/Generic PA @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PA", + "name": "Generic PA @Anycubic", "inherits": "fdm_filament_pa", + "renamed_from": "Anycubic Generic PA", "from": "system", - "setting_id": "xzI6EgoKa3DFYyoZ", - "filament_id": "GFN99", + "setting_id": "5MJsYpJIimshIDZm", + "filament_id": "OFg8ndtj", "instantiation": "true", "nozzle_temperature_initial_layer": [ "280" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PA-CF.json b/resources/profiles/Anycubic/filament/Generic PA-CF @Anycubic.json similarity index 80% rename from resources/profiles/Anycubic/filament/Anycubic Generic PA-CF.json rename to resources/profiles/Anycubic/filament/Generic PA-CF @Anycubic.json index ed1cf5e236..a360cfea1a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PA-CF.json +++ b/resources/profiles/Anycubic/filament/Generic PA-CF @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PA-CF", + "name": "Generic PA-CF @Anycubic", "inherits": "fdm_filament_pa", + "renamed_from": "Anycubic Generic PA-CF", "from": "system", - "setting_id": "j2PXsJyI9YyoE8lc", - "filament_id": "GFN98", + "setting_id": "j1uioy0lCnm4AKrm", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PC.json b/resources/profiles/Anycubic/filament/Generic PC @Anycubic.json similarity index 79% rename from resources/profiles/Anycubic/filament/Anycubic Generic PC.json rename to resources/profiles/Anycubic/filament/Generic PC @Anycubic.json index 20d83e1d1f..e2da18b155 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PC.json +++ b/resources/profiles/Anycubic/filament/Generic PC @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PC", + "name": "Generic PC @Anycubic", "inherits": "fdm_filament_pc", + "renamed_from": "Anycubic Generic PC", "from": "system", - "setting_id": "3zgBtEkj1fQpDkxO", - "filament_id": "GFC99", + "setting_id": "3jP8aWkWw2dT2fNM", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json index 0c49ed86e1..e025d0587c 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -4,13 +4,13 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "aFlpGq8eSJQEO1Ie", - "filament_id": "GFPETG", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_settings_id": [ "Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle" ], "filament_vendor": [ - "Anycubic" + "Generic" ], "filament_type": [ "PETG" diff --git a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json index 36d7edc211..78925acad9 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "9hdOsLCrVX3dkem2", - "filament_id": "GFPETG", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_settings_id": [ "Generic PETG @Anycubic Kobra X 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PETG.json b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic.json similarity index 87% rename from resources/profiles/Anycubic/filament/Anycubic Generic PETG.json rename to resources/profiles/Anycubic/filament/Generic PETG @Anycubic.json index cfda82354d..697caad9d7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PETG.json +++ b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PETG", + "name": "Generic PETG @Anycubic", "inherits": "fdm_filament_pet", + "renamed_from": "Anycubic Generic PETG", "from": "system", - "setting_id": "CEd987NP90bPdkW7", - "filament_id": "GFG99", + "setting_id": "ddafY4oOvEc6L6Ej", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json index cb51a5a339..a81795f7c0 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "tUSAvzLu6pVk37kn", - "filament_id": "GFG99", + "filament_id": "OF112FvY", "instantiation": "true", "filament_settings_id": [ "Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PLA.json b/resources/profiles/Anycubic/filament/Generic PLA @Anycubic.json similarity index 84% rename from resources/profiles/Anycubic/filament/Anycubic Generic PLA.json rename to resources/profiles/Anycubic/filament/Generic PLA @Anycubic.json index 3fb18f36a3..e7fe864b7e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PLA.json +++ b/resources/profiles/Anycubic/filament/Generic PLA @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PLA", + "name": "Generic PLA @Anycubic", "inherits": "fdm_filament_pla", + "renamed_from": "Anycubic Generic PLA", "from": "system", - "setting_id": "2MiX54GMiZjFzwBI", - "filament_id": "GFL99", + "setting_id": "qoYfeBQCSt15O9ye", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PLA-CF.json b/resources/profiles/Anycubic/filament/Generic PLA-CF @Anycubic.json similarity index 80% rename from resources/profiles/Anycubic/filament/Anycubic Generic PLA-CF.json rename to resources/profiles/Anycubic/filament/Generic PLA-CF @Anycubic.json index 8246ddafb0..0f0bd4462a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PLA-CF.json +++ b/resources/profiles/Anycubic/filament/Generic PLA-CF @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PLA-CF", + "name": "Generic PLA-CF @Anycubic", "inherits": "fdm_filament_pla", + "renamed_from": "Anycubic Generic PLA-CF", "from": "system", - "setting_id": "9gFgyEJelaCIVwAH", - "filament_id": "GFL98", + "setting_id": "mLENUT39vBcQiLpm", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic PVA.json b/resources/profiles/Anycubic/filament/Generic PVA @Anycubic.json similarity index 81% rename from resources/profiles/Anycubic/filament/Anycubic Generic PVA.json rename to resources/profiles/Anycubic/filament/Generic PVA @Anycubic.json index 5cc9abce40..7f6603b6db 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic PVA.json +++ b/resources/profiles/Anycubic/filament/Generic PVA @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic PVA", + "name": "Generic PVA @Anycubic", "inherits": "fdm_filament_pva", + "renamed_from": "Anycubic Generic PVA", "from": "system", - "setting_id": "I1GMbOsMYktU7EbM", - "filament_id": "GFS99", + "setting_id": "ae5ljmDsW7uauLz8", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json index 42739229b1..369198b146 100644 --- a/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic TPU @Anycubic Kobra 3 0.4 nozzle", - "inherits": "Anycubic Generic TPU", + "inherits": "Generic TPU @Anycubic", "from": "system", "setting_id": "kHB2rrxkyz4Clu3N", - "filament_id": "GFU99", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_vendor": [ "Generic" diff --git a/resources/profiles/Anycubic/filament/Anycubic Generic TPU.json b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic.json similarity index 78% rename from resources/profiles/Anycubic/filament/Anycubic Generic TPU.json rename to resources/profiles/Anycubic/filament/Generic TPU @Anycubic.json index 25d961c5e8..d52428e4e5 100644 --- a/resources/profiles/Anycubic/filament/Anycubic Generic TPU.json +++ b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Anycubic Generic TPU", + "name": "Generic TPU @Anycubic", "inherits": "fdm_filament_tpu", + "renamed_from": "Anycubic Generic TPU", "from": "system", - "setting_id": "xrbLc7y1AInpumtv", - "filament_id": "GFU99", + "setting_id": "z0FSikhD8ZHv2UYt", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" @@ -19,7 +20,6 @@ "Anycubic 4Max Pro 0.4 nozzle", "Anycubic 4Max Pro 2 0.4 nozzle", "Anycubic Kobra 2 0.4 nozzle", - "Anycubic Kobra 3 0.4 nozzle", "Anycubic Kobra 3 Max 0.4 nozzle" ] } diff --git a/resources/profiles/Anycubic/filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json b/resources/profiles/Anycubic/filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json index 0400c26a1d..b359d010b2 100644 --- a/resources/profiles/Anycubic/filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json +++ b/resources/profiles/Anycubic/filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "DmRzQzlSf2KdWwKu", - "filament_id": "GFL57", + "filament_id": "OFEabreg", "instantiation": "true", "compatible_printers": [ "Anycubic Kobra S1 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json b/resources/profiles/Anycubic/filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json index 21be878b04..b6c5123b8f 100644 --- a/resources/profiles/Anycubic/filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json +++ b/resources/profiles/Anycubic/filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "gsXcm0Q6TdKW0GBx", - "filament_id": "GFPM001", + "filament_id": "OFsRDvTM", "instantiation": "true", "compatible_printers": [ "Anycubic Kobra S1 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json b/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json index a594a3fe92..679c45f1c7 100644 --- a/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json +++ b/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro @Anycubic Kobra S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "R7XUcQ4LSZA2i4PG", - "filament_id": "GFL79", + "filament_id": "OF5oXk4M", "instantiation": "true", "compatible_printers": [ "Anycubic Kobra S1 0.4 nozzle" diff --git a/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json b/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json index 008247a00a..430ea6c816 100644 --- a/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json +++ b/resources/profiles/Anycubic/filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "iFJbVP8Ui0h5sv5X", - "filament_id": "GFL80", + "filament_id": "OFHknN4v", "instantiation": "true", "compatible_printers": [ "Anycubic Kobra S1 0.4 nozzle" diff --git a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2 0.4 nozzle.json index 40b4613eb8..fde1113344 100644 --- a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2 0.4 nozzle.json @@ -104,7 +104,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "G21 ; metric values\nG90 ; absolute positioning\nM82 ; set extruder to absolute mode\nM140 S[first_layer_bed_temperature] ; set bed temp\nG28 X0 Y0 ; home X and Y\nG28 Z0 ; home Z\nG1 Z30 F{machine_max_speed_z[0]*60} ; move Z a bit down to not blow on the bed edge while heating\nG1 X10 F3900 ; let some space on x to prevent the filament cooling exhaust from beeing blocked by the servo motor\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM106 S80 ; turn on fan to prevent air nozzle melt while heating up\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nM107 ; start with the fan off\nG28 X0 ; goto X home again\nG92 E0 ; zero the extruded length\nG1 Z0.2 F360 ; move plattform upwards\n; extrude material next to the plattform (comment or remove following lines to disable)\nG1 F180 E20 ; extrude some material next to the plattform\nG92 E0 ; zero the extruded length\nG1 E-[retraction_length] F{retraction_speed[0]*60} ; do a filament retract\nG92 E0 ; zero the extruded length again\nG1 X5 F3900 ; move sideways to get rid of that string\nG1 E[retraction_length] F{retraction_speed[0]*60} ; do a filament deretract with retract parameters\nG92 E0 ; zero the extruded length again\n; draw intro line (comment or remove following lines to disable)\nG1 X30 E5 F700 ; draw intro line\nG92 E0 ; zero the extruded length\nG1 E-[retraction_length] F{retraction_speed[0]*60} ; do a filament retract\nG1 X40 Z2.0 ; move away from the introline\nG92 E0 ; zero the extruded length again\nG1 E[retraction_length] F{retraction_speed[0]*60} ; do a filament deretract with retract parameters\n; end of intro line code\nM117 Printing...\nG5", "machine_end_gcode": "M104 S0 ; turn off extruder heating\nM140 S0 ; turn off bed heating\nM107 ; turn off fans\nG91 ; relative positioning\nG0 Z+0.5 ; move Z up a tiny bit\nG90 ; absolute positioning\nG0 X135 Y105 F{machine_max_speed_x[0]*60} ; move extruder to center position\nG0 Z190.5 F{machine_max_speed_z[0]*60} ; lower the plattform to Z min\nM84 ; steppers off\nG90 ; absolute positioning\n", diff --git a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2.json b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2.json index e54851b41c..56f6c5332d 100644 --- a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2.json +++ b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_4maxpro2_buildplate_model.stl", "bed_texture": "anycubic_4maxpro2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro.json b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro.json index 95144dab59..54ee3a238d 100644 --- a/resources/profiles/Anycubic/machine/Anycubic 4Max Pro.json +++ b/resources/profiles/Anycubic/machine/Anycubic 4Max Pro.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_4maxpro_buildplate_model.stl", "bed_texture": "anycubic_4maxpro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Chiron 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Chiron 0.4 nozzle.json index d79bebdf71..9222ef6619 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Chiron 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Chiron 0.4 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "M104 S140;start the nozzle preheat and don't wait\nG21;metric values\nG90;absolute positioning\nM82;set extruder to absolute mode\nM107 ;start with the fan off\nG28;home all\nM190 S[bed_temperature_initial_layer_single]; set wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG1 Z15.0 F3600 ;move the platform down 15mm\nG92 E0;zero the extruded length\nG1 F200 E40;extrude 40mm of feed stock\nG92 E0;zero the extruded length again\nG1 F3600", "machine_end_gcode": "M104 S0;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91;relative positioning\nG1 E-4 F300;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+10 F3600 ;move Z up a bit\nG90;absolute positioning\nG1 X-10 F3000; get the head off the bed\nG1 F3000 Y400;kick the bed out\nM84;steppers off", diff --git a/resources/profiles/Anycubic/machine/Anycubic Chiron.json b/resources/profiles/Anycubic/machine/Anycubic Chiron.json index 2772464526..d7b1303de6 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Chiron.json +++ b/resources/profiles/Anycubic/machine/Anycubic Chiron.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_chiron_buildplate_model.stl", "bed_texture": "anycubic_chiron_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 0.4 nozzle.json index e32ed5b2fb..d529794295 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 0.4 nozzle.json @@ -104,7 +104,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM204 P[machine_max_acceleration_extruding] R[machine_max_acceleration_retracting] T[machine_max_acceleration_travel]\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nG28 ; home all\nG1 Y1.0 Z0.3 F{travel_speed*60} ; move print head up\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG92 E0.0\n; initial load\nG1 X205.0 E19 F1000\nG1 Y1.6\nG1 X5.0 E19 F1000\nG92 E0.0\n; intro line\nG1 Y2.0 Z0.2 F1000\nG1 X65.0 E9.0 F1000\nG1 X105.0 E12.5 F1000\nG92 E0.0", "machine_end_gcode": "G1 E-1.0 F2100 ; retract\nG92 E0.0\nG1 X0{if max_layer_z < printable_height} Z{z_offset+min(max_layer_z+30, printable_height)}{endif} E-34.0 F{travel_speed*60} ; move print head up & retract filament\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y105 F{travel_speed*60} ; park print head\nM84 ; disable motors", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json index cadcce6d5a..a804761c28 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json @@ -104,7 +104,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "G90 ;Use absolute coordinates\nM83 ;Extruder relative mode\nM104 S[first_layer_temperature] ;Set extruder temp\nM140 S[first_layer_bed_temperature] ;Set bed temp\nM190 S[first_layer_bed_temperature] ;Wait for bed temp\nM109 S[first_layer_temperature] ;Wait for extruder temp\nG28 ;Move X/Y/Z to min endstops\nG1 Z0.28 ;Lift nozzle a bit\nG92 E0 ;Specify current extruder position as zero\nG1 Y3 F1800 ;Move Y to purge point\nG1 X60 E25 F500 ;Extrude 25mm of filament in a 5cm line\nG92 E0 ;Zero the extruded length again\nG1 E-2 F500 ;Retract a little\nG1 X70 F4000 ;Quickly wipe away from the filament line\nM117", "machine_end_gcode": "M104 S0 ;Extruder off\nM140 S0 ;Heatbed off\nM107 ;Fan off\nG91 ;Relative positioning\nG1 E-5 F3000 ;Retract filament\nG1 Z+0.3 F3000 ;Lift print head\nG28 X0 F3000 ;Home X axis\nM84 ;Disable stepper motors", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2.json index 545ea61e1d..9f2e29a0d9 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_kobra2_buildplate_model.stl", "bed_texture": "anycubic_kobra2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json index 58ce426f05..36033222d7 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json @@ -108,7 +108,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "M104 S140;start the nozzle preheat and don't wait\nG21;metric values\nG90;absolute positioning\nM82;set extruder to absolute mode\nM107;start with the fan off\nG28;home all\nM190 S[bed_temperature_initial_layer_single] ; set wait for bed temp\nM355 S1;turn on the case light\nM109 S[nozzle_temperature_initial_layer]; wait for extruder temp\nG1 Z15.0 F1000 ;move the nozzle up 15mm\nG92 E0;zero the extruded length\nG1 F100 E60;extrude 60mm of feed stock\nG92 E0;zero the extruded length again", "machine_end_gcode": "M104 S0;extruder heater off\nM140 S0;heated bed heater off (if you have it)\nG91;relative positioning\nG1 Z+10 F3600 ;move Z up a bit\nG90;absolute positioning\nG1 X10 F3000; get the head off the bed\nG1 F3000 Y400 ;kick the bed out\nM84;steppers off\nM355 S0;turn off the case light", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Max.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Max.json index fd3939620e..b4b0c4f17b 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Max.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Max.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_kobramax_buildplate_model.stl", "bed_texture": "anycubic_kobramax_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json index ab8a4a0e2b..41b6e7b3e1 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json @@ -14,7 +14,7 @@ ], "default_print_profile": "0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "disable_m73": "1", "gcode_flavor": "marlin2", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json index 80effe6e8b..25a16805e1 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra Neo_buildplate_model.stl", "bed_texture": "Anycubic Kobra Neo_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic PLA" + "default_materials": "Generic PLA @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Plus 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Plus 0.4 nozzle.json index 9b700b7a5f..1ab26d5c8c 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Plus 0.4 nozzle.json @@ -108,7 +108,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "M104 S140;start the nozzle preheat and don't wait\nG21;metric values\nG90;absolute positioning\nM82;set extruder to absolute mode\nM107;start with the fan off\nG28;home all\nM190 S[bed_temperature_initial_layer_single] ; set wait for bed temp\nM355 S1;turn on the case light\nM109 S[nozzle_temperature_initial_layer]; wait for extruder temp\nG1 Z15.0 F1000 ;move the nozzle up 15mm\nG92 E0;zero the extruded length\nG1 F100 E60;extrude 60mm of feed stock\nG92 E0;zero the extruded length again", "machine_end_gcode": "M104 S0;extruder heater off\nM140 S0;heated bed heater off (if you have it)\nG91;relative positioning\nG1 Z+10 F3600 ;move Z up a bit\nG90;absolute positioning\nG1 X10 F3000; get the head off the bed\nG1 F3000 Y400 ;kick the bed out\nM84;steppers off\nM355 S0;turn off the case light", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Plus.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Plus.json index 6a30264849..cf90e73021 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Plus.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Plus.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_kobraplus_buildplate_model.stl", "bed_texture": "anycubic_kobraplus_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra.json b/resources/profiles/Anycubic/machine/Anycubic Kobra.json index bbc1f460c3..6309b569e0 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_kobra_buildplate_model.stl", "bed_texture": "anycubic_kobra_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Predator.json b/resources/profiles/Anycubic/machine/Anycubic Predator.json index 4b6076ee89..a3b100c166 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Predator.json +++ b/resources/profiles/Anycubic/machine/Anycubic Predator.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Predator_buildplate_model.stl", "bed_texture": "Anycubic Predator_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Vyper 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Vyper 0.4 nozzle.json index 5bcd1fd942..03da852642 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Vyper 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Vyper 0.4 nozzle.json @@ -108,7 +108,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M601", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG0 Z0.2 F1800 ; move nozzle to print position\nG92 E0 ; specify current extruder position as zero\nG1 Y10 X180 E50 F1200 ; extrude a line in front of the printer\nG92 E0 ; specify current extruder position as zero\nG0 Z20 F6000 ; move head up\nG1 E-7 F2400 ; retract\nG04 S2 ; wait 2s\nG0 X0 F6000 ; wipe from oozed filament\nG1 E-1 F2400 ; undo some of the retraction to avoid oozing\nG1 F6000 ; set travel speed to move to start printing point\nM117", "machine_end_gcode": "G4 ; wait\nG92 E0\nG1{if max_layer_z < printable_height} Z{z_offset+min(max_layer_z+30, printable_height)}{endif} ; move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors", diff --git a/resources/profiles/Anycubic/machine/Anycubic Vyper.json b/resources/profiles/Anycubic/machine/Anycubic Vyper.json index 862af26c4a..75a16dbca5 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Vyper.json +++ b/resources/profiles/Anycubic/machine/Anycubic Vyper.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_vyper_buildplate_model.stl", "bed_texture": "anycubic_vyper_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic i3 Mega S 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic i3 Mega S 0.4 nozzle.json index 9d35099001..d3b14b475c 100644 --- a/resources/profiles/Anycubic/machine/Anycubic i3 Mega S 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic i3 Mega S 0.4 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Anycubic Generic PLA" + "Generic PLA @Anycubic" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM204 P[machine_max_acceleration_extruding] R[machine_max_acceleration_retracting] T[machine_max_acceleration_travel]\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nG28 ; home all\nG1 Y1.0 Z0.3 F{travel_speed*60} ; move print head up\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG92 E0.0\n; initial load\nG1 X205.0 E19 F1000\nG1 Y1.6\nG1 X5.0 E19 F1000\nG92 E0.0\n; intro line\nG1 Y2.0 Z0.2 F1000\nG1 X65.0 E9.0 F1000\nG1 X105.0 E12.5 F1000\nG92 E0.0", "machine_end_gcode": "G1 E-1.0 F2100 ; retract\nG92 E0.0\nG1 X0{if max_layer_z < printable_height} Z{z_offset+min(max_layer_z+30, printable_height)}{endif} E-34.0 F{travel_speed*60} ; move print head up & retract filament\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y105 F{travel_speed*60} ; park print head\nM84 ; disable motors", diff --git a/resources/profiles/Anycubic/machine/Anycubic i3 Mega S.json b/resources/profiles/Anycubic/machine/Anycubic i3 Mega S.json index 76192d1e21..a98cd9ac46 100644 --- a/resources/profiles/Anycubic/machine/Anycubic i3 Mega S.json +++ b/resources/profiles/Anycubic/machine/Anycubic i3 Mega S.json @@ -8,5 +8,5 @@ "bed_model": "anycubic_i3megas_buildplate_model.stl", "bed_texture": "anycubic_i3megas_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" } diff --git a/resources/profiles/Artillery.json b/resources/profiles/Artillery.json index a610fdbaf6..66a3a05247 100644 --- a/resources/profiles/Artillery.json +++ b/resources/profiles/Artillery.json @@ -1,6 +1,6 @@ { "name": "Artillery", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Artillery configurations", "machine_model_list": [ @@ -389,28 +389,28 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Artillery Generic ABS", - "sub_path": "filament/Artillery Generic ABS.json" + "name": "Generic ABS @Artillery", + "sub_path": "filament/Generic ABS @Artillery.json" }, { - "name": "Artillery Generic ASA", - "sub_path": "filament/Artillery Generic ASA.json" + "name": "Generic ASA @Artillery", + "sub_path": "filament/Generic ASA @Artillery.json" }, { - "name": "Artillery Generic PETG", - "sub_path": "filament/Artillery Generic PETG.json" + "name": "Generic PETG @Artillery", + "sub_path": "filament/Generic PETG @Artillery.json" }, { - "name": "Artillery Generic PLA", - "sub_path": "filament/Artillery Generic PLA.json" + "name": "Generic PLA @Artillery", + "sub_path": "filament/Generic PLA @Artillery.json" }, { - "name": "Artillery Generic PLA-CF", - "sub_path": "filament/Artillery Generic PLA-CF.json" + "name": "Generic PLA-CF @Artillery", + "sub_path": "filament/Generic PLA-CF @Artillery.json" }, { - "name": "Artillery Generic TPU", - "sub_path": "filament/Artillery Generic TPU.json" + "name": "Generic TPU @Artillery", + "sub_path": "filament/Generic TPU @Artillery.json" }, { "name": "Artillery ABS", diff --git a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.2 nozzle.json index b468e95d51..115f53a962 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ABS @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "m023Z8IkkHMHxuag", - "filament_id": "P39db358", + "filament_id": "OFgXgt98", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.4 nozzle.json index f21c7a5a31..2c9940db39 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery ABS @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "QGbNWGw8rqvq025W", + "filament_id": "OFgXgt98", "instantiation": "true", "chamber_temperature": [ "50" diff --git a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.6 nozzle.json index 8516077d0a..4443359064 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ABS @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "PxGFsoMcfFrTDqzL", - "filament_id": "P39db358", + "filament_id": "OFgXgt98", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.8 nozzle.json index 1bd222ade6..d3bdb2afe2 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ABS @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ABS @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "o4JZKQmCdnO0hCXZ", - "filament_id": "P39db358", + "filament_id": "OFgXgt98", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery ABS.json b/resources/profiles/Artillery/filament/Artillery ABS.json index 111c2c39a1..006b37ca31 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS.json +++ b/resources/profiles/Artillery/filament/Artillery ABS.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery ABS", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "fsbfMiamVemzRxkG", + "filament_id": "OFgXgt98", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.2 nozzle.json index 9894337b5c..089e3d118a 100644 --- a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ASA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "AE7wKVIZXHXSXzL5", - "filament_id": "P87436f6", + "filament_id": "OF5YVJXH", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.4 nozzle.json index eb4a720cc3..3f353f3784 100644 --- a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery ASA @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "eSwM3ZfSBWqR8Gcf", + "filament_id": "OF5YVJXH", "instantiation": "true", "chamber_temperature": [ "55" diff --git a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.6 nozzle.json index 422b050df8..40db5fa796 100644 --- a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ASA @Artillery M1 Pro 0.6 nozzle", "from": "User", "setting_id": "znMfTFfxvJC7a732", - "filament_id": "P87436f6", + "filament_id": "OF5YVJXH", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.8 nozzle.json index 16a9ff7c3d..9769f1d363 100644 --- a/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery ASA @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery ASA @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "y2DU36j0slaHzg04", - "filament_id": "P87436f6", + "filament_id": "OF5YVJXH", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PA @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PA @Artillery M1 Pro 0.4 nozzle.json index 756e67a5e2..18c889b939 100644 --- a/resources/profiles/Artillery/filament/Artillery PA @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PA @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PA @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "lOsH1teHe8Pgzx2g", + "filament_id": "OFMSvS8z", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PA-CF @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PA-CF @Artillery M1 Pro 0.4 nozzle.json index ec9009a5e1..abef802ea7 100644 --- a/resources/profiles/Artillery/filament/Artillery PA-CF @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PA-CF @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PA-CF @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "b4BKJMUxArvLuEOh", + "filament_id": "OFtGC1ye", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PC @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PC @Artillery M1 Pro 0.4 nozzle.json index 4fa54353f0..24fd12b55c 100644 --- a/resources/profiles/Artillery/filament/Artillery PC @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PC @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PC @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "WawbnfhWn4MT6Hz7", + "filament_id": "OFfb10SK", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.2 nozzle.json index 6fd06c0d66..8e40f27f5b 100644 --- a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PET @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "a5jwQ6nyffW1Vqv1", - "filament_id": "P11851ba", + "filament_id": "OFb5EEM3", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.4 nozzle.json index a82b3b7948..078786ed5f 100644 --- a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PET @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "QeiSAakfMW7HyhJ7", + "filament_id": "OFb5EEM3", "instantiation": "true", "chamber_temperature": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.6 nozzle.json index 26e71cefc8..426ec21706 100644 --- a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PET @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "VGu7C3uk8d6ibIg4", - "filament_id": "P11851ba", + "filament_id": "OFb5EEM3", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.8 nozzle.json index b5461ec03c..2a103c381a 100644 --- a/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PET @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PET @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "Oj11BhU0QajmDrh3", - "filament_id": "P11851ba", + "filament_id": "OFb5EEM3", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.2 nozzle.json index 5ed45d7e7d..1ffe8a243e 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "kAlZ7nCYo53UVVx3", - "filament_id": "P284941e", + "filament_id": "OFilnglt", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.4 nozzle.json index f6bbdd3cef..9cc9fa81ac 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PETG @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "g7UIfJTOPzMQzfrH", + "filament_id": "OFilnglt", "instantiation": "true", "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.6 nozzle.json index 3fcc8e175b..952e738ff8 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "uuPf0MfNTZ2lihtG", - "filament_id": "P284941e", + "filament_id": "OFilnglt", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.8 nozzle.json index 4842427a49..b1f14d1aac 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG @Artillery M1 Pro 0.8 nozzle", "from": "User", "setting_id": "dQBp2T4ap90uAOYs", - "filament_id": "P284941e", + "filament_id": "OFilnglt", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.2 nozzle.json index 03fc583bfa..9af4f2eeef 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG Basic @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "GrdWgUGdXt23jnBu", - "filament_id": "P284941e", + "filament_id": "OF8wE5l7", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle.json index b8a3c33acd..8ae5612c31 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "RTQvSwJBWnut5aBo", + "filament_id": "OF8wE5l7", "instantiation": "true", "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.6 nozzle.json index 3ab0575058..bcfb9cefb9 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG Basic @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "Wkt1IClO4nwH3Xa7", - "filament_id": "P284941e", + "filament_id": "OF8wE5l7", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.8 nozzle.json index 2b83852a34..4231ec86d4 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG Basic @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PETG Basic @Artillery M1 Pro 0.8 nozzle", "from": "User", "setting_id": "Zlvodz3cris0hmof", - "filament_id": "P284941e", + "filament_id": "OF8wE5l7", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle.json index 22d124da46..8321236cb4 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "JvmeW29kHCp7HiA6", + "filament_id": "OFOnSNt3", "instantiation": "true", "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Artillery/filament/Artillery PETG.json b/resources/profiles/Artillery/filament/Artillery PETG.json index ecea0ae80b..bb2227c04a 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG.json +++ b/resources/profiles/Artillery/filament/Artillery PETG.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PETG", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "1MyhYGMxJCmZnJRP", + "filament_id": "OFilnglt", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.2 nozzle.json index 258f94de1a..625dbdf8e6 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PLA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "sqlU8YRYqavJBap3", - "filament_id": "Pfcf9c4c", + "filament_id": "OFzY7N3Z", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.6 nozzle.json index 573a888662..a5270921bd 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PLA @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "7V8Vj5ykHmTYtxcC", - "filament_id": "Pfcf9c4c", + "filament_id": "OFzY7N3Z", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.8 nozzle.json index 340947ce24..fddc6cd71b 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PLA @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "J8rOxOcsB6HN00HI", - "filament_id": "Pfcf9c4c", + "filament_id": "OFzY7N3Z", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle.json index cee58991c8..936afae087 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "N3iYnDshA5ruihVE", + "filament_id": "OFXk1emJ", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle.json index 56498727fa..b892fd3101 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "zBUD1JyuZF9MOncA", + "filament_id": "OFXk1emJ", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle.json index 884e7d428e..07ce00f7d6 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "NKkZjEtDjxOMLjoo", + "filament_id": "OFXk1emJ", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle.json index cffdcde5ed..d7d64ef75b 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "c9BAMzt2w30nB2rC", + "filament_id": "OFXk1emJ", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic+ @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Basic+ @Artillery M1 Pro 0.4 nozzle.json index 18e7f77ad4..0544a27107 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic+ @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic+ @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Basic+ @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "2VIrSoq3kufjHMXj", + "filament_id": "OF4Nhggz", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "100" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic.json b/resources/profiles/Artillery/filament/Artillery PLA Basic.json index 052ceac5e5..1a54f28da4 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Basic", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "DcGBMRjdcgLx6pWG", + "filament_id": "OFXk1emJ", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.2 nozzle.json index aff1bcb3cb..398d8d6477 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.2 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "tgmFMdyhSX05kuxw", + "filament_id": "OFAC7Wyu", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Matte @Artillery M1 Pro 0.2 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle.json index abd44e77d1..cee07d65d7 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "9zqAIfywiv9zm77X", + "filament_id": "OFAC7Wyu", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.6 nozzle.json index a1fc1e5999..97e72d2b39 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.6 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "W6ipHAoCgHIUIT3g", + "filament_id": "OFAC7Wyu", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Matte @Artillery M1 Pro 0.6 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.8 nozzle.json index 4217f6836d..8d5aa70714 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte @Artillery M1 Pro 0.8 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "HggSuUWe1zWOlQIK", + "filament_id": "OFAC7Wyu", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte.json b/resources/profiles/Artillery/filament/Artillery PLA Matte.json index 83e40133aa..c74c1d0717 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Matte", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "kt8uKXpMqxrFrHaG", + "filament_id": "OFAC7Wyu", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.2 nozzle.json index d2f3184864..ac3b82dc53 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.2 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "TDwRIGXkpJIW38jG", + "filament_id": "OFLbXwoL", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Silk @Artillery M1 Pro 0.2 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle.json index e8d65f465b..f0a8424a18 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "BWMjPUWXwumQoY5H", + "filament_id": "OFLbXwoL", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.6 nozzle.json index ce102bb364..3ab80c6fe4 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.6 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "PpuiGWbDlVZwBIxb", + "filament_id": "OFLbXwoL", "instantiation": "true", "filament_settings_id": [ "Artillery PLA Silk @Artillery M1 Pro 0.6 nozzle" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.8 nozzle.json index 6fb25927e3..00227f72e8 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk @Artillery M1 Pro 0.8 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Artillery PLA @Artillery M1 Pro 0.8 nozzle", "from": "User", "setting_id": "dr2wlzDc1AC3tciI", + "filament_id": "OFLbXwoL", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk.json b/resources/profiles/Artillery/filament/Artillery PLA Silk.json index 85cd2eec08..024d9b885f 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Silk", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "rd0U4uP6mM8S8lDg", + "filament_id": "OFLbXwoL", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery PLA Tough.json b/resources/profiles/Artillery/filament/Artillery PLA Tough.json index 8f1ce758b5..9fc7df83be 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Tough.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Tough.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA Tough", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "hLFvQXsyyUrguGEp", + "filament_id": "OF0R5Wc7", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle.json index 36c7d69b83..10df36a947 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "oT12s9CEV1CTD6eB", + "filament_id": "OFAZllAN", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.2 nozzle.json index f7f700fa96..7dec8693bf 100644 --- a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.2 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PVA @Artillery M1 Pro 0.2 nozzle", "from": "system", "setting_id": "FIcb3cOIanxmvHe2", - "filament_id": "P8163162", + "filament_id": "OFkx5MEe", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.4 nozzle.json index 4c558166c5..5fb34feb1f 100644 --- a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery PVA @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "r2q4QIlfTUCIz43f", + "filament_id": "OFkx5MEe", "instantiation": "true", "chamber_temperature": [ "50" diff --git a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.6 nozzle.json index b15f191878..9f3dcbb2b8 100644 --- a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PVA @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "h5xquKMT9l0rwcTU", - "filament_id": "P8163162", + "filament_id": "OFkx5MEe", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.8 nozzle.json index 1e682947c2..753f9c9dd9 100644 --- a/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery PVA @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery PVA @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "cElJlbCAgAqSQiPZ", - "filament_id": "P8163162", + "filament_id": "OFkx5MEe", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.4 nozzle.json index d722aa592f..730690bba2 100644 --- a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.4 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery TPU @Artillery M1 Pro 0.4 nozzle", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "p6vnCneuwtM0PzL7", + "filament_id": "OFcJDtTx", "instantiation": "true", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.6 nozzle.json index 9d29c06e42..16b2485862 100644 --- a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery TPU @Artillery M1 Pro 0.6 nozzle", "from": "system", "setting_id": "QIgpIamYbSdI4DPW", - "filament_id": "P2fbf0c0", + "filament_id": "OFcJDtTx", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.8 nozzle.json index d323279979..f0b83d6e6f 100644 --- a/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/filament/Artillery TPU @Artillery M1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "Artillery TPU @Artillery M1 Pro 0.8 nozzle", "from": "system", "setting_id": "W22GbPPOgtH4NAAH", - "filament_id": "P2fbf0c0", + "filament_id": "OFcJDtTx", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Artillery/filament/Artillery TPU.json b/resources/profiles/Artillery/filament/Artillery TPU.json index b769e8c61a..407051c138 100644 --- a/resources/profiles/Artillery/filament/Artillery TPU.json +++ b/resources/profiles/Artillery/filament/Artillery TPU.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Artillery TPU", - "inherits": "Artillery Generic PLA", + "inherits": "Generic PLA @Artillery", "from": "system", "setting_id": "IcV1jLJaS5rmdNOY", + "filament_id": "OFcJDtTx", "instantiation": "true", "compatible_printers": [ "Artillery Sidewinder X3 Pro 0.4 nozzle", diff --git a/resources/profiles/Artillery/filament/Artillery Generic ABS.json b/resources/profiles/Artillery/filament/Generic ABS @Artillery.json similarity index 74% rename from resources/profiles/Artillery/filament/Artillery Generic ABS.json rename to resources/profiles/Artillery/filament/Generic ABS @Artillery.json index df06b7f844..caf687b95e 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic ABS.json +++ b/resources/profiles/Artillery/filament/Generic ABS @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFB99", - "setting_id": "C4oiu2SBLwfTEcXu", - "name": "Artillery Generic ABS", + "filament_id": "OFY9muEs", + "setting_id": "DNgTEZpEz8bJoobJ", + "name": "Generic ABS @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_abs", + "renamed_from": "Artillery Generic ABS", "filament_flow_ratio": [ "0.926" ], diff --git a/resources/profiles/Artillery/filament/Artillery Generic ASA.json b/resources/profiles/Artillery/filament/Generic ASA @Artillery.json similarity index 74% rename from resources/profiles/Artillery/filament/Artillery Generic ASA.json rename to resources/profiles/Artillery/filament/Generic ASA @Artillery.json index e3b8cc1f93..74ef4c775f 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic ASA.json +++ b/resources/profiles/Artillery/filament/Generic ASA @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFB98", - "setting_id": "1gls4zCclgN68Hlc", - "name": "Artillery Generic ASA", + "filament_id": "OFLPAxz3", + "setting_id": "xWHuScm0fPJCqjVx", + "name": "Generic ASA @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_asa", + "renamed_from": "Artillery Generic ASA", "filament_flow_ratio": [ "0.93" ], diff --git a/resources/profiles/Artillery/filament/Artillery Generic PETG.json b/resources/profiles/Artillery/filament/Generic PETG @Artillery.json similarity index 84% rename from resources/profiles/Artillery/filament/Artillery Generic PETG.json rename to resources/profiles/Artillery/filament/Generic PETG @Artillery.json index cc2f29e875..aa354e517d 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic PETG.json +++ b/resources/profiles/Artillery/filament/Generic PETG @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFG99", - "setting_id": "Ou4NR5DVvalg5kCe", - "name": "Artillery Generic PETG", + "filament_id": "OFYPdQJh", + "setting_id": "6wZKfV2XvuJSUSwl", + "name": "Generic PETG @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_pet", + "renamed_from": "Artillery Generic PETG", "reduce_fan_stop_start_freq": [ "1" ], diff --git a/resources/profiles/Artillery/filament/Artillery Generic PLA.json b/resources/profiles/Artillery/filament/Generic PLA @Artillery.json similarity index 81% rename from resources/profiles/Artillery/filament/Artillery Generic PLA.json rename to resources/profiles/Artillery/filament/Generic PLA @Artillery.json index 1211c22b3c..d691a9b470 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic PLA.json +++ b/resources/profiles/Artillery/filament/Generic PLA @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFL99", - "setting_id": "Bpy4tAvspysDWosL", - "name": "Artillery Generic PLA", + "filament_id": "OFDSrzZ8", + "setting_id": "T0sW3uMBr94Y1X1G", + "name": "Generic PLA @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", + "renamed_from": "Artillery Generic PLA", "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Artillery/filament/Artillery Generic PLA-CF.json b/resources/profiles/Artillery/filament/Generic PLA-CF @Artillery.json similarity index 81% rename from resources/profiles/Artillery/filament/Artillery Generic PLA-CF.json rename to resources/profiles/Artillery/filament/Generic PLA-CF @Artillery.json index 7c1a231dbc..08fd583e18 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic PLA-CF.json +++ b/resources/profiles/Artillery/filament/Generic PLA-CF @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFL98", - "setting_id": "h23GL00BFCliLh9N", - "name": "Artillery Generic PLA-CF", + "filament_id": "OFWbdGsC", + "setting_id": "Gxafdb0zYnf9kPwa", + "name": "Generic PLA-CF @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", + "renamed_from": "Artillery Generic PLA-CF", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Artillery/filament/Artillery Generic TPU.json b/resources/profiles/Artillery/filament/Generic TPU @Artillery.json similarity index 72% rename from resources/profiles/Artillery/filament/Artillery Generic TPU.json rename to resources/profiles/Artillery/filament/Generic TPU @Artillery.json index ff724d1925..f1270d0afb 100644 --- a/resources/profiles/Artillery/filament/Artillery Generic TPU.json +++ b/resources/profiles/Artillery/filament/Generic TPU @Artillery.json @@ -1,11 +1,12 @@ { "type": "filament", - "filament_id": "GFU99", - "setting_id": "u8YE6r4sGJ0jvqBn", - "name": "Artillery Generic TPU", + "filament_id": "OFgbpcy9", + "setting_id": "dWhysRiE5GrAGyME", + "name": "Generic TPU @Artillery", "from": "system", "instantiation": "true", "inherits": "fdm_filament_tpu", + "renamed_from": "Artillery Generic TPU", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/resources/profiles/Artillery/machine/Artillery Genius 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Genius 0.4 nozzle.json index d9b85067a1..fec7ef73d3 100644 --- a/resources/profiles/Artillery/machine/Artillery Genius 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Genius 0.4 nozzle.json @@ -111,7 +111,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Artillery Generic PLA" + "Generic PLA @Artillery" ], "machine_start_gcode": "M83; extruder relative mode\nG28; home all axes\nM109 S[nozzle_temperature_initial_layer]; hotend temperature\nM140 S[bed_temperature_initial_layer_single]; heatbed temperature\nM190 S[bed_temperature_initial_layer_single]; wait for the bed to heat up\nM109 S[nozzle_temperature_initial_layer]; wait for the extruder to heat up\nG92 E0; reset extruder\nG1 X20 Y5 Z0.3 F5000.0; move to start-line position\nG1 Z0.3 F1000; print height\nG1 X200 Y5 F1500.0 E15; draw 1st line\nG1 X200 Y5.3 Z0.3 F5000.0; move to side a little\nG1 X5.3 Y5.3 Z0.3 F1500.0 E30; draw 2nd line\nG1 Z3 F3000; move z up little to prevent scratching of surface", "machine_end_gcode": "G91; Relative positionning\nG1 E-2 Z0.2 F2400; Retract and raise Z\nG1 X5 Y5 F3000; Wipe out\nG1 Z10; Raise Z more\nG90; Absolute positionning\nG1 X0 Y100; Present print\nM106 S0; Turn-off fan\nM104 S0; Turn-off hotend\nM140 S0; Turn-off bed\nM84 X Y E; Disable all steppers but Z", diff --git a/resources/profiles/Artillery/machine/Artillery Genius Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Genius Pro 0.4 nozzle.json index 07beadf546..abac060832 100644 --- a/resources/profiles/Artillery/machine/Artillery Genius Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Genius Pro 0.4 nozzle.json @@ -111,7 +111,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Artillery Generic PLA" + "Generic PLA @Artillery" ], "machine_start_gcode": "M83; extruder relative mode\nG28; home all axes\nG29 S12000; bed mesh leveling\nM104 S[nozzle_temperature_initial_layer]; set hotend temperature\nM140 S[bed_temperature_initial_layer_single]; set heatbed temperature\nG90; Absolute Positioning\nG1 Y0 F5000; Move to front\nG1 X0 F5000; Move to origin\nM190 S[bed_temperature_initial_layer_single]; wait for the bed to heat up\nM109 S[nozzle_temperature_initial_layer]; wait for the extruder to heat up\nG92 E0; reset extruder\nG1 X20 Y5 Z0.3 F5000.0; move to start-line position\nG1 Z0.3 F1000; print height\nG1 X200 Y5 F1500.0 E15; draw 1st line\nG1 X200 Y5.3 Z0.3 F5000.0; move to side a little\nG1 X5.3 Y5.3 Z0.3 F1500.0 E30; draw 2nd line\nG1 Z3 F3000; move z up little to prevent scratching of surface", "machine_end_gcode": "G91; Relative positionning\nG1 E-2 Z0.2 F2400; Retract and raise Z\nG1 X5 Y5 F3000; Wipe out\nG1 Z10; Raise Z more\nG90; Absolute positionning\nG1 X0 Y100; Present print\nM106 S0; Turn-off fan\nM104 S0; Turn-off hotend\nM140 S0; Turn-off bed\nM84 X Y E; Disable all steppers but Z", diff --git a/resources/profiles/Artillery/machine/Artillery Genius Pro.json b/resources/profiles/Artillery/machine/Artillery Genius Pro.json index 6af35f73a6..6581266380 100644 --- a/resources/profiles/Artillery/machine/Artillery Genius Pro.json +++ b/resources/profiles/Artillery/machine/Artillery Genius Pro.json @@ -8,5 +8,5 @@ "bed_model": "artillery_geniuspro_buildplate_model.stl", "bed_texture": "artillery_geniuspro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Artillery Generic ABS;Artillery Generic PLA;Artillery Generic PLA-CF;Artillery Generic PETG;Artillery Generic TPU;Artillery Generic ASA" + "default_materials": "Generic ABS @Artillery;Generic PLA @Artillery;Generic PLA-CF @Artillery;Generic PETG @Artillery;Generic TPU @Artillery;Generic ASA @Artillery" } diff --git a/resources/profiles/Artillery/machine/Artillery Genius.json b/resources/profiles/Artillery/machine/Artillery Genius.json index 31c021230b..27fe494d24 100644 --- a/resources/profiles/Artillery/machine/Artillery Genius.json +++ b/resources/profiles/Artillery/machine/Artillery Genius.json @@ -8,5 +8,5 @@ "bed_model": "artillery_genius_buildplate_model.stl", "bed_texture": "artillery_genius_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Artillery Generic ABS;Artillery Generic PLA;Artillery Generic PLA-CF;Artillery Generic PETG;Artillery Generic TPU;Artillery Generic ASA" + "default_materials": "Generic ABS @Artillery;Generic PLA @Artillery;Generic PLA-CF @Artillery;Generic PETG @Artillery;Generic TPU @Artillery;Generic ASA @Artillery" } diff --git a/resources/profiles/Artillery/machine/Artillery Hornet 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Hornet 0.4 nozzle.json index 4aa9f9d9a4..232b68d62e 100644 --- a/resources/profiles/Artillery/machine/Artillery Hornet 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Hornet 0.4 nozzle.json @@ -108,7 +108,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Artillery Generic PLA" + "Generic PLA @Artillery" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S{hot_plate_temp_initial_layer[0]} ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis\nG29 ; auto bed levelling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S{nozzle_temperature_initial_layer[0]} ; set final nozzle temp\nM190 S{hot_plate_temp_initial_layer[0]} ; wait for bed temp to stabilize\nM109 S{nozzle_temperature_initial_layer[0]} ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.85} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Artillery/machine/Artillery Hornet.json b/resources/profiles/Artillery/machine/Artillery Hornet.json index c0e680e039..79e48b3487 100644 --- a/resources/profiles/Artillery/machine/Artillery Hornet.json +++ b/resources/profiles/Artillery/machine/Artillery Hornet.json @@ -8,5 +8,5 @@ "bed_model": "artillery_hornet_buildplate_model.stl", "bed_texture": "artillery_hornet_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Artillery Generic ABS;Artillery Generic PLA;Artillery Generic PLA-CF;Artillery Generic PETG;Artillery Generic TPU;Artillery Generic ASA" + "default_materials": "Generic ABS @Artillery;Generic PLA @Artillery;Generic PLA-CF @Artillery;Generic PETG @Artillery;Generic TPU @Artillery;Generic ASA @Artillery" } diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X1 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X1 0.4 nozzle.json index 81e96a2593..ab83e7d429 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X1 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X1 0.4 nozzle.json @@ -111,7 +111,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Artillery Generic PLA" + "Generic PLA @Artillery" ], "machine_start_gcode": "; Initial setups\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extrusion rate to 100%\n\n; Set the heating\nM190 S[bed_temperature_initial_layer_single] ; wait for bed to heat up\nM104 S[nozzle_temperature_initial_layer] ; start nozzle heating but don't wait\n\n; Home\nG1 Z3 F3000 ; move z up little to prevent scratching of surface\nG28 ; home all axes\nG1 X3 Y3 F5000 ; move to corner of the bed to avoid ooze over centre\n\n; Wait for final heating\nM109 S[nozzle_temperature_initial_layer] ; wait for the nozzle to heat up\nM190 S[bed_temperature_initial_layer_single] ; wait for the bed to heat up\n\n; Return to prime position, Prime line routine\nG92 E0 ; Reset Extruder\nG1 Z3 F3000 ; move z up little to prevent scratching of surface\nG1 X10 Y.5 Z0.25 F5000.0 ; Move to start position\nG1 X100 Y.5 Z0.25 F1500.0 E15 ; Draw the first line\nG1 X100 Y.2 Z0.25 F5000.0 ; Move to side a little\nG1 X10 Y.2 Z0.25 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM221 S{if layer_height<0.075}100{else}95{endif}", "machine_end_gcode": "G4 ; wait\nG92 E0 ; prepare to retract\nG1 E-0.5 F3000; retract to avoid stringing\n\n; Anti-stringing end wiggle\nG91 ; use relative coordinates\nG1 X1 Y1 F1200\n\n; Raise nozzle and present bed\n{if layer_z < printable_height}G1 Z{z_offset+min(layer_z+120, printable_height)}{endif} ; Move print head up\nG90 ; use absolute coordinates\n\n; Reset print setting overrides\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extrusion rate to 100%\n\n; Shut down printer\nM106 S0 ; turn-off fan\nM104 S0 ; turn-off hotend\nM140 S0 ; turn-off bed\nM150 P0 ; turn off led\nM85 S0 ; deactivate idle timeout\nM84 ; disable motors\n", diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X1.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X1.json index 5d5f13f511..195b01f873 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X1.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X1.json @@ -8,5 +8,5 @@ "bed_model": "artillery_sidewinderx1_buildplate_model.stl", "bed_texture": "artillery_sidewinderx1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Artillery Generic ABS;Artillery Generic PLA;Artillery Generic PLA-CF;Artillery Generic PETG;Artillery Generic TPU;Artillery Generic ASA" + "default_materials": "Generic ABS @Artillery;Generic PLA @Artillery;Generic PLA-CF @Artillery;Generic PETG @Artillery;Generic TPU @Artillery;Generic ASA @Artillery" } diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X2 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X2 0.4 nozzle.json index b3100851fb..416ddfb056 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X2 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X2 0.4 nozzle.json @@ -111,7 +111,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Artillery Generic PLA" + "Generic PLA @Artillery" ], "machine_start_gcode": "; Initial setups\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM900 K0.12 ; K factor\nM900 W[line_width] H[layer_height] D[filament_diameter]\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extrusion rate to 100%\n\n; Set the heating\nM190 S[bed_temperature_initial_layer_single] ; wait for bed to heat up\nM104 S[nozzle_temperature_initial_layer] ; start nozzle heating but don't wait\n\n; Home\nG1 Z3 F3000 ; move z up little to prevent scratching of surface\nG28 ; home all axes\nG1 X3 Y3 F5000 ; move to corner of the bed to avoid ooze over centre\n\n; Wait for final heating\nM109 S[nozzle_temperature_initial_layer] ; wait for the nozzle to heat up\nM190 S[bed_temperature_initial_layer_single] ; wait for the bed to heat up\n\n;Auto bed Leveling\n@BEDLEVELVISUALIZER\nG29 ; ABL T\nM420 S1 Z3 ; reload and fade mesh bed leveling until it reach 3mm Z\n\n; Return to prime position, Prime line routine\nG92 E0 ; Reset Extruder\nG1 Z3 F3000 ; move z up little to prevent scratching of surface\nG1 X10 Y.5 Z0.25 F5000.0 ; Move to start position\nG1 X100 Y.5 Z0.25 F1500.0 E15 ; Draw the first line\nG1 X100 Y.2 Z0.25 F5000.0 ; Move to side a little\nG1 X10 Y.2 Z0.25 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM221 S{if layer_height<0.075}100{else}95{endif}", "machine_end_gcode": "G4 ; wait\nG92 E0 ; prepare to retract\nG1 E-0.5 F3000; retract to avoid stringing\n\n; Anti-stringing end wiggle\nG91 ; use relative coordinates\nG1 X1 Y1 F1200\n\n; Raise nozzle and present bed\n{if layer_z < printable_height}G1 Z{z_offset+min(layer_z+120, printable_height)}{endif} ; Move print head up\nG90 ; use absolute coordinates\n\n; Reset print setting overrides\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extrusion rate to 100%\n\n; Shut down printer\nM106 S0 ; turn-off fan\nM104 S0 ; turn-off hotend\nM140 S0 ; turn-off bed\nM150 P0 ; turn off led\nM85 S0 ; deactivate idle timeout\nM84 ; disable motors\n", diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X2.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X2.json index 79922cfe8b..2009958308 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X2.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X2.json @@ -8,5 +8,5 @@ "bed_model": "artillery_sidewinderx2_buildplate_model.stl", "bed_texture": "artillery_sidewinderx2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Artillery Generic ABS;Artillery Generic PLA;Artillery Generic PLA-CF;Artillery Generic PETG;Artillery Generic TPU;Artillery Generic ASA" + "default_materials": "Generic ABS @Artillery;Generic PLA @Artillery;Generic PLA-CF @Artillery;Generic PETG @Artillery;Generic TPU @Artillery;Generic ASA @Artillery" } diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index a2e72e00cb..9641788cf7 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.01.00.23", + "version": "02.01.00.24", "force_update": "0", "description": "BBL configurations", "machine_model_list": [ @@ -9510,7 +9510,7 @@ "sub_path": "filament/COEX/COEX NYLEX PA6-CF @BBL X1C.json" }, { - "name": "COEX NYLEX UNFILLED @BBL X1C", + "name": "COEX NYLEX UNFILLED @BBL X1C", "sub_path": "filament/COEX/COEX NYLEX UNFILLED @BBL X1C.json" }, { diff --git a/resources/profiles/BBL/filament/BETA/BETA ABS @base.json b/resources/profiles/BBL/filament/BETA/BETA ABS @base.json index 38e7aa5c12..bbed068703 100644 --- a/resources/profiles/BBL/filament/BETA/BETA ABS @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA ABS @base.json @@ -3,7 +3,7 @@ "name": "BETA ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "BABB00", + "filament_id": "OFjUXn67", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA ASA @base.json b/resources/profiles/BBL/filament/BETA/BETA ASA @base.json index a36f654b02..a525f16bb1 100644 --- a/resources/profiles/BBL/filament/BETA/BETA ASA @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA ASA @base.json @@ -3,7 +3,7 @@ "name": "BETA ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "BASB00", + "filament_id": "OFZqZMuv", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "eng_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA HIPS @base.json b/resources/profiles/BBL/filament/BETA/BETA HIPS @base.json index 2647bc3397..4d244f9fe1 100644 --- a/resources/profiles/BBL/filament/BETA/BETA HIPS @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA HIPS @base.json @@ -3,7 +3,7 @@ "name": "BETA HIPS @base", "inherits": "fdm_filament_hips", "from": "system", - "filament_id": "BHIB00", + "filament_id": "OFlmxlDG", "instantiation": "false", "filament_is_support": [ "1" diff --git a/resources/profiles/BBL/filament/BETA/BETA PAHT-CF @base.json b/resources/profiles/BBL/filament/BETA/BETA PAHT-CF @base.json index c0116f418c..1c140e3720 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PAHT-CF @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PAHT-CF @base.json @@ -3,7 +3,7 @@ "name": "BETA PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "BPAB00", + "filament_id": "OF6qw3Wb", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PEBA 90A @base.json b/resources/profiles/BBL/filament/BETA/BETA PEBA 90A @base.json index d92ceb29b1..fe1d3cd5b6 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PEBA 90A @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PEBA 90A @base.json @@ -3,7 +3,7 @@ "name": "BETA PEBA 90A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "BPBB00", + "filament_id": "OFI2MKy7", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG @base.json index 9d15c065f5..07a25f9233 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB00", + "filament_id": "OFrqMlGt", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Fluorescence @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Fluorescence @base.json index b9b0032612..b79699b9fc 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Fluorescence @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Fluorescence @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Fluorescence @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB02", + "filament_id": "OFYGrfHY", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Glitter @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Glitter @base.json index 70d84d21d3..c6b7b96de5 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Glitter @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Glitter @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Glitter @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB03", + "filament_id": "OFjogeYN", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Glow @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Glow @base.json index 7da99e23fc..30c8cc2783 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Glow @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Glow @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Glow @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB04", + "filament_id": "OFFfJ09N", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Gradient @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Gradient @base.json index 6f6e891503..cff77a0d6c 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Gradient @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Gradient @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Gradient @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB05", + "filament_id": "OFNk8AvA", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG HF @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG HF @base.json index 1ce6e4299e..b7aa43b6b5 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG HF @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG HF @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG HF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB06", + "filament_id": "OFxqf79Q", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Heat Color Change @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Heat Color Change @base.json index 32a62c63b7..254cf9e4c1 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Heat Color Change @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Heat Color Change @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Heat Color Change @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB01", + "filament_id": "OFyPTnSk", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Marble @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Marble @base.json index 30c79b2db5..335a3f59b2 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Marble @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Marble @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Marble @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB07", + "filament_id": "OF4XTfoI", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Matte @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Matte @base.json index c7278e20dd..52a838f323 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Matte @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Matte @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Matte @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB08", + "filament_id": "OFnpX8uh", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Metallic @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Metallic @base.json index b2d9ce8524..9c276bcf4d 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Metallic @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Metallic @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Metallic @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB09", + "filament_id": "OFz1a1fy", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG Transparent @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG Transparent @base.json index 6378e0cfdd..781d69af3a 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG Transparent @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG Transparent @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG Transparent @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB10", + "filament_id": "OFmt513L", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG UV Color Change @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG UV Color Change @base.json index 53717f5be3..42fa3bd62b 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG UV Color Change @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG UV Color Change @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG UV Color Change @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB11", + "filament_id": "OFKyNkQz", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG-CF @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG-CF @base.json index 165d5a56b8..8e3514f0ad 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG-CF @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB12", + "filament_id": "OFtndTHe", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/BETA/BETA PETG-GF @base.json b/resources/profiles/BBL/filament/BETA/BETA PETG-GF @base.json index 6261eaa7d2..d530f7a1d7 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PETG-GF @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PETG-GF @base.json @@ -3,7 +3,7 @@ "name": "BETA PETG-GF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "BPGB13", + "filament_id": "OFSiCZP3", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Basic @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Basic @base.json index 1653813bc1..429ecceda1 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Basic @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Basic @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB00", + "filament_id": "OFuvOt0r", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Chameleon @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Chameleon @base.json index cb618e7bd0..5054237514 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Chameleon @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Chameleon @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Chameleon @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB02", + "filament_id": "OFW8M3CY", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Fluorescence @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Fluorescence @base.json index 684ce8866f..d9198287aa 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Fluorescence @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Fluorescence @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Fluorescence @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB04", + "filament_id": "OF4PKvem", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Glitter @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Glitter @base.json index d180d4fb04..545a34dd92 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Glitter @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Glitter @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Glitter @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB05", + "filament_id": "OFcnWTJB", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Glow @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Glow @base.json index 05657ebd86..6be0a9da33 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Glow @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB06", + "filament_id": "OFGc9l16", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Gradient @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Gradient @base.json index f6cb4e3193..9609ff08d3 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Gradient @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Gradient @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Gradient @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB07", + "filament_id": "OF5LAnla", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Heat Color Change @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Heat Color Change @base.json index 6f55ffdab8..958b999d91 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Heat Color Change @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Heat Color Change @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Heat Color Change @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB03", + "filament_id": "OFSfm8iP", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA High Speed @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA High Speed @base.json index 604604cb04..7b93695099 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA High Speed @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA High Speed @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA High Speed @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB20", + "filament_id": "OF3PDEw3", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA High Temp @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA High Temp @base.json index 7ac72d59fa..d900b28794 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA High Temp @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA High Temp @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA High Temp @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB18", + "filament_id": "OF5BXhHF", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Marble @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Marble @base.json index c27f1b4fd1..a472446d9a 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Marble @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB08", + "filament_id": "OFKYBAWe", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Matte @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Matte @base.json index d67331d549..32bd79b43b 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Matte @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB09", + "filament_id": "OFwc74ck", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Metal @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Metal @base.json index 3a5668800d..607e20fa4e 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Metal @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB10", + "filament_id": "OF03RK6r", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Metallic @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Metallic @base.json index 5c1c8f3ddf..c03bc0a8c7 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Metallic @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Metallic @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Metallic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB11", + "filament_id": "OFkHbjUv", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA PRO @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA PRO @base.json index 340b2c88ec..6938382062 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA PRO @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA PRO @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA PRO @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB12", + "filament_id": "OFMzRg65", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Silk @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Silk @base.json index fb445eed6b..a0c61acd51 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Silk @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB13", + "filament_id": "OFeF4UNh", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Silk+ @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Silk+ @base.json index 3320396323..0bedc9186a 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Silk+ @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Silk+ @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Silk+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB01", + "filament_id": "OF8QdQwS", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Transparent @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Transparent @base.json index ce0c342852..be62c10734 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Transparent @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Transparent @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Transparent @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB14", + "filament_id": "OFJnEaCp", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA UV Color Change @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA UV Color Change @base.json index 033d1ef2ce..d95a0d8411 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA UV Color Change @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA UV Color Change @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA UV Color Change @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB15", + "filament_id": "OFpdjFI3", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Wood @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Wood @base.json index 471c5709cd..c5eeae9995 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Wood @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Wood @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Wood @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB19", + "filament_id": "OFGVxj2A", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA Youth @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA Youth @base.json index b63dc707e0..5fa118d566 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA Youth @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA Youth @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA Youth @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB16", + "filament_id": "OFF5o7b2", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/BETA/BETA PLA-CF @base.json b/resources/profiles/BBL/filament/BETA/BETA PLA-CF @base.json index 88028090da..f0f632adfa 100644 --- a/resources/profiles/BBL/filament/BETA/BETA PLA-CF @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "BETA PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "BPLB17", + "filament_id": "OFLqgSuX", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/BBL/filament/BETA/BETA TPU 90A @base.json b/resources/profiles/BBL/filament/BETA/BETA TPU 90A @base.json index 6664874f99..bba256fd74 100644 --- a/resources/profiles/BBL/filament/BETA/BETA TPU 90A @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA TPU 90A @base.json @@ -3,7 +3,7 @@ "name": "BETA TPU 90A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "BTUB00", + "filament_id": "OF6Yn69v", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA TPU 95A @base.json b/resources/profiles/BBL/filament/BETA/BETA TPU 95A @base.json index 2ec4a56075..87f7757c3f 100644 --- a/resources/profiles/BBL/filament/BETA/BETA TPU 95A @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA TPU 95A @base.json @@ -3,7 +3,7 @@ "name": "BETA TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "BTUB02", + "filament_id": "OFK7830e", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA TPU 98A @base.json b/resources/profiles/BBL/filament/BETA/BETA TPU 98A @base.json index 58ef5a5c21..cd106a6bf6 100644 --- a/resources/profiles/BBL/filament/BETA/BETA TPU 98A @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA TPU 98A @base.json @@ -3,7 +3,7 @@ "name": "BETA TPU 98A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "BTUB03", + "filament_id": "OFzaq7Yg", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/BETA/BETA TPU Matte @base.json b/resources/profiles/BBL/filament/BETA/BETA TPU Matte @base.json index 20d773373f..272e9be1ed 100644 --- a/resources/profiles/BBL/filament/BETA/BETA TPU Matte @base.json +++ b/resources/profiles/BBL/filament/BETA/BETA TPU Matte @base.json @@ -3,7 +3,7 @@ "name": "BETA TPU Matte @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "BTUB01", + "filament_id": "OF4QZANi", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu ABS @base.json b/resources/profiles/BBL/filament/Bambu ABS @base.json index 4940032f5e..5f395440eb 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS @base.json @@ -3,7 +3,7 @@ "name": "Bambu ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB00", + "filament_id": "OFhuaUQB", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu ABS-GF @base.json b/resources/profiles/BBL/filament/Bambu ABS-GF @base.json index b93c7e82cf..a14581034d 100644 --- a/resources/profiles/BBL/filament/Bambu ABS-GF @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS-GF @base.json @@ -3,7 +3,7 @@ "name": "Bambu ABS-GF @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB50", + "filament_id": "OFknl9Iz", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu ASA @base.json b/resources/profiles/BBL/filament/Bambu ASA @base.json index 31d4c2d758..5e66d50419 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB01", + "filament_id": "OFfBpSRI", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "eng_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json b/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json index 1a36118d7f..43c69be716 100644 --- a/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA-Aero @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB02", + "filament_id": "OFXzQ4yL", "instantiation": "false", "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: ASA Aero Printing Guide.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @base.json b/resources/profiles/BBL/filament/Bambu ASA-CF @base.json index 69624032bb..bf957889b6 100644 --- a/resources/profiles/BBL/filament/Bambu ASA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA-CF @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB51", + "filament_id": "OF0wBGNx", "instantiation": "false", "eng_plate_temp": [ "100" diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @base.json b/resources/profiles/BBL/filament/Bambu PA-CF @base.json index 587812d37b..47e1cc6ae1 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN03", + "filament_id": "OFFNYwWR", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json index 10737491fe..0bb143c6ef 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN05", + "filament_id": "OFniMuTN", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu PA6-GF @base.json b/resources/profiles/BBL/filament/Bambu PA6-GF @base.json index 1997ec6a1e..2f9a674e54 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-GF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA6-GF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA6-GF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN08", + "filament_id": "OFNk8bxk", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json index 28b1391f84..80c0599caa 100644 --- a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN04", + "filament_id": "OF2VFe4J", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu PC @base.json b/resources/profiles/BBL/filament/Bambu PC @base.json index 4bf37c3adb..ee235b17d6 100644 --- a/resources/profiles/BBL/filament/Bambu PC @base.json +++ b/resources/profiles/BBL/filament/Bambu PC @base.json @@ -3,7 +3,7 @@ "name": "Bambu PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC00", + "filament_id": "OFKhMPeX", "instantiation": "false", "filament_vendor": [ "Bambu Lab" diff --git a/resources/profiles/BBL/filament/Bambu PC FR @base.json b/resources/profiles/BBL/filament/Bambu PC FR @base.json index 5c10a4e424..0ee463d08f 100644 --- a/resources/profiles/BBL/filament/Bambu PC FR @base.json +++ b/resources/profiles/BBL/filament/Bambu PC FR @base.json @@ -3,7 +3,7 @@ "name": "Bambu PC FR @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC01", + "filament_id": "OFg57Nmc", "instantiation": "false", "filament_cost": [ "0" diff --git a/resources/profiles/BBL/filament/Bambu PET-CF @base.json b/resources/profiles/BBL/filament/Bambu PET-CF @base.json index ff8b40070f..c84d423f0e 100644 --- a/resources/profiles/BBL/filament/Bambu PET-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PET-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFT01", + "filament_id": "OFHa48An", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json index fd33eb2191..619483a4b4 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG Basic @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG00", + "filament_id": "OFFvzqcd", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @base.json b/resources/profiles/BBL/filament/Bambu PETG HF @base.json index e05c34035b..1c12d679fd 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG HF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG02", + "filament_id": "OFovEIbw", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json index 8cb30c5583..372c2e5c26 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG Translucent @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG01", + "filament_id": "OFwPrlCM", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json index da39340dcb..9c1d80768d 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG50", + "filament_id": "OFTRZ8Y4", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json index ea1315636a..b941bed495 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Aero @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA11", + "filament_id": "OFBSW57R", "instantiation": "false", "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: Instructions for printing RC model with foaming PLA (PLA Aero).", "fan_min_speed": [ diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json index f05bdb20e4..6d25d0ece0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA00", + "filament_id": "OFoiVqVM", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Dynamic @base.json b/resources/profiles/BBL/filament/Bambu PLA Dynamic @base.json index a5a1306eef..b21b156082 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Dynamic @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Dynamic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Dynamic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA13", + "filament_id": "OFDGigEI", "instantiation": "false", "filament_cost": [ "31.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @base.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @base.json index 046610b2e2..baeb6a1ab8 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA15", + "filament_id": "OFQ3e56w", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @base.json b/resources/profiles/BBL/filament/Bambu PLA Glow @base.json index 005d759df2..7556361f81 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA12", + "filament_id": "OFEkPBwx", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Lite @base.json b/resources/profiles/BBL/filament/Bambu PLA Lite @base.json index 72c3bb4e4f..4a21717d9e 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Lite @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Lite @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Lite @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA18", + "filament_id": "OFnfxTvi", "instantiation": "false", "filament_cost": [ "0" diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @base.json b/resources/profiles/BBL/filament/Bambu PLA Marble @base.json index 6dd5f815dc..4c9ecb2ff5 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA07", + "filament_id": "OF9OlTWH", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json index 15fb527bde..e98b6c3633 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA01", + "filament_id": "OFXIbw5D", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json index 630ffcd61f..9a12d97f4d 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA02", + "filament_id": "OFrKLeE3", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu PLA Pure @base.json b/resources/profiles/BBL/filament/Bambu PLA Pure @base.json index ae1b796a47..f947b2efaa 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Pure @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Pure @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Pure @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA19", + "filament_id": "OFTHDCqA", "instantiation": "false", "filament_cost": [ "21.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json index cfe83dabdd..da20a689ee 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA05", + "filament_id": "OFEGNJD4", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk+ @base.json b/resources/profiles/BBL/filament/Bambu PLA Silk+ @base.json index c81147eb58..17a7e21b79 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk+ @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk+ @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Silk+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA06", + "filament_id": "OFUanySo", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json b/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json index ae49d594fd..6ecad9584e 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Sparkle @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Sparkle @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA08", + "filament_id": "OFDxfPgH", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json index 9710767264..09b71a842d 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Tough @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA09", + "filament_id": "OFaQMgRH", "instantiation": "false", "filament_cost": [ "28.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough+ @base.json b/resources/profiles/BBL/filament/Bambu PLA Tough+ @base.json index 9b1b0b167e..ccc534d02f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough+ @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough+ @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Tough+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA10", + "filament_id": "OF342jVN", "instantiation": "false", "additional_cooling_fan_speed": [ "80" diff --git a/resources/profiles/BBL/filament/Bambu PLA Translucent @base.json b/resources/profiles/BBL/filament/Bambu PLA Translucent @base.json index d32d781e70..ada0a501fc 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Translucent @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Translucent @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Translucent @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA17", + "filament_id": "OFFbSnCD", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA Wood @base.json b/resources/profiles/BBL/filament/Bambu PLA Wood @base.json index 882e00dc0a..3ba638569b 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Wood @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Wood @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Wood @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA16", + "filament_id": "OFMjtqTC", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json index e24e6a11af..5567889cae 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA50", + "filament_id": "OFEswT5W", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/BBL/filament/Bambu PPA-CF @base.json b/resources/profiles/BBL/filament/Bambu PPA-CF @base.json index a7efc6a3c3..48355afad1 100644 --- a/resources/profiles/BBL/filament/Bambu PPA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PPA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PPA-CF @base", "inherits": "fdm_filament_ppa", "from": "system", - "filament_id": "GFN06", + "filament_id": "OF54B0S0", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "impact_strength_z": [ diff --git a/resources/profiles/BBL/filament/Bambu PPS-CF @base.json b/resources/profiles/BBL/filament/Bambu PPS-CF @base.json index a94234bb34..3985fcbe02 100644 --- a/resources/profiles/BBL/filament/Bambu PPS-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PPS-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PPS-CF @base", "inherits": "fdm_filament_pps", "from": "system", - "filament_id": "GFT02", + "filament_id": "OF4RvVuU", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ diff --git a/resources/profiles/BBL/filament/Bambu PVA @base.json b/resources/profiles/BBL/filament/Bambu PVA @base.json index fea0298ccc..1c6e0f2201 100644 --- a/resources/profiles/BBL/filament/Bambu PVA @base.json +++ b/resources/profiles/BBL/filament/Bambu PVA @base.json @@ -3,7 +3,7 @@ "name": "Bambu PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "GFS04", + "filament_id": "OFzyIxba", "instantiation": "false", "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json index d199cdb0a0..70724ff11f 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PA/PET @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFS03", + "filament_id": "OFMTK0UC", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json index 9bfdef5bf9..495291a3cf 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFS02", + "filament_id": "OFAnyRUI", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json index 38443f5be3..6a6ff6aa6b 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PLA/PETG @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFS05", + "filament_id": "OFIfnzxC", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu Support G @base.json b/resources/profiles/BBL/filament/Bambu Support G @base.json index 9cb01972b8..38c7f500f5 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @base.json +++ b/resources/profiles/BBL/filament/Bambu Support G @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support G @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFS01", + "filament_id": "OFQHiNJs", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index e847cd1865..1391587ef0 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support W @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFS00", + "filament_id": "OFsHSVZc", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @base.json b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json index bc8867db2a..25f62a07c3 100644 --- a/resources/profiles/BBL/filament/Bambu Support for ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support for ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFS06", + "filament_id": "OFf6mfQO", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_max_speed": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU 85A @base.json b/resources/profiles/BBL/filament/Bambu TPU 85A @base.json index bc8c9f698c..fc7f67bc45 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 85A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 85A @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 85A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU04", + "filament_id": "OFlfuj2k", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU 90A @base.json b/resources/profiles/BBL/filament/Bambu TPU 90A @base.json index 191d06e562..2f2ae95b02 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 90A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 90A @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 90A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU03", + "filament_id": "OFtkLO6q", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json index 2670e250e9..7d94b0256c 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU01", + "filament_id": "OFVCkX5w", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json index 7610fa2bf3..9f977eb5b2 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 95A HF @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU00", + "filament_id": "OFvKUnLh", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json index 21a1e70fea..5f0b03329f 100644 --- a/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU for AMS @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU02", + "filament_id": "OFIBbYO5", "instantiation": "false", "description": "If you are to print a kind of soft TPU, please don't slice with this profile, and it is only for TPU that has high enough hardness (not less than 55D) and is compatible with the AMS. To get better printing quality, please refer to this wiki: TPU printing guide.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/COEX/COEX NYLEX UNFILLED @BBL X1C.json b/resources/profiles/BBL/filament/COEX/COEX NYLEX UNFILLED @BBL X1C.json index 507a7050fb..082948c7ec 100644 --- a/resources/profiles/BBL/filament/COEX/COEX NYLEX UNFILLED @BBL X1C.json +++ b/resources/profiles/BBL/filament/COEX/COEX NYLEX UNFILLED @BBL X1C.json @@ -1,6 +1,7 @@ { "type": "filament", - "name": "COEX NYLEX UNFILLED @BBL X1C", + "name": "COEX NYLEX UNFILLED @BBL X1C", + "renamed_from": "COEX NYLEX UNFILLED @BBL X1C", "inherits": "COEX NYLEX UNFILLED @base", "from": "system", "setting_id": "CXPAUB21_01", diff --git a/resources/profiles/BBL/filament/FusRock/FusRock ABS-GF @base.json b/resources/profiles/BBL/filament/FusRock/FusRock ABS-GF @base.json index e9e45915f4..95a8fd47ea 100644 --- a/resources/profiles/BBL/filament/FusRock/FusRock ABS-GF @base.json +++ b/resources/profiles/BBL/filament/FusRock/FusRock ABS-GF @base.json @@ -3,7 +3,7 @@ "name": "FusRock ABS-GF @base", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFR00", + "filament_id": "OFmn9NZL", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).", "filament_extruder_variant": [ diff --git a/resources/profiles/BBL/filament/Generic ABS @base.json b/resources/profiles/BBL/filament/Generic ABS @base.json index 4a30d790f8..d15a7cdfea 100644 --- a/resources/profiles/BBL/filament/Generic ABS @base.json +++ b/resources/profiles/BBL/filament/Generic ABS @base.json @@ -3,7 +3,7 @@ "name": "Generic ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFY9muEs", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_flow_ratio": [ diff --git a/resources/profiles/BBL/filament/Generic ASA @base.json b/resources/profiles/BBL/filament/Generic ASA @base.json index e1acd0504d..699fc64f7c 100644 --- a/resources/profiles/BBL/filament/Generic ASA @base.json +++ b/resources/profiles/BBL/filament/Generic ASA @base.json @@ -3,7 +3,7 @@ "name": "Generic ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB98", + "filament_id": "OFLPAxz3", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "eng_plate_temp": [ diff --git a/resources/profiles/BBL/filament/Generic BVOH @base.json b/resources/profiles/BBL/filament/Generic BVOH @base.json index 848e67c6c9..4a0fdf358e 100644 --- a/resources/profiles/BBL/filament/Generic BVOH @base.json +++ b/resources/profiles/BBL/filament/Generic BVOH @base.json @@ -3,7 +3,7 @@ "name": "Generic BVOH @base", "inherits": "fdm_filament_bvoh", "from": "system", - "filament_id": "GFS97", + "filament_id": "OFo2UF2C", "instantiation": "false", "filament_adhesiveness_category": [ "797" diff --git a/resources/profiles/BBL/filament/Generic EVA @base.json b/resources/profiles/BBL/filament/Generic EVA @base.json index 8799903ab5..79308d5d37 100644 --- a/resources/profiles/BBL/filament/Generic EVA @base.json +++ b/resources/profiles/BBL/filament/Generic EVA @base.json @@ -3,7 +3,7 @@ "name": "Generic EVA @base", "inherits": "fdm_filament_eva", "from": "system", - "filament_id": "GFR99", + "filament_id": "OFCD8qiU", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/BBL/filament/Generic HIPS @base.json b/resources/profiles/BBL/filament/Generic HIPS @base.json index c4147f8098..a0df005ecc 100644 --- a/resources/profiles/BBL/filament/Generic HIPS @base.json +++ b/resources/profiles/BBL/filament/Generic HIPS @base.json @@ -3,7 +3,7 @@ "name": "Generic HIPS @base", "inherits": "fdm_filament_hips", "from": "system", - "filament_id": "GFS98", + "filament_id": "OFsFon5l", "instantiation": "false", "filament_is_support": [ "1" diff --git a/resources/profiles/BBL/filament/Generic PA @base.json b/resources/profiles/BBL/filament/Generic PA @base.json index fe819487b0..e6dad20449 100644 --- a/resources/profiles/BBL/filament/Generic PA @base.json +++ b/resources/profiles/BBL/filament/Generic PA @base.json @@ -3,7 +3,7 @@ "name": "Generic PA @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN99", + "filament_id": "OFg8ndtj", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "chamber_temperatures": [ diff --git a/resources/profiles/BBL/filament/Generic PA-CF @base.json b/resources/profiles/BBL/filament/Generic PA-CF @base.json index 6fdbd0c8bb..7c77ffe482 100644 --- a/resources/profiles/BBL/filament/Generic PA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN98", + "filament_id": "OFQLcbps", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/BBL/filament/Generic PC @base.json b/resources/profiles/BBL/filament/Generic PC @base.json index a98c5a4183..b61c2296b5 100644 --- a/resources/profiles/BBL/filament/Generic PC @base.json +++ b/resources/profiles/BBL/filament/Generic PC @base.json @@ -3,7 +3,7 @@ "name": "Generic PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC99", + "filament_id": "OFLakOUI", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_flow_ratio": [ diff --git a/resources/profiles/BBL/filament/Generic PCTG @base.json b/resources/profiles/BBL/filament/Generic PCTG @base.json index e8b7c1ce0a..2eea3496a3 100644 --- a/resources/profiles/BBL/filament/Generic PCTG @base.json +++ b/resources/profiles/BBL/filament/Generic PCTG @base.json @@ -3,7 +3,7 @@ "name": "Generic PCTG @base", "inherits": "fdm_filament_pctg", "from": "system", - "filament_id": "GFG97", + "filament_id": "OFu1evlr", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Generic PE @base.json b/resources/profiles/BBL/filament/Generic PE @base.json index 22a5162c90..d9bdfc84a5 100644 --- a/resources/profiles/BBL/filament/Generic PE @base.json +++ b/resources/profiles/BBL/filament/Generic PE @base.json @@ -3,7 +3,7 @@ "name": "Generic PE @base", "inherits": "fdm_filament_pe", "from": "system", - "filament_id": "GFP99", + "filament_id": "OFPklMI1", "instantiation": "false", "filament_cost": [ "40.99" diff --git a/resources/profiles/BBL/filament/Generic PE-CF @base.json b/resources/profiles/BBL/filament/Generic PE-CF @base.json index 6dafa3535a..655a30e41e 100644 --- a/resources/profiles/BBL/filament/Generic PE-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PE-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PE-CF @base", "inherits": "fdm_filament_pe", "from": "system", - "filament_id": "GFP98", + "filament_id": "OFd0Fv0k", "instantiation": "false", "filament_cost": [ "65.99" diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json index 8d59f692a3..9fce0893ce 100644 --- a/resources/profiles/BBL/filament/Generic PETG @base.json +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -3,7 +3,7 @@ "name": "Generic PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFYPdQJh", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Generic PETG HF @base.json b/resources/profiles/BBL/filament/Generic PETG HF @base.json index 6a5ce9f063..c756285013 100644 --- a/resources/profiles/BBL/filament/Generic PETG HF @base.json +++ b/resources/profiles/BBL/filament/Generic PETG HF @base.json @@ -3,7 +3,7 @@ "name": "Generic PETG HF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG96", + "filament_id": "OF7lOgYF", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Generic PETG-CF @base.json b/resources/profiles/BBL/filament/Generic PETG-CF @base.json index c1d7338bd4..4f2f6ed3f9 100644 --- a/resources/profiles/BBL/filament/Generic PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PETG-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG98", + "filament_id": "OFoYSJKi", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Generic PHA @base.json b/resources/profiles/BBL/filament/Generic PHA @base.json index 8e3a7e5f6a..fe2373ff7c 100644 --- a/resources/profiles/BBL/filament/Generic PHA @base.json +++ b/resources/profiles/BBL/filament/Generic PHA @base.json @@ -3,6 +3,6 @@ "name": "Generic PHA @base", "inherits": "fdm_filament_pha", "from": "system", - "filament_id": "GFR98", + "filament_id": "OF74KeQR", "instantiation": "false" } diff --git a/resources/profiles/BBL/filament/Generic PLA @base.json b/resources/profiles/BBL/filament/Generic PLA @base.json index f5c584bc3e..8e166fe212 100644 --- a/resources/profiles/BBL/filament/Generic PLA @base.json +++ b/resources/profiles/BBL/filament/Generic PLA @base.json @@ -3,7 +3,7 @@ "name": "Generic PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFDSrzZ8", "instantiation": "false", "description": "The generic presets are conservatively tuned for compatibility with a wider range of filaments. For higher printing quality and speeds, please use Bambu filaments with Bambu presets.", "filament_flow_ratio": [ diff --git a/resources/profiles/BBL/filament/Generic PLA High Speed @base.json b/resources/profiles/BBL/filament/Generic PLA High Speed @base.json index f03e30f5ec..9fd751ae44 100644 --- a/resources/profiles/BBL/filament/Generic PLA High Speed @base.json +++ b/resources/profiles/BBL/filament/Generic PLA High Speed @base.json @@ -3,7 +3,7 @@ "name": "Generic PLA High Speed @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL95", + "filament_id": "OFmpMwxS", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/BBL/filament/Generic PLA Silk @base.json b/resources/profiles/BBL/filament/Generic PLA Silk @base.json index 4dfe033cb3..41bc486e88 100644 --- a/resources/profiles/BBL/filament/Generic PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Generic PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Generic PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL96", + "filament_id": "OFesA6rF", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_flow_ratio": [ diff --git a/resources/profiles/BBL/filament/Generic PLA-CF @base.json b/resources/profiles/BBL/filament/Generic PLA-CF @base.json index 8f59df41a8..ffbcaad864 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL98", + "filament_id": "OFWbdGsC", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/BBL/filament/Generic PP @base.json b/resources/profiles/BBL/filament/Generic PP @base.json index 14c266404a..94847d67e9 100644 --- a/resources/profiles/BBL/filament/Generic PP @base.json +++ b/resources/profiles/BBL/filament/Generic PP @base.json @@ -3,6 +3,6 @@ "name": "Generic PP @base", "inherits": "fdm_filament_pp", "from": "system", - "filament_id": "GFP97", + "filament_id": "OF1UNk9P", "instantiation": "false" } diff --git a/resources/profiles/BBL/filament/Generic PP-CF @base.json b/resources/profiles/BBL/filament/Generic PP-CF @base.json index 307793d371..e04ee56b6d 100644 --- a/resources/profiles/BBL/filament/Generic PP-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PP-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PP-CF @base", "inherits": "fdm_filament_pp", "from": "system", - "filament_id": "GFP96", + "filament_id": "OFXkm8q1", "instantiation": "false", "filament_cost": [ "77.99" diff --git a/resources/profiles/BBL/filament/Generic PP-GF @base.json b/resources/profiles/BBL/filament/Generic PP-GF @base.json index d17fa31d68..5d82e8223a 100644 --- a/resources/profiles/BBL/filament/Generic PP-GF @base.json +++ b/resources/profiles/BBL/filament/Generic PP-GF @base.json @@ -3,7 +3,7 @@ "name": "Generic PP-GF @base", "inherits": "fdm_filament_pp", "from": "system", - "filament_id": "GFP95", + "filament_id": "OFsijjtH", "instantiation": "false", "filament_cost": [ "59.99" diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @base.json b/resources/profiles/BBL/filament/Generic PPA-CF @base.json index 6287533414..78ad9bca5e 100644 --- a/resources/profiles/BBL/filament/Generic PPA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PPA-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PPA-CF @base", "inherits": "fdm_filament_ppa", "from": "system", - "filament_id": "GFN97", + "filament_id": "OF8tPByX", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_max_volumetric_speed": [ diff --git a/resources/profiles/BBL/filament/Generic PPA-GF @base.json b/resources/profiles/BBL/filament/Generic PPA-GF @base.json index 6220abbeef..72ff99cd16 100644 --- a/resources/profiles/BBL/filament/Generic PPA-GF @base.json +++ b/resources/profiles/BBL/filament/Generic PPA-GF @base.json @@ -3,7 +3,7 @@ "name": "Generic PPA-GF @base", "inherits": "fdm_filament_ppa", "from": "system", - "filament_id": "GFN96", + "filament_id": "OF8Tlg47", "instantiation": "false", "filament_max_volumetric_speed": [ "6" diff --git a/resources/profiles/BBL/filament/Generic PPS @base.json b/resources/profiles/BBL/filament/Generic PPS @base.json index 882fea94e0..08ba73cba8 100644 --- a/resources/profiles/BBL/filament/Generic PPS @base.json +++ b/resources/profiles/BBL/filament/Generic PPS @base.json @@ -3,7 +3,7 @@ "name": "Generic PPS @base", "inherits": "fdm_filament_pps", "from": "system", - "filament_id": "GFT97", + "filament_id": "OFq9svOz", "instantiation": "false", "filament_dev_chamber_drying_bed_temperature": [ "90" diff --git a/resources/profiles/BBL/filament/Generic PPS-CF @base.json b/resources/profiles/BBL/filament/Generic PPS-CF @base.json index f003a7b470..76aab2de8b 100644 --- a/resources/profiles/BBL/filament/Generic PPS-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PPS-CF @base.json @@ -3,7 +3,7 @@ "name": "Generic PPS-CF @base", "inherits": "fdm_filament_pps", "from": "system", - "filament_id": "GFT98", + "filament_id": "OF6rdQ6M", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ diff --git a/resources/profiles/BBL/filament/Generic PVA @base.json b/resources/profiles/BBL/filament/Generic PVA @base.json index ca3dae82a4..4021f07f45 100644 --- a/resources/profiles/BBL/filament/Generic PVA @base.json +++ b/resources/profiles/BBL/filament/Generic PVA @base.json @@ -3,7 +3,7 @@ "name": "Generic PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "GFS99", + "filament_id": "OFDvXujf", "instantiation": "false", "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_flow_ratio": [ diff --git a/resources/profiles/BBL/filament/Generic SBS @base.json b/resources/profiles/BBL/filament/Generic SBS @base.json index 6decbf2213..fbf9b8a403 100644 --- a/resources/profiles/BBL/filament/Generic SBS @base.json +++ b/resources/profiles/BBL/filament/Generic SBS @base.json @@ -3,7 +3,7 @@ "name": "Generic SBS @base", "inherits": "fdm_filament_sbs", "from": "system", - "filament_id": "GFLSBS99", + "filament_id": "OFhQfUQY", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/BBL/filament/Generic SBS.json b/resources/profiles/BBL/filament/Generic SBS.json index 2e38a46fde..ffa36a9abb 100644 --- a/resources/profiles/BBL/filament/Generic SBS.json +++ b/resources/profiles/BBL/filament/Generic SBS.json @@ -4,7 +4,7 @@ "inherits": "Generic SBS @base", "from": "system", "setting_id": "BFLSBS99-1", - "filament_id": "BFLSBS99", + "filament_id": "OFhQfUQY", "instantiation": "true", "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic TPU @base.json b/resources/profiles/BBL/filament/Generic TPU @base.json index 78fe4c1b1a..f2bc7049aa 100644 --- a/resources/profiles/BBL/filament/Generic TPU @base.json +++ b/resources/profiles/BBL/filament/Generic TPU @base.json @@ -3,7 +3,7 @@ "name": "Generic TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU99", + "filament_id": "OFgbpcy9", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_max_volumetric_speed": [ diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @base.json b/resources/profiles/BBL/filament/Generic TPU for AMS @base.json index eb42aa3df2..1432bdfbe2 100644 --- a/resources/profiles/BBL/filament/Generic TPU for AMS @base.json +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @base.json @@ -3,7 +3,7 @@ "name": "Generic TPU for AMS @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU98", + "filament_id": "OFmN2lvw", "instantiation": "false", "description": "If you are to print a kind of soft TPU, please don't slice with this profile, and it is only for TPU that has high enough hardness (not less than 55D) and is compatible with the AMS. To get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/Numakers/Numakers PLA+ @base.json b/resources/profiles/BBL/filament/Numakers/Numakers PLA+ @base.json index 91080469cd..b77157064b 100644 --- a/resources/profiles/BBL/filament/Numakers/Numakers PLA+ @base.json +++ b/resources/profiles/BBL/filament/Numakers/Numakers PLA+ @base.json @@ -3,7 +3,7 @@ "name": "Numakers PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFNMK00", + "filament_id": "OFqGRZyH", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/BBL/filament/Overture/Overture Matte PLA @base.json b/resources/profiles/BBL/filament/Overture/Overture Matte PLA @base.json index 469116c778..bccfb1f17b 100644 --- a/resources/profiles/BBL/filament/Overture/Overture Matte PLA @base.json +++ b/resources/profiles/BBL/filament/Overture/Overture Matte PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Matte PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL05", + "filament_id": "OFBw6eEG", "instantiation": "false", "filament_cost": [ "24.52" diff --git a/resources/profiles/BBL/filament/Overture/Overture PLA @base.json b/resources/profiles/BBL/filament/Overture/Overture PLA @base.json index c31f99f8c8..0f302d4798 100644 --- a/resources/profiles/BBL/filament/Overture/Overture PLA @base.json +++ b/resources/profiles/BBL/filament/Overture/Overture PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL04", + "filament_id": "OFc3xdm9", "instantiation": "false", "filament_cost": [ "24.15" diff --git a/resources/profiles/BBL/filament/Overture/Overture PLA Pro @base.json b/resources/profiles/BBL/filament/Overture/Overture PLA Pro @base.json index 80525e03b2..454c36e7b0 100644 --- a/resources/profiles/BBL/filament/Overture/Overture PLA Pro @base.json +++ b/resources/profiles/BBL/filament/Overture/Overture PLA Pro @base.json @@ -3,7 +3,7 @@ "name": "Overture PLA Pro @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT001", + "filament_id": "OFxA1p01", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF @base.json index d98490f1d7..a5aa03bf9b 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA12-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL52", + "filament_id": "OFX0ycRQ", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF10 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF10 @base.json index 368abf5570..674d5acb38 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF10 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA12-CF10 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA12-CF10 @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL56", + "filament_id": "OFvxIS9g", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF @base.json index d0424d164b..823e8a0ff1 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL50", + "filament_id": "OFkOviHk", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF20 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF20 @base.json index 65fee6a5bb..f28ee154b8 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF20 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-CF20 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-CF20 @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL57", + "filament_id": "OFEabreg", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF @base.json index 6ad501fdfc..607b1c8e00 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-GF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL51", + "filament_id": "OFwaYjL6", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF25 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF25 @base.json index af2b6d92e1..426e4175db 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF25 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA6-GF25 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-GF25 @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL58", + "filament_id": "OF5B9sUc", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF @base.json index bd7d52f415..3765f754f5 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA612-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL53", + "filament_id": "OFS2tn6G", "instantiation": "false", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF15 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF15 @base.json index dc7194aad0..310a2229d9 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF15 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PA612-CF15 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA612-CF15 @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL59", + "filament_id": "OFcBl0nJ", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF @base.json index 365ebb2fd7..2ca2a42d04 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFL54", + "filament_id": "OFHWSM21", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF17 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF17 @base.json index adcbf5c9ef..d55b7d2daf 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF17 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PET-CF17 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PET-CF17 @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFL60", + "filament_id": "OFAc0Pr3", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-ESD @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-ESD @base.json index 11c846ff78..b459cc68a1 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-ESD @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-ESD @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-ESD @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFL06", + "filament_id": "OFcytyoA", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF @base.json index f5674437e8..f052304624 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-rCF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFL55", + "filament_id": "OFk8t9mz", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF08 @base.json b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF08 @base.json index da9cdeb43c..fe8eca06cb 100644 --- a/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF08 @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Fiberon PETG-rCF08 @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-rCF08 @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFL61", + "filament_id": "OFw4WD4T", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma CoPE @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma CoPE @base.json index b79b34db77..e3e21d17a1 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma CoPE @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma CoPE @base.json @@ -3,7 +3,7 @@ "name": "Panchroma CoPE @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM016", + "filament_id": "OFqw2PQA", "instantiation": "false", "filament_cost": [ "19.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA @base.json index 284ad94032..5f4c2682db 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM001", + "filament_id": "OFsRDvTM", "instantiation": "false", "filament_cost": [ "19.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Celestial @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Celestial @base.json index 5a1bfdd22a..18382eb7a0 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Celestial @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Celestial @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Celestial @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM008", + "filament_id": "OFRiYgMK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Galaxy @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Galaxy @base.json index 6cc9094d1a..bf84a536a4 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Galaxy @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM007", + "filament_id": "OFFkCLBl", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Glow @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Glow @base.json index c1ded4c198..ab3032ad57 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Glow @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM010", + "filament_id": "OF0gGRWk", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Luminous @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Luminous @base.json index 8c9a74ad88..14a805212e 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Luminous @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Luminous @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Luminous @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM011", + "filament_id": "OF0kCNDK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Marble @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Marble @base.json index cf1574fa9c..63680ba1b7 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Marble @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM003", + "filament_id": "OFKiSMWR", "instantiation": "false", "filament_cost": [ "21.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Matte @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Matte @base.json index 71dda06b1e..33d880ac08 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Matte @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM002", + "filament_id": "OFrOh600", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Metallic @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Metallic @base.json index 6cda256ff4..89ce745162 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Metallic @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Metallic @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Metallic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM012", + "filament_id": "OFjb0wos", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Neon @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Neon @base.json index 3d8f857e56..bd8f5fc0d6 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Neon @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Neon @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Neon @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM013", + "filament_id": "OFO1GEq6", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Satin @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Satin @base.json index 6af2ad1bbe..c8ef69cf88 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Satin @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Satin @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Satin @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM005", + "filament_id": "OFPkCJKE", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Silk @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Silk @base.json index b21d127b41..94c2cb7c0b 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM004", + "filament_id": "OFS8lTQt", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Starlight @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Starlight @base.json index 57ddbd09b3..8622a109f2 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Starlight @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Starlight @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Starlight @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM009", + "filament_id": "OFC78WGQ", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Temp Shift @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Temp Shift @base.json index 322f91be2b..d0d6f6b057 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Temp Shift @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Temp Shift @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Temp Shift @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM015", + "filament_id": "OFhASRWj", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Translucent @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Translucent @base.json index 7c7e5eedb7..ac8842d912 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Translucent @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA Translucent @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Translucent @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM006", + "filament_id": "OFCIUsWh", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA UV Shift @base.json b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA UV Shift @base.json index 5ab8d5b81c..986b46fd5d 100644 --- a/resources/profiles/BBL/filament/Polymaker/Panchroma PLA UV Shift @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Panchroma PLA UV Shift @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA UV Shift @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM014", + "filament_id": "OF1N1qMK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite ABS @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite ABS @base.json index 8e1ec42a79..11be66397d 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite ABS @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite ABS @base.json @@ -3,7 +3,7 @@ "name": "PolyLite ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB60", + "filament_id": "OFOvv91M", "instantiation": "false", "filament_cost": [ "26.9" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite ASA @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite ASA @base.json index 88e453e0e5..026efbfb61 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite ASA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite ASA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB61", + "filament_id": "OFvrXuV7", "instantiation": "false", "eng_plate_temp": [ "100" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite CosPLA @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite CosPLA @base.json index 18f38f0c68..92739d13bb 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite CosPLA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite CosPLA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite CosPLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL62", + "filament_id": "OFJgijky", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PETG @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PETG @base.json index 87e9a1194a..365f5f1460 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PETG @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PETG @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG60", + "filament_id": "OF0UJcb6", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA @base.json index cbfe608b4e..55ea664946 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL00", + "filament_id": "OF5CgdDq", "instantiation": "false", "filament_cost": [ "25.4" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Galaxy @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Galaxy @base.json index 9480b33392..90996083f1 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Galaxy @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL63", + "filament_id": "OFvyB0Bz", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Glow @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Glow @base.json index ab4b717dbb..3a70d3a83f 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Glow @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL64", + "filament_id": "OF5umxxT", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Luminous @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Luminous @base.json index a6bb2746c1..14131c0348 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Luminous @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Luminous @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Luminous @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL65", + "filament_id": "OFBoSWxb", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Neon @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Neon @base.json index 5a0ec60465..b9fc01a700 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Neon @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Neon @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Neon @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL66", + "filament_id": "OFitS8al", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Pro @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Pro @base.json index bf2867a702..93c6cf8c9f 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Pro @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Pro @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Pro @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM019", + "filament_id": "OFF9OKoY", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Starlight @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Starlight @base.json index ecc73602c3..3c8a79ed3f 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Starlight @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Starlight @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Starlight @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL67", + "filament_id": "OFIxOuOu", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Translucent @base.json b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Translucent @base.json index f5f9c89720..9a6155e283 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Translucent @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyLite PLA Translucent @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Translucent @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL68", + "filament_id": "OFy02QHU", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA @base.json b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA @base.json index e844afc545..3b13c5b55c 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL01", + "filament_id": "OFW29a9R", "instantiation": "false", "filament_cost": [ "25.4" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA Marble @base.json b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA Marble @base.json index 2b64adc51c..ea65b41ec4 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA Marble @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL69", + "filament_id": "OFxe4rXr", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA+ @base.json b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA+ @base.json index 15fccef9e3..1d322a6c3e 100644 --- a/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA+ @base.json +++ b/resources/profiles/BBL/filament/Polymaker/PolyTerra PLA+ @base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL70", + "filament_id": "OFEjbwqG", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA @base.json b/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA @base.json index 22b1a0d5ce..94ab2b2fd9 100644 --- a/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA @base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM017", + "filament_id": "OFPoyiFs", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA-GF @base.json b/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA-GF @base.json index 55173547e9..585a6dd554 100644 --- a/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA-GF @base.json +++ b/resources/profiles/BBL/filament/Polymaker/Polymaker HT-PLA-GF @base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA-GF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM018", + "filament_id": "OFlwmqrC", "instantiation": "false", "filament_cost": [ "32.99" diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU Marble PLA @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU Marble PLA @base.json index 099f90ce9c..d2f34323a0 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU Marble PLA @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU Marble PLA @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL06", + "filament_id": "OFxUwUeW", "instantiation": "false", "filament_cost": [ "31.99" diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU PETG @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU PETG @base.json index 523468391e..6e3eaf356e 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU PETG @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU PETG @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFSNL08", + "filament_id": "OF2GCW1l", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA Matte @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA Matte @base.json index f99bbc84bf..f3b92cdb2f 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA Matte @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL02", + "filament_id": "OFpW4gdi", "instantiation": "false", "filament_cost": [ "25.99" diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ 2.0 @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ 2.0 @base.json index 47f103af84..d2b1087f28 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ 2.0 @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ 2.0 @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ 2.0 @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL04", + "filament_id": "OFHmPYRy", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ @base.json index ffe454c74f..c46fb9affc 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL03", + "filament_id": "OFMUWNkp", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU Silk PLA+ @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU Silk PLA+ @base.json index e83ae1a411..22e7994783 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU Silk PLA+ @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU Silk PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Silk PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL05", + "filament_id": "OFpPGSKG", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/BBL/filament/SUNLU/SUNLU Wood PLA @base.json b/resources/profiles/BBL/filament/SUNLU/SUNLU Wood PLA @base.json index 8cc3cd97a7..e13c06ceb8 100644 --- a/resources/profiles/BBL/filament/SUNLU/SUNLU Wood PLA @base.json +++ b/resources/profiles/BBL/filament/SUNLU/SUNLU Wood PLA @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Wood PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL07", + "filament_id": "OFLJ8S6I", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json index 2889bc0a39..ecc4aa62f4 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json @@ -4,7 +4,7 @@ "inherits": "Generic ABS @base", "from": "system", "setting_id": "GF_ANRA_00", - "filament_id": "GF_ANRA", + "filament_id": "OFzk5oAo", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json index 9da0cc2b6e..3d4fbe9c88 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json @@ -4,7 +4,7 @@ "inherits": "Generic PA @base", "from": "system", "setting_id": "GF_ANAF_00", - "filament_id": "GF_ANAF", + "filament_id": "OFSw6Mor", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json index 037ae82eed..5486b65d44 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json @@ -4,7 +4,7 @@ "inherits": "Generic PA @base", "from": "system", "setting_id": "GF_ANAD_00", - "filament_id": "GF_ANAD", + "filament_id": "OFWK0Y9A", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json index 3b8f50c799..1881e454f5 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json @@ -4,7 +4,7 @@ "inherits": "Generic PA-CF @base", "from": "system", "setting_id": "GF_ANAX_00", - "filament_id": "GF_ANAX", + "filament_id": "OFBsbMMF", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json index dc5e815df5..e0696d14fe 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json @@ -4,7 +4,7 @@ "inherits": "Generic PA @base", "from": "system", "setting_id": "GF_ANLA_00", - "filament_id": "GF_ANLA", + "filament_id": "OF1ID4N1", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json index e1e67fbb71..d64bb0629e 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json @@ -4,7 +4,7 @@ "inherits": "Generic PC @base", "from": "system", "setting_id": "GF_ANPBX_00", - "filament_id": "GF_ANPBX", + "filament_id": "OFhN09f0", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json index 288368dd07..6a4af4f908 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANPE_00", - "filament_id": "GF_ANPE", + "filament_id": "OFHHwrd1", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json index 060ffe6b56..ff647879dc 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANEG_00", - "filament_id": "GF_ANEG", + "filament_id": "OFUtiVRn", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json index c83d353302..fdbaa361f2 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANGE_00", - "filament_id": "GF_ANGE", + "filament_id": "OFZGrQTU", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json index 96aec4f471..12849a851d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANPF_00", - "filament_id": "GF_ANPF", + "filament_id": "OF0EYBWQ", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json index a73d5ae48a..bdbecc7722 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANPM_00", - "filament_id": "GF_ANPM", + "filament_id": "OFU5JPDy", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json index 1c4f092d54..a466f88b0a 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "GF_ANRM_00", - "filament_id": "GF_ANRM", + "filament_id": "OFqTwtXM", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json index 927ef1ca6e..a5c78fe215 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG-CF @base", "from": "system", "setting_id": "GF_ANRX_00", - "filament_id": "GF_ANRX", + "filament_id": "OFAcJkl1", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json index d008217fcf..f32705ba65 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANEP_00", - "filament_id": "GF_ANEP", + "filament_id": "OF71b7qO", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json index 51b2924577..fa2c0e9ae0 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANPL_00", - "filament_id": "GF_ANPL", + "filament_id": "OFZJft47", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json index 5ab0cc036a..1dc1796d4b 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANHTP_00", - "filament_id": "GF_ANHTP", + "filament_id": "OFVDWuxl", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json index caa3fb10ed..f64767d1e3 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA Silk @base", "from": "system", "setting_id": "GF_ANPS_00", - "filament_id": "GF_ANPS", + "filament_id": "OFOQCfVa", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json index 97c7026910..1bbfb305b2 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANTE_00", - "filament_id": "GF_ANTE", + "filament_id": "OFRFhdqy", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json index faa711ee14..99ec158160 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANPLW_00", - "filament_id": "GF_ANPLW", + "filament_id": "OFN8QBhu", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json index 3ffec96061..ffe91af773 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA High Speed @base", "from": "system", "setting_id": "GF_ANXPH_00", - "filament_id": "GF_ANXPH", + "filament_id": "OFLjDYxH", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json index b8016af159..073b96a224 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANXP_00", - "filament_id": "GF_ANXP", + "filament_id": "OFtdVZpV", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json index ad47884179..b6a2695235 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @base", "from": "system", "setting_id": "GF_ANRPL_00", - "filament_id": "GF_ANRPL", + "filament_id": "OFnBvPhb", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json index 608be46906..7910e3c772 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA-CF @base", "from": "system", "setting_id": "GF_ANPCF_00", - "filament_id": "GF_ANPCF", + "filament_id": "OFcpa50Z", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json index 8ca7e5e5ab..13604f5832 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json @@ -4,7 +4,7 @@ "inherits": "Generic PA @base", "from": "system", "setting_id": "GF_ANPV_00", - "filament_id": "GF_ANPV", + "filament_id": "OFQ5TxZ2", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json index 05c7af8947..d8a9ca5ca3 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json @@ -4,7 +4,7 @@ "inherits": "Generic TPU @base", "from": "system", "setting_id": "GF_ANEF_00", - "filament_id": "GF_ANEF", + "filament_id": "OFO6GMJ3", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json index e6236ed79a..f4d1beac7d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json @@ -4,7 +4,7 @@ "inherits": "Generic TPU @base", "from": "system", "setting_id": "GF_ANTA_00", - "filament_id": "GF_ANTA", + "filament_id": "OFvcIGee", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json index 6b971b7d5c..61d6100a71 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json @@ -4,7 +4,7 @@ "inherits": "Generic TPU @base", "from": "system", "setting_id": "GF_ANTM_00", - "filament_id": "GF_ANTM", + "filament_id": "OFyJjkek", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json index 544608b91a..6820e79489 100644 --- a/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json +++ b/resources/profiles/BBL/filament/eSUN/eSUN PLA+ @base.json @@ -3,7 +3,7 @@ "name": "eSUN PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL03", + "filament_id": "OFqINlYj", "instantiation": "false", "filament_cost": [ "22.99" diff --git a/resources/profiles/Blocks.json b/resources/profiles/Blocks.json index 269391c4c3..f8243c252d 100644 --- a/resources/profiles/Blocks.json +++ b/resources/profiles/Blocks.json @@ -1,6 +1,6 @@ { "name": "Blocks", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Blocks configurations", "machine_model_list": [ @@ -249,48 +249,48 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Blocks Generic ABS", - "sub_path": "filament/Blocks Generic ABS.json" + "name": "Generic ABS @Blocks", + "sub_path": "filament/Generic ABS @Blocks.json" }, { - "name": "Blocks Generic ASA", - "sub_path": "filament/Blocks Generic ASA.json" + "name": "Generic ASA @Blocks", + "sub_path": "filament/Generic ASA @Blocks.json" }, { - "name": "Blocks Generic ASA-CF", - "sub_path": "filament/Blocks Generic ASA-CF.json" + "name": "Generic ASA-CF @Blocks", + "sub_path": "filament/Generic ASA-CF @Blocks.json" }, { - "name": "Blocks Generic PA", - "sub_path": "filament/Blocks Generic PA.json" + "name": "Generic PA @Blocks", + "sub_path": "filament/Generic PA @Blocks.json" }, { - "name": "Blocks Generic PA-CF", - "sub_path": "filament/Blocks Generic PA-CF.json" + "name": "Generic PA-CF @Blocks", + "sub_path": "filament/Generic PA-CF @Blocks.json" }, { - "name": "Blocks Generic PC", - "sub_path": "filament/Blocks Generic PC.json" + "name": "Generic PC @Blocks", + "sub_path": "filament/Generic PC @Blocks.json" }, { - "name": "Blocks Generic PETG", - "sub_path": "filament/Blocks Generic PETG.json" + "name": "Generic PETG @Blocks", + "sub_path": "filament/Generic PETG @Blocks.json" }, { - "name": "Blocks Generic PLA", - "sub_path": "filament/Blocks Generic PLA.json" + "name": "Generic PLA @Blocks", + "sub_path": "filament/Generic PLA @Blocks.json" }, { - "name": "Blocks Generic PLA-CF", - "sub_path": "filament/Blocks Generic PLA-CF.json" + "name": "Generic PLA-CF @Blocks", + "sub_path": "filament/Generic PLA-CF @Blocks.json" }, { - "name": "Blocks Generic PVA", - "sub_path": "filament/Blocks Generic PVA.json" + "name": "Generic PVA @Blocks", + "sub_path": "filament/Generic PVA @Blocks.json" }, { - "name": "Blocks Generic TPU", - "sub_path": "filament/Blocks Generic TPU.json" + "name": "Generic TPU @Blocks", + "sub_path": "filament/Generic TPU @Blocks.json" } ], "machine_list": [ diff --git a/resources/profiles/Blocks/filament/Blocks Generic ABS.json b/resources/profiles/Blocks/filament/Generic ABS @Blocks.json similarity index 90% rename from resources/profiles/Blocks/filament/Blocks Generic ABS.json rename to resources/profiles/Blocks/filament/Generic ABS @Blocks.json index db6ee6f3c9..c3d09cfd18 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic ABS.json +++ b/resources/profiles/Blocks/filament/Generic ABS @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic ABS", + "name": "Generic ABS @Blocks", "inherits": "fdm_filament_abs", + "renamed_from": "Blocks Generic ABS", "from": "system", - "setting_id": "QhLaLEkxhvIMa3Ik", - "filament_id": "BSFI004", + "setting_id": "TL1Q1kA4t36GGObG", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Blocks/filament/Blocks Generic ASA.json b/resources/profiles/Blocks/filament/Generic ASA @Blocks.json similarity index 90% rename from resources/profiles/Blocks/filament/Blocks Generic ASA.json rename to resources/profiles/Blocks/filament/Generic ASA @Blocks.json index 5601ef2264..0c1ee32085 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic ASA.json +++ b/resources/profiles/Blocks/filament/Generic ASA @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic ASA", + "name": "Generic ASA @Blocks", "inherits": "fdm_filament_asa", + "renamed_from": "Blocks Generic ASA", "from": "system", - "setting_id": "DcgqA071S6MRVbKI", - "filament_id": "BSFI005", + "setting_id": "xP7cB4RHgbm4cYDD", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Blocks/filament/Blocks Generic ASA-CF.json b/resources/profiles/Blocks/filament/Generic ASA-CF @Blocks.json similarity index 88% rename from resources/profiles/Blocks/filament/Blocks Generic ASA-CF.json rename to resources/profiles/Blocks/filament/Generic ASA-CF @Blocks.json index 6836bee45e..0d9f0aa862 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic ASA-CF.json +++ b/resources/profiles/Blocks/filament/Generic ASA-CF @Blocks.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "Blocks Generic ASA-CF", + "name": "Generic ASA-CF @Blocks", "inherits": "fdm_filament_asa", + "renamed_from": "Blocks Generic ASA-CF", "from": "system", - "setting_id": "FF6D7i492XTrb8AO", - "filament_id": "BSFI010", + "setting_id": "ju4ue7yJoz3ujny6", + "filament_id": "OF53eLVD", "instantiation": "true", + "filament_type": [ + "ASA-CF" + ], "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Blocks/filament/Blocks Generic PA.json b/resources/profiles/Blocks/filament/Generic PA @Blocks.json similarity index 74% rename from resources/profiles/Blocks/filament/Blocks Generic PA.json rename to resources/profiles/Blocks/filament/Generic PA @Blocks.json index 9c385d7cdb..e624226ded 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PA.json +++ b/resources/profiles/Blocks/filament/Generic PA @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PA", + "name": "Generic PA @Blocks", "inherits": "fdm_filament_pa", + "renamed_from": "Blocks Generic PA", "from": "system", - "setting_id": "3L5IYVTlkt8V0EiW", - "filament_id": "BSFI006", + "setting_id": "hL3p8gAeciwDkjNK", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PA-CF.json b/resources/profiles/Blocks/filament/Generic PA-CF @Blocks.json similarity index 91% rename from resources/profiles/Blocks/filament/Blocks Generic PA-CF.json rename to resources/profiles/Blocks/filament/Generic PA-CF @Blocks.json index a145a7f31d..7ec957f6d1 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PA-CF.json +++ b/resources/profiles/Blocks/filament/Generic PA-CF @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PA-CF", + "name": "Generic PA-CF @Blocks", "inherits": "fdm_filament_pa", + "renamed_from": "Blocks Generic PA-CF", "from": "system", - "setting_id": "B254XDRQzysz7YUd", - "filament_id": "BSFI007", + "setting_id": "T6SO0WRdnG6wcyG8", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PC.json b/resources/profiles/Blocks/filament/Generic PC @Blocks.json similarity index 74% rename from resources/profiles/Blocks/filament/Blocks Generic PC.json rename to resources/profiles/Blocks/filament/Generic PC @Blocks.json index 9d4e153f27..7b5df77bc5 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PC.json +++ b/resources/profiles/Blocks/filament/Generic PC @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PC", + "name": "Generic PC @Blocks", "inherits": "fdm_filament_pc", + "renamed_from": "Blocks Generic PC", "from": "system", - "setting_id": "VUPeelf61TmTQrun", - "filament_id": "BSFI008", + "setting_id": "Xhs8PjtmwwVj0ksE", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PETG.json b/resources/profiles/Blocks/filament/Generic PETG @Blocks.json similarity index 91% rename from resources/profiles/Blocks/filament/Blocks Generic PETG.json rename to resources/profiles/Blocks/filament/Generic PETG @Blocks.json index 8bfeaed6b9..45a2a13e9b 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PETG.json +++ b/resources/profiles/Blocks/filament/Generic PETG @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PETG", + "name": "Generic PETG @Blocks", "inherits": "fdm_filament_petg", + "renamed_from": "Blocks Generic PETG", "from": "system", - "setting_id": "FKkbjL1V4ZEjXB0H", - "filament_id": "BSFI002", + "setting_id": "NgzPlYItKHbmGgv3", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PLA.json b/resources/profiles/Blocks/filament/Generic PLA @Blocks.json similarity index 87% rename from resources/profiles/Blocks/filament/Blocks Generic PLA.json rename to resources/profiles/Blocks/filament/Generic PLA @Blocks.json index bc8c34fc26..3a5c942899 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PLA.json +++ b/resources/profiles/Blocks/filament/Generic PLA @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PLA", + "name": "Generic PLA @Blocks", "inherits": "fdm_filament_pla", + "renamed_from": "Blocks Generic PLA", "from": "system", - "setting_id": "N3wDUqmBETfelOoG", - "filament_id": "BSFI001", + "setting_id": "kjhuttx4T8OtTNmV", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PLA-CF.json b/resources/profiles/Blocks/filament/Generic PLA-CF @Blocks.json similarity index 76% rename from resources/profiles/Blocks/filament/Blocks Generic PLA-CF.json rename to resources/profiles/Blocks/filament/Generic PLA-CF @Blocks.json index 5928bc953e..3a3ac5daba 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PLA-CF.json +++ b/resources/profiles/Blocks/filament/Generic PLA-CF @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PLA-CF", + "name": "Generic PLA-CF @Blocks", "inherits": "fdm_filament_pla", + "renamed_from": "Blocks Generic PLA-CF", "from": "system", - "setting_id": "RHKPeXZiv4E2p4lP", - "filament_id": "BSFI010", + "setting_id": "oKUqzwAWMrpiyGLf", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Blocks/filament/Blocks Generic PVA.json b/resources/profiles/Blocks/filament/Generic PVA @Blocks.json similarity index 74% rename from resources/profiles/Blocks/filament/Blocks Generic PVA.json rename to resources/profiles/Blocks/filament/Generic PVA @Blocks.json index becd53db6c..5b6a3ad368 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic PVA.json +++ b/resources/profiles/Blocks/filament/Generic PVA @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic PVA", + "name": "Generic PVA @Blocks", "inherits": "fdm_filament_pva", + "renamed_from": "Blocks Generic PVA", "from": "system", - "setting_id": "J74KgdSzf503Tk9p", - "filament_id": "BSFI009", + "setting_id": "tNw3oe7VovLkgUbB", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Blocks/filament/Blocks Generic TPU.json b/resources/profiles/Blocks/filament/Generic TPU @Blocks.json similarity index 89% rename from resources/profiles/Blocks/filament/Blocks Generic TPU.json rename to resources/profiles/Blocks/filament/Generic TPU @Blocks.json index decdf2eaf1..8b5873a745 100644 --- a/resources/profiles/Blocks/filament/Blocks Generic TPU.json +++ b/resources/profiles/Blocks/filament/Generic TPU @Blocks.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Blocks Generic TPU", + "name": "Generic TPU @Blocks", "inherits": "fdm_filament_tpu", + "renamed_from": "Blocks Generic TPU", "from": "system", - "setting_id": "xFRwN8ZEwEGlLFwo", - "filament_id": "BSFI003", + "setting_id": "6iVYOCZo8ugs4JA0", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "4" diff --git a/resources/profiles/Blocks/machine/BLOCKS Pro S100.json b/resources/profiles/Blocks/machine/BLOCKS Pro S100.json index abd474d3f1..de9ea3756c 100644 --- a/resources/profiles/Blocks/machine/BLOCKS Pro S100.json +++ b/resources/profiles/Blocks/machine/BLOCKS Pro S100.json @@ -8,5 +8,5 @@ "bed_model": "PRO S100 HotBed model.stl", "bed_texture": "PRO S100 HotBed texture.svg", "hotend_model": "BLOCKS PrintCore.stl", - "default_materials": "Blocks Generic PLA;Blocks Generic PETG;Blocks Generic TPU" + "default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks" } diff --git a/resources/profiles/Blocks/machine/BLOCKS RD50 V2.json b/resources/profiles/Blocks/machine/BLOCKS RD50 V2.json index b3b82c876c..76dafd429e 100644 --- a/resources/profiles/Blocks/machine/BLOCKS RD50 V2.json +++ b/resources/profiles/Blocks/machine/BLOCKS RD50 V2.json @@ -8,5 +8,5 @@ "bed_model": "RD50 V2 HotBed model.stl", "bed_texture": "RD50 V2 HotBed texture.svg", "hotend_model": "BLOCKS PrintCore.stl", - "default_materials": "Blocks Generic PLA;Blocks Generic PETG;Blocks Generic TPU" + "default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks" } diff --git a/resources/profiles/Blocks/machine/BLOCKS RF50.json b/resources/profiles/Blocks/machine/BLOCKS RF50.json index acc4e95f63..14ae8bc5f4 100644 --- a/resources/profiles/Blocks/machine/BLOCKS RF50.json +++ b/resources/profiles/Blocks/machine/BLOCKS RF50.json @@ -8,5 +8,5 @@ "bed_model": "RF50 HotBed model.stl", "bed_texture": "RF50 HotBed texture.svg", "hotend_model": "BLOCKS PrintCore.stl", - "default_materials": "Blocks Generic PLA;Blocks Generic PETG;Blocks Generic TPU" + "default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks" } diff --git a/resources/profiles/Blocks/machine/fdm_klipper_common.json b/resources/profiles/Blocks/machine/fdm_klipper_common.json index 7415366d39..1756ac178a 100644 --- a/resources/profiles/Blocks/machine/fdm_klipper_common.json +++ b/resources/profiles/Blocks/machine/fdm_klipper_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "Blocks Generic PLA" + "Generic PLA @Blocks" ], "bed_exclude_area": [ "0x0" diff --git a/resources/profiles/CONSTRUCT3D.json b/resources/profiles/CONSTRUCT3D.json index ba2652f724..efc7c78972 100644 --- a/resources/profiles/CONSTRUCT3D.json +++ b/resources/profiles/CONSTRUCT3D.json @@ -1,6 +1,6 @@ { "name": "CONSTRUCT3D", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Construct3D configurations", "machine_model_list": [ @@ -65,16 +65,16 @@ "sub_path": "filament/fdm_filament_pla.json" }, { - "name": "C1 Generic High Flow PETG", - "sub_path": "filament/C1 Generic High Flow PETG.json" + "name": "Generic High Flow PETG @C1", + "sub_path": "filament/Generic High Flow PETG @C1.json" }, { - "name": "C1 Generic PETG", - "sub_path": "filament/C1 Generic PETG.json" + "name": "Generic PETG @C1", + "sub_path": "filament/Generic PETG @C1.json" }, { - "name": "C1 Generic PLA", - "sub_path": "filament/C1 Generic PLA.json" + "name": "Generic PLA @C1", + "sub_path": "filament/Generic PLA @C1.json" } ], "machine_list": [ diff --git a/resources/profiles/CONSTRUCT3D/filament/C1 Generic High Flow PETG.json b/resources/profiles/CONSTRUCT3D/filament/Generic High Flow PETG @C1.json similarity index 84% rename from resources/profiles/CONSTRUCT3D/filament/C1 Generic High Flow PETG.json rename to resources/profiles/CONSTRUCT3D/filament/Generic High Flow PETG @C1.json index 355637d63c..11a7df0903 100644 --- a/resources/profiles/CONSTRUCT3D/filament/C1 Generic High Flow PETG.json +++ b/resources/profiles/CONSTRUCT3D/filament/Generic High Flow PETG @C1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "C1 Generic High Flow PETG", + "name": "Generic High Flow PETG @C1", "inherits": "fdm_filament_pet", + "renamed_from": "C1 Generic High Flow PETG", "from": "system", - "setting_id": "3IxBZSWFfFGmKAQ7", - "filament_id": "GFG99", + "setting_id": "STRDBlNRWBGfRctE", + "filament_id": "OFNjku08", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/CONSTRUCT3D/filament/C1 Generic PETG.json b/resources/profiles/CONSTRUCT3D/filament/Generic PETG @C1.json similarity index 83% rename from resources/profiles/CONSTRUCT3D/filament/C1 Generic PETG.json rename to resources/profiles/CONSTRUCT3D/filament/Generic PETG @C1.json index 7579260e16..dfb510e993 100644 --- a/resources/profiles/CONSTRUCT3D/filament/C1 Generic PETG.json +++ b/resources/profiles/CONSTRUCT3D/filament/Generic PETG @C1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "C1 Generic PETG", + "name": "Generic PETG @C1", "inherits": "fdm_filament_pet", + "renamed_from": "C1 Generic PETG", "from": "system", - "setting_id": "jZBfhlf6VX5r3KHb", - "filament_id": "GFG99", + "setting_id": "v0b4nWyzRw5z5EfK", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/CONSTRUCT3D/filament/C1 Generic PLA.json b/resources/profiles/CONSTRUCT3D/filament/Generic PLA @C1.json similarity index 75% rename from resources/profiles/CONSTRUCT3D/filament/C1 Generic PLA.json rename to resources/profiles/CONSTRUCT3D/filament/Generic PLA @C1.json index dd50bdd607..4c8a90b1de 100644 --- a/resources/profiles/CONSTRUCT3D/filament/C1 Generic PLA.json +++ b/resources/profiles/CONSTRUCT3D/filament/Generic PLA @C1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "C1 Generic PLA", + "name": "Generic PLA @C1", "inherits": "fdm_filament_pla", + "renamed_from": "C1 Generic PLA", "from": "system", - "setting_id": "Uv3kcMO5qNwkrMPV", - "filament_id": "GFL99", + "setting_id": "mCKOBqN6Y92a9nHV", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/CONSTRUCT3D/machine/Construct 1 XL.json b/resources/profiles/CONSTRUCT3D/machine/Construct 1 XL.json index bee8ab1e73..7d6ad32ce1 100644 --- a/resources/profiles/CONSTRUCT3D/machine/Construct 1 XL.json +++ b/resources/profiles/CONSTRUCT3D/machine/Construct 1 XL.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "CONSTRUCT3D", "bed_model": "construct_1_xl_buildplate_model.stl", - "default_materials": "C1 Generic PLA;C1 Generic PETG;C1 Generic High Flow PETG" + "default_materials": "Generic PLA @C1;Generic PETG @C1;Generic High Flow PETG @C1" } diff --git a/resources/profiles/CONSTRUCT3D/machine/Construct 1.json b/resources/profiles/CONSTRUCT3D/machine/Construct 1.json index 152a1e5bb2..4839166da6 100644 --- a/resources/profiles/CONSTRUCT3D/machine/Construct 1.json +++ b/resources/profiles/CONSTRUCT3D/machine/Construct 1.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "CONSTRUCT3D", "bed_model": "construct_1_buildplate_model.stl", - "default_materials": "C1 Generic PLA;C1 Generic PETG;C1 Generic High Flow PETG" + "default_materials": "Generic PLA @C1;Generic PETG @C1;Generic High Flow PETG @C1" } diff --git a/resources/profiles/Chuanying.json b/resources/profiles/Chuanying.json index 19d5c9b7b5..f32b4f84ae 100644 --- a/resources/profiles/Chuanying.json +++ b/resources/profiles/Chuanying.json @@ -1,7 +1,7 @@ { "name": "Chuanying", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Chuanying configurations", "machine_model_list": [ @@ -46,72 +46,72 @@ ], "filament_list": [ { - "name": "Chuanying Generic ABS", - "sub_path": "filament/Chuanying Generic ABS.json" + "name": "Generic ABS @Chuanying", + "sub_path": "filament/Generic ABS @Chuanying.json" }, { - "name": "Chuanying Generic ASA", - "sub_path": "filament/Chuanying Generic ASA.json" + "name": "Generic ASA @Chuanying", + "sub_path": "filament/Generic ASA @Chuanying.json" }, { - "name": "Chuanying Generic HS PLA", - "sub_path": "filament/Chuanying Generic HS PLA.json" + "name": "Generic HS PLA @Chuanying", + "sub_path": "filament/Generic HS PLA @Chuanying.json" }, { - "name": "Chuanying Generic PETG", - "sub_path": "filament/Chuanying Generic PETG.json" + "name": "Generic PETG @Chuanying", + "sub_path": "filament/Generic PETG @Chuanying.json" }, { - "name": "Chuanying Generic PLA", - "sub_path": "filament/Chuanying Generic PLA.json" + "name": "Generic PLA @Chuanying", + "sub_path": "filament/Generic PLA @Chuanying.json" }, { - "name": "Chuanying Generic PLA-Silk", - "sub_path": "filament/Chuanying Generic PLA-Silk.json" + "name": "Generic PLA-Silk @Chuanying", + "sub_path": "filament/Generic PLA-Silk @Chuanying.json" }, { - "name": "Chuanying ABS @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying ABS @Chuanying X1 0.25 Nozzle.json" + "name": "Generic ABS @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic ABS @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying Generic HIPS", - "sub_path": "filament/Chuanying Generic HIPS.json" + "name": "Generic HIPS @Chuanying", + "sub_path": "filament/Generic HIPS @Chuanying.json" }, { - "name": "Chuanying ASA @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying ASA @Chuanying X1 0.25 Nozzle.json" + "name": "Generic ASA @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic ASA @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying HS PLA @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying HS PLA @Chuanying X1 0.25 Nozzle.json" + "name": "Generic HS PLA @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic HS PLA @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying PETG @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying PETG @Chuanying X1 0.25 Nozzle.json" + "name": "Generic PETG @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic PETG @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying Generic PVA", - "sub_path": "filament/Chuanying Generic PVA.json" + "name": "Generic PVA @Chuanying", + "sub_path": "filament/Generic PVA @Chuanying.json" }, { - "name": "Chuanying PLA @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying PLA @Chuanying X1 0.25 Nozzle.json" + "name": "Generic PLA @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic PLA @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle", - "sub_path": "filament/Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle.json" + "name": "Generic PLA-Silk @Chuanying X1 0.25 Nozzle", + "sub_path": "filament/Generic PLA-Silk @Chuanying X1 0.25 Nozzle.json" }, { - "name": "Chuanying Generic PETG-CF10", - "sub_path": "filament/Chuanying Generic PETG-CF10.json" + "name": "Generic PETG-CF10 @Chuanying", + "sub_path": "filament/Generic PETG-CF10 @Chuanying.json" }, { - "name": "Chuanying Generic PLA-CF10", - "sub_path": "filament/Chuanying Generic PLA-CF10.json" + "name": "Generic PLA-CF10 @Chuanying", + "sub_path": "filament/Generic PLA-CF10 @Chuanying.json" }, { - "name": "Chuanying Generic TPU", - "sub_path": "filament/Chuanying Generic TPU.json" + "name": "Generic TPU @Chuanying", + "sub_path": "filament/Generic TPU @Chuanying.json" } ], "machine_list": [ diff --git a/resources/profiles/Chuanying/filament/Chuanying ABS @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic ABS @Chuanying X1 0.25 Nozzle.json similarity index 56% rename from resources/profiles/Chuanying/filament/Chuanying ABS @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic ABS @Chuanying X1 0.25 Nozzle.json index e8067f4945..f54d17ef0d 100644 --- a/resources/profiles/Chuanying/filament/Chuanying ABS @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic ABS @Chuanying X1 0.25 Nozzle.json @@ -1,16 +1,16 @@ { "type": "filament", - "name": "Chuanying ABS @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic ABS", + "name": "Generic ABS @Chuanying X1 0.25 Nozzle", + "inherits": "Generic ABS @Chuanying", + "renamed_from": "Chuanying ABS @Chuanying X1 0.25 Nozzle;Chuanying ABS Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "VkCgo0e4KR24DX28", - "filament_id": "GFB99", + "setting_id": "uHqfv6eUDzoxEkEj", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying ABS @Chuanying X1 0.25 Nozzle" + "Generic ABS @Chuanying X1 0.25 Nozzle" ], "fan_max_speed": [ "50" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic ABS.json b/resources/profiles/Chuanying/filament/Generic ABS @Chuanying.json similarity index 85% rename from resources/profiles/Chuanying/filament/Chuanying Generic ABS.json rename to resources/profiles/Chuanying/filament/Generic ABS @Chuanying.json index 201155e883..570cd814df 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic ABS.json +++ b/resources/profiles/Chuanying/filament/Generic ABS @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic ABS", + "name": "Generic ABS @Chuanying", "inherits": "fdm_filament_abs", + "renamed_from": "Chuanying Generic ABS", "from": "system", - "setting_id": "XslWGeEo1Okicu28", - "filament_id": "GFB99", + "setting_id": "iOgVkaYF0sixbb9x", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Chuanying/filament/Chuanying ASA @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying X1 0.25 Nozzle.json similarity index 61% rename from resources/profiles/Chuanying/filament/Chuanying ASA @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic ASA @Chuanying X1 0.25 Nozzle.json index 10415dcb72..690f31669a 100644 --- a/resources/profiles/Chuanying/filament/Chuanying ASA @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying X1 0.25 Nozzle.json @@ -1,16 +1,16 @@ { "type": "filament", - "name": "Chuanying ASA @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic ASA", + "name": "Generic ASA @Chuanying X1 0.25 Nozzle", + "inherits": "Generic ASA @Chuanying", + "renamed_from": "Chuanying ASA @Chuanying X1 0.25 Nozzle;Chuanying ASA Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "px1EPCDgOG8eE81V", - "filament_id": "GFL99", + "setting_id": "bVxY01TC9sAM9KQW", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying ASA @Chuanying X1 0.25 Nozzle" + "Generic ASA @Chuanying X1 0.25 Nozzle" ], "fan_max_speed": [ "50" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic ASA.json b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json similarity index 95% rename from resources/profiles/Chuanying/filament/Chuanying Generic ASA.json rename to resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json index b95df151c5..f5cc9c8419 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic ASA.json +++ b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic ASA", + "name": "Generic ASA @Chuanying", "inherits": "fdm_filament_asa", + "renamed_from": "Chuanying Generic ASA", "from": "system", - "setting_id": "wBBQiy8JV2LrnIav", - "filament_id": "GFL99", + "setting_id": "39OBrSE3RugtTPPR", + "filament_id": "OFLPAxz3", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic HIPS.json b/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json similarity index 94% rename from resources/profiles/Chuanying/filament/Chuanying Generic HIPS.json rename to resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json index 1087346c34..4d8edd7298 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic HIPS.json +++ b/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic HIPS", - "inherits": "Chuanying Generic ABS", + "name": "Generic HIPS @Chuanying", + "inherits": "Generic ABS @Chuanying", + "renamed_from": "Chuanying Generic HIPS", "from": "system", - "setting_id": "bBNozld07rP6mV3d", - "filament_id": "GFB99", + "setting_id": "TV3UktlnP0aTLsOZ", + "filament_id": "OFsFon5l", "instantiation": "true", "activate_air_filtration": [ "0" @@ -153,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "Chuanying Generic HIPS" + "Generic HIPS @Chuanying" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Chuanying/filament/Chuanying HS PLA @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying X1 0.25 Nozzle.json similarity index 70% rename from resources/profiles/Chuanying/filament/Chuanying HS PLA @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying X1 0.25 Nozzle.json index e4a7a6eba5..339fae8619 100644 --- a/resources/profiles/Chuanying/filament/Chuanying HS PLA @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying X1 0.25 Nozzle.json @@ -1,16 +1,16 @@ { "type": "filament", - "name": "Chuanying HS PLA @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic HS PLA", + "name": "Generic HS PLA @Chuanying X1 0.25 Nozzle", + "inherits": "Generic HS PLA @Chuanying", + "renamed_from": "Chuanying HS PLA @Chuanying X1 0.25 Nozzle;Chuanying HS PLA Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "CAdli5S8JIFafvRG", - "filament_id": "GFL99", + "setting_id": "gdW1LIVf6BecAtpa", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying HS PLA @Chuanying X1 0.25 Nozzle" + "Generic HS PLA @Chuanying X1 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic HS PLA.json b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json similarity index 96% rename from resources/profiles/Chuanying/filament/Chuanying Generic HS PLA.json rename to resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json index f53cf22703..8b0529814e 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic HS PLA.json +++ b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic HS PLA", + "name": "Generic HS PLA @Chuanying", "inherits": "fdm_filament_pla", + "renamed_from": "Chuanying Generic HS PLA", "from": "system", - "setting_id": "YZT1Uv73b8ArVoX3", - "filament_id": "GFL99", + "setting_id": "uw7SQpFnhFiO8i1N", + "filament_id": "OFvxghTE", "instantiation": "true", "bed_temperature_difference": [ "10" diff --git a/resources/profiles/Chuanying/filament/Chuanying PETG @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic PETG @Chuanying X1 0.25 Nozzle.json similarity index 53% rename from resources/profiles/Chuanying/filament/Chuanying PETG @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic PETG @Chuanying X1 0.25 Nozzle.json index f162434556..88eaf57c01 100644 --- a/resources/profiles/Chuanying/filament/Chuanying PETG @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic PETG @Chuanying X1 0.25 Nozzle.json @@ -1,16 +1,16 @@ { "type": "filament", - "name": "Chuanying PETG @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic PETG", + "name": "Generic PETG @Chuanying X1 0.25 Nozzle", + "inherits": "Generic PETG @Chuanying", + "renamed_from": "Chuanying PETG @Chuanying X1 0.25 Nozzle;Chuanying PETG Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "9xxP8YWj4hnWQoVZ", - "filament_id": "GFG99", + "setting_id": "YQ0HAxEDmMQgqNGY", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying PETG @Chuanying X1 0.25 Nozzle" + "Generic PETG @Chuanying X1 0.25 Nozzle" ], "fan_max_speed": [ "80" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PETG.json b/resources/profiles/Chuanying/filament/Generic PETG @Chuanying.json similarity index 90% rename from resources/profiles/Chuanying/filament/Chuanying Generic PETG.json rename to resources/profiles/Chuanying/filament/Generic PETG @Chuanying.json index a3532b9e5b..ae84fb2982 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PETG.json +++ b/resources/profiles/Chuanying/filament/Generic PETG @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PETG", + "name": "Generic PETG @Chuanying", "inherits": "fdm_filament_pet", + "renamed_from": "Chuanying Generic PETG", "from": "system", - "setting_id": "judDupafROrSnVv8", - "filament_id": "GFG99", + "setting_id": "Mq3uwHDMub81SuRG", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PETG-CF10.json b/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json similarity index 94% rename from resources/profiles/Chuanying/filament/Chuanying Generic PETG-CF10.json rename to resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json index c7b8e6008d..85d42dad84 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PETG-CF10.json +++ b/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PETG-CF10", + "name": "Generic PETG-CF10 @Chuanying", "inherits": "fdm_filament_pet", + "renamed_from": "Chuanying Generic PETG-CF10", "from": "system", - "setting_id": "S2vCGI7sqN8FwodT", - "filament_id": "GFG99", + "setting_id": "Pr70SnbXDjOF9EvU", + "filament_id": "OFO5djrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Chuanying/filament/Chuanying PLA @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic PLA @Chuanying X1 0.25 Nozzle.json similarity index 69% rename from resources/profiles/Chuanying/filament/Chuanying PLA @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic PLA @Chuanying X1 0.25 Nozzle.json index c8ba7cc5e6..cea064f9da 100644 --- a/resources/profiles/Chuanying/filament/Chuanying PLA @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic PLA @Chuanying X1 0.25 Nozzle.json @@ -1,15 +1,16 @@ { "type": "filament", - "name": "Chuanying PLA @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic PLA", + "name": "Generic PLA @Chuanying X1 0.25 Nozzle", + "inherits": "Generic PLA @Chuanying", + "renamed_from": "Chuanying PLA @Chuanying X1 0.25 Nozzle;Chuanying PLA Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "3WDFe1uKTOTiRtPE", + "setting_id": "XsPEVGHYiyAX4YXy", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying PLA @Chuanying X1 0.25 Nozzle" + "Generic PLA @Chuanying X1 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PLA.json b/resources/profiles/Chuanying/filament/Generic PLA @Chuanying.json similarity index 87% rename from resources/profiles/Chuanying/filament/Chuanying Generic PLA.json rename to resources/profiles/Chuanying/filament/Generic PLA @Chuanying.json index 831c14dafe..3fcf7cf873 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PLA.json +++ b/resources/profiles/Chuanying/filament/Generic PLA @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PLA", + "name": "Generic PLA @Chuanying", "inherits": "fdm_filament_pla", + "renamed_from": "Chuanying Generic PLA", "from": "system", - "setting_id": "nnyBm7dlrz3OsVQz", - "filament_id": "GFL99", + "setting_id": "PRk8NAihEzwi5Dqd", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PLA-CF10.json b/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json similarity index 96% rename from resources/profiles/Chuanying/filament/Chuanying Generic PLA-CF10.json rename to resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json index f001e5b391..c76c4de977 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PLA-CF10.json +++ b/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PLA-CF10", + "name": "Generic PLA-CF10 @Chuanying", "inherits": "fdm_filament_pla", + "renamed_from": "Chuanying Generic PLA-CF10", "from": "system", - "setting_id": "EZA59VPwew1cpyUJ", - "filament_id": "GFL99", + "setting_id": "I4FjaXNkWl8Mr4ie", + "filament_id": "OFX2zcrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Chuanying/filament/Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle.json b/resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying X1 0.25 Nozzle.json similarity index 70% rename from resources/profiles/Chuanying/filament/Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle.json rename to resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying X1 0.25 Nozzle.json index 3008059f68..66d057cbf1 100644 --- a/resources/profiles/Chuanying/filament/Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle.json +++ b/resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying X1 0.25 Nozzle.json @@ -1,16 +1,16 @@ { "type": "filament", - "name": "Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle", - "inherits": "Chuanying Generic PLA-Silk", + "name": "Generic PLA-Silk @Chuanying X1 0.25 Nozzle", + "inherits": "Generic PLA-Silk @Chuanying", + "renamed_from": "Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle;Chuanying PLA-SILK Chuanying X1 0.25 Nozzle", "from": "system", - "setting_id": "kph5feBjhPi0oo0G", - "filament_id": "GFL99", + "setting_id": "XaGDKARkuGTTabMN", "instantiation": "true", "compatible_printers": [ "Chuanying X1 0.25 Nozzle" ], "filament_settings_id": [ - "Chuanying PLA-SILK @Chuanying X1 0.25 Nozzle" + "Generic PLA-Silk @Chuanying X1 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PLA-Silk.json b/resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying.json similarity index 87% rename from resources/profiles/Chuanying/filament/Chuanying Generic PLA-Silk.json rename to resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying.json index ca9a1398ed..0739646658 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PLA-Silk.json +++ b/resources/profiles/Chuanying/filament/Generic PLA-Silk @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PLA-Silk", + "name": "Generic PLA-Silk @Chuanying", "inherits": "fdm_filament_pla", + "renamed_from": "Chuanying Generic PLA-Silk", "from": "system", - "setting_id": "M9wzNVOPRQlayQH1", - "filament_id": "GFL99", + "setting_id": "tSCou6bWg8eY1TFn", + "filament_id": "OFi6PfUM", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic PVA.json b/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json similarity index 94% rename from resources/profiles/Chuanying/filament/Chuanying Generic PVA.json rename to resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json index a68d62d485..a38af95d65 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic PVA.json +++ b/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic PVA", - "inherits": "Chuanying Generic PLA", + "name": "Generic PVA @Chuanying", + "inherits": "Generic PLA @Chuanying", + "renamed_from": "Chuanying Generic PVA", "from": "system", - "setting_id": "ePZFnkgBiyFuKvji", - "filament_id": "GFB99", + "setting_id": "UTutnObeQqlZxe0B", + "filament_id": "OFDvXujf", "instantiation": "true", "activate_air_filtration": [ "0" @@ -153,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "Chuanying Generic PVA" + "Generic PVA @Chuanying" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Chuanying/filament/Chuanying Generic TPU.json b/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json similarity index 95% rename from resources/profiles/Chuanying/filament/Chuanying Generic TPU.json rename to resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json index 5ff81a93e1..9bea6c388d 100644 --- a/resources/profiles/Chuanying/filament/Chuanying Generic TPU.json +++ b/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Chuanying Generic TPU", + "name": "Generic TPU @Chuanying", "inherits": "fdm_filament_tpu", + "renamed_from": "Chuanying Generic TPU", "from": "system", - "setting_id": "HYciEf4160uMYGnH", - "filament_id": "GFG99", + "setting_id": "gYsq1HqkgyfmVpvz", + "filament_id": "OFgbpcy9", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Chuanying/machine/Chuanying X1.json b/resources/profiles/Chuanying/machine/Chuanying X1.json index c3debcfa76..9e9c3f015d 100644 --- a/resources/profiles/Chuanying/machine/Chuanying X1.json +++ b/resources/profiles/Chuanying/machine/Chuanying X1.json @@ -8,5 +8,5 @@ "bed_model": "chuanying_x1_buildplate_model.STL", "bed_texture": "chuanying_x1_buildplate_texture.svg", "hotend_model": "chuanying_x1_hotend.STL", - "default_materials": "Chuanying Generic PETG;Chuanying Generic PLA" + "default_materials": "Generic PETG @Chuanying;Generic PLA @Chuanying" } diff --git a/resources/profiles/Chuanying/machine/fdm_chuanying_common.json b/resources/profiles/Chuanying/machine/fdm_chuanying_common.json index 7e6cf041bd..41d7339cf0 100644 --- a/resources/profiles/Chuanying/machine/fdm_chuanying_common.json +++ b/resources/profiles/Chuanying/machine/fdm_chuanying_common.json @@ -124,7 +124,7 @@ "1" ], "default_filament_profile": [ - "Chuanying Generic PLA" + "Generic PLA @Chuanying" ], "default_print_profile": "0.20mm Standard @Chuanying X1", "bed_exclude_area": [ diff --git a/resources/profiles/Chuanying/machine/fdm_klipper_common.json b/resources/profiles/Chuanying/machine/fdm_klipper_common.json index fc879d8977..16fb20b900 100644 --- a/resources/profiles/Chuanying/machine/fdm_klipper_common.json +++ b/resources/profiles/Chuanying/machine/fdm_klipper_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "Chuanying Generic ABS" + "Generic ABS @Chuanying" ], "default_print_profile": "0.20mm Standard @Chuanying X1", "bed_exclude_area": [ diff --git a/resources/profiles/Chuanying/machine/fdm_x1_common.json b/resources/profiles/Chuanying/machine/fdm_x1_common.json index 0d2b163b3b..a32177b1d2 100644 --- a/resources/profiles/Chuanying/machine/fdm_x1_common.json +++ b/resources/profiles/Chuanying/machine/fdm_x1_common.json @@ -93,7 +93,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Chuanying Generic PLA" + "Generic PLA @Chuanying" ], "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", diff --git a/resources/profiles/Co Print.json b/resources/profiles/Co Print.json index 8e7d9ec990..e6f9fe967c 100644 --- a/resources/profiles/Co Print.json +++ b/resources/profiles/Co Print.json @@ -1,6 +1,6 @@ { "name": "Co Print", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "CoPrint configurations", "machine_model_list": [ @@ -37,20 +37,20 @@ "sub_path": "filament/fdm_filament_pla.json" }, { - "name": "CoPrint Generic PLA", - "sub_path": "filament/CoPrint Generic PLA.json" + "name": "Generic PLA @CoPrint", + "sub_path": "filament/Generic PLA @CoPrint.json" }, { - "name": "CoPrint Generic ABS", - "sub_path": "filament/CoPrint Generic ABS.json" + "name": "Generic ABS @CoPrint", + "sub_path": "filament/Generic ABS @CoPrint.json" }, { - "name": "CoPrint Generic PETG", - "sub_path": "filament/CoPrint Generic PETG.json" + "name": "Generic PETG @CoPrint", + "sub_path": "filament/Generic PETG @CoPrint.json" }, { - "name": "CoPrint Generic TPU", - "sub_path": "filament/CoPrint Generic TPU.json" + "name": "Generic TPU @CoPrint", + "sub_path": "filament/Generic TPU @CoPrint.json" } ], "machine_list": [ diff --git a/resources/profiles/Co Print/filament/CoPrint Generic ABS.json b/resources/profiles/Co Print/filament/Generic ABS @CoPrint.json similarity index 86% rename from resources/profiles/Co Print/filament/CoPrint Generic ABS.json rename to resources/profiles/Co Print/filament/Generic ABS @CoPrint.json index 930950d68e..f047afc265 100644 --- a/resources/profiles/Co Print/filament/CoPrint Generic ABS.json +++ b/resources/profiles/Co Print/filament/Generic ABS @CoPrint.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoPrint Generic ABS", - "inherits": "CoPrint Generic PLA", + "name": "Generic ABS @CoPrint", + "inherits": "Generic PLA @CoPrint", + "renamed_from": "CoPrint Generic ABS", "from": "system", - "setting_id": "xW2rHuxT9o7MG8qB", - "filament_id": "GFL99", + "setting_id": "T6mJwfI7n1YDmDzv", + "filament_id": "OFY9muEs", "instantiation": "true", "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Co Print/filament/CoPrint Generic PETG.json b/resources/profiles/Co Print/filament/Generic PETG @CoPrint.json similarity index 79% rename from resources/profiles/Co Print/filament/CoPrint Generic PETG.json rename to resources/profiles/Co Print/filament/Generic PETG @CoPrint.json index f4540a98b2..dd2d03af04 100644 --- a/resources/profiles/Co Print/filament/CoPrint Generic PETG.json +++ b/resources/profiles/Co Print/filament/Generic PETG @CoPrint.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoPrint Generic PETG", - "inherits": "CoPrint Generic PLA", + "name": "Generic PETG @CoPrint", + "inherits": "Generic PLA @CoPrint", + "renamed_from": "CoPrint Generic PETG", "from": "system", - "setting_id": "k4m484S1samBGEVb", - "filament_id": "GFL99", + "setting_id": "99zIrGIXC9RUGDlM", + "filament_id": "OFYPdQJh", "instantiation": "true", "fan_max_speed": [ "90" diff --git a/resources/profiles/Co Print/filament/CoPrint Generic PLA.json b/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json similarity index 68% rename from resources/profiles/Co Print/filament/CoPrint Generic PLA.json rename to resources/profiles/Co Print/filament/Generic PLA @CoPrint.json index c6db574a42..2a8510b3ab 100644 --- a/resources/profiles/Co Print/filament/CoPrint Generic PLA.json +++ b/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "CoPrint Generic PLA", + "name": "Generic PLA @CoPrint", "inherits": "fdm_filament_pla", + "renamed_from": "CoPrint Generic PLA", "from": "system", - "setting_id": "Hv40GsmNozxOJ38T", - "filament_id": "GFL99", + "setting_id": "9tNsM3FhIDgKJ05R", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_load_time": [ "9.75" ], diff --git a/resources/profiles/Co Print/filament/CoPrint Generic TPU.json b/resources/profiles/Co Print/filament/Generic TPU @CoPrint.json similarity index 81% rename from resources/profiles/Co Print/filament/CoPrint Generic TPU.json rename to resources/profiles/Co Print/filament/Generic TPU @CoPrint.json index b4e28ee73b..c25896fe55 100644 --- a/resources/profiles/Co Print/filament/CoPrint Generic TPU.json +++ b/resources/profiles/Co Print/filament/Generic TPU @CoPrint.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoPrint Generic TPU", - "inherits": "CoPrint Generic PLA", + "name": "Generic TPU @CoPrint", + "inherits": "Generic PLA @CoPrint", + "renamed_from": "CoPrint Generic TPU", "from": "system", - "setting_id": "2mWqeih012I5D2CK", - "filament_id": "GFL99", + "setting_id": "0V6UoaCfNUIwYwah", + "filament_id": "OFgbpcy9", "instantiation": "true", "fan_max_speed": [ "80" diff --git a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3 Plus.json b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3 Plus.json index 355ba1eca8..f032c9bf6e 100644 --- a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3 Plus.json +++ b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3 Plus.json @@ -108,7 +108,7 @@ "machine_end_gcode": "end_print", "change_filament_gcode": "FILAMENT_CHANGE LAYER_NUM=[layer_num] NEXT_EXTRUDER=[next_extruder]", "default_filament_profile": [ - "CoPrint Generic PLA" + "Generic PLA @CoPrint" ], "extruder_clearance_radius": [ "65" diff --git a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3.json b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3.json index 52fa36bc5d..a36e231d94 100644 --- a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3.json +++ b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle - Ender-3 V3.json @@ -108,7 +108,7 @@ "machine_end_gcode": "end_print", "change_filament_gcode": "FILAMENT_CHANGE LAYER_NUM=[layer_num] NEXT_EXTRUDER=[next_extruder]", "default_filament_profile": [ - "CoPrint Generic PLA" + "Generic PLA @CoPrint" ], "extruder_clearance_radius": [ "65" diff --git a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle fast.json b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle fast.json index 57f2e507c4..2d206c1734 100644 --- a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle fast.json +++ b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle fast.json @@ -108,7 +108,7 @@ "machine_end_gcode": "end_print", "change_filament_gcode": "FILAMENT_CHANGE LAYER_NUM=[layer_num] NEXT_EXTRUDER=[next_extruder]", "default_filament_profile": [ - "CoPrint Generic PLA" + "Generic PLA @CoPrint" ], "extruder_clearance_radius": [ "65" diff --git a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle.json b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle.json index efa52a34f4..72116fcd70 100644 --- a/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle.json +++ b/resources/profiles/Co Print/machine/Co Print ChromaSet 0.4 nozzle.json @@ -108,7 +108,7 @@ "machine_end_gcode": "end_print", "change_filament_gcode": "FILAMENT_CHANGE LAYER_NUM=[layer_num] NEXT_EXTRUDER=[next_extruder]", "default_filament_profile": [ - "CoPrint Generic PLA" + "Generic PLA @CoPrint" ], "extruder_clearance_radius": [ "65" diff --git a/resources/profiles/Co Print/machine/Co Print ChromaSet.json b/resources/profiles/Co Print/machine/Co Print ChromaSet.json index 883ee91c93..5ce0287757 100644 --- a/resources/profiles/Co Print/machine/Co Print ChromaSet.json +++ b/resources/profiles/Co Print/machine/Co Print ChromaSet.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "Co_Print_ChromaSet_buildplate_texture.svg", "hotend_model": "", - "default_materials": "CoPrint Generic PLA" + "default_materials": "Generic PLA @CoPrint" } diff --git a/resources/profiles/Co Print/machine/fdm_coprint_common.json b/resources/profiles/Co Print/machine/fdm_coprint_common.json index f7911c2a94..ecb6bd1ac2 100644 --- a/resources/profiles/Co Print/machine/fdm_coprint_common.json +++ b/resources/profiles/Co Print/machine/fdm_coprint_common.json @@ -100,7 +100,7 @@ "machine_start_gcode": "start_print EXTRUDER=[initial_extruder] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]", "machine_end_gcode": "end_print", "default_filament_profile": [ - "CoPrint Generic PLA" + "Generic PLA @CoPrint" ], "extruder_clearance_radius": [ "65" diff --git a/resources/profiles/CoLiDo.json b/resources/profiles/CoLiDo.json index 972ffd396b..d0c395b348 100644 --- a/resources/profiles/CoLiDo.json +++ b/resources/profiles/CoLiDo.json @@ -1,6 +1,6 @@ { "name": "CoLiDo", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "CoLiDo configurations", "machine_model_list": [ @@ -189,32 +189,32 @@ "sub_path": "filament/CoLiDo ABS @CoLiDo SR1.json" }, { - "name": "CoLiDo Generic ABS @CoLiDo DIY 4.0", - "sub_path": "filament/CoLiDo Generic ABS @CoLiDo DIY 4.0.json" + "name": "Generic ABS @CoLiDo DIY 4.0", + "sub_path": "filament/Generic ABS @CoLiDo DIY 4.0.json" }, { - "name": "CoLiDo Generic ABS @CoLiDo X16", - "sub_path": "filament/CoLiDo Generic ABS @CoLiDo X16.json" + "name": "Generic ABS @CoLiDo X16", + "sub_path": "filament/Generic ABS @CoLiDo X16.json" }, { - "name": "CoLiDo Generic PETG @CoLiDo DIY 4.0", - "sub_path": "filament/CoLiDo Generic PETG @CoLiDo DIY 4.0.json" + "name": "Generic PETG @CoLiDo DIY 4.0", + "sub_path": "filament/Generic PETG @CoLiDo DIY 4.0.json" }, { - "name": "CoLiDo Generic PETG @CoLiDo X16", - "sub_path": "filament/CoLiDo Generic PETG @CoLiDo X16.json" + "name": "Generic PETG @CoLiDo X16", + "sub_path": "filament/Generic PETG @CoLiDo X16.json" }, { "name": "CoLiDo PETG @CoLiDo SR1", "sub_path": "filament/CoLiDo PETG @CoLiDo SR1.json" }, { - "name": "CoLiDo Generic PLA @CoLiDo DIY 4.0", - "sub_path": "filament/CoLiDo Generic PLA @CoLiDo DIY 4.0.json" + "name": "Generic PLA @CoLiDo DIY 4.0", + "sub_path": "filament/Generic PLA @CoLiDo DIY 4.0.json" }, { - "name": "CoLiDo Generic PLA @CoLiDo X16", - "sub_path": "filament/CoLiDo Generic PLA @CoLiDo X16.json" + "name": "Generic PLA @CoLiDo X16", + "sub_path": "filament/Generic PLA @CoLiDo X16.json" }, { "name": "CoLiDo PLA @CoLiDo SR1", @@ -229,12 +229,12 @@ "sub_path": "filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json" }, { - "name": "CoLiDo Generic TPU @CoLiDo DIY 4.0", - "sub_path": "filament/CoLiDo Generic TPU @CoLiDo DIY 4.0.json" + "name": "Generic TPU @CoLiDo DIY 4.0", + "sub_path": "filament/Generic TPU @CoLiDo DIY 4.0.json" }, { - "name": "CoLiDo Generic TPU @CoLiDo X16", - "sub_path": "filament/CoLiDo Generic TPU @CoLiDo X16.json" + "name": "Generic TPU @CoLiDo X16", + "sub_path": "filament/Generic TPU @CoLiDo X16.json" } ], "machine_list": [ diff --git a/resources/profiles/CoLiDo/filament/CoLiDo ABS @CoLiDo SR1.json b/resources/profiles/CoLiDo/filament/CoLiDo ABS @CoLiDo SR1.json index 55259a5459..25b69d8c2d 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo ABS @CoLiDo SR1.json +++ b/resources/profiles/CoLiDo/filament/CoLiDo ABS @CoLiDo SR1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "ZztaHKdQ4dmOgAXr", - "filament_id": "GFB99", + "filament_id": "OFneOFWe", "instantiation": "true", "filament_vendor": [ "CoLiDo" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo PETG @CoLiDo SR1.json b/resources/profiles/CoLiDo/filament/CoLiDo PETG @CoLiDo SR1.json index 5b93fc1460..0fd7c49f94 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo PETG @CoLiDo SR1.json +++ b/resources/profiles/CoLiDo/filament/CoLiDo PETG @CoLiDo SR1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "z1ffOb3jPP1GVXnD", - "filament_id": "GFG99", + "filament_id": "OF7lwj52", "instantiation": "true", "filament_vendor": [ "CoLiDo" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo PLA @CoLiDo SR1.json b/resources/profiles/CoLiDo/filament/CoLiDo PLA @CoLiDo SR1.json index 40e871c663..374321236c 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo PLA @CoLiDo SR1.json +++ b/resources/profiles/CoLiDo/filament/CoLiDo PLA @CoLiDo SR1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Gj0o6Rmn4qWXDLov", - "filament_id": "GFA99", + "filament_id": "OFm70lLt", "instantiation": "true", "filament_vendor": [ "CoLiDo" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo PLA Silk @CoLiDo SR1.json b/resources/profiles/CoLiDo/filament/CoLiDo PLA Silk @CoLiDo SR1.json index b9a15b3e1b..6d3067d72a 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo PLA Silk @CoLiDo SR1.json +++ b/resources/profiles/CoLiDo/filament/CoLiDo PLA Silk @CoLiDo SR1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "mLgBNw0OzvJSS8IG", - "filament_id": "GFA99", + "filament_id": "OFnSeLHk", "instantiation": "true", "filament_vendor": [ "CoLiDo" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json b/resources/profiles/CoLiDo/filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json index de34110826..c02f7be129 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json +++ b/resources/profiles/CoLiDo/filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "IDGh5vNSqKSOVn3z", - "filament_id": "GFA99", + "filament_id": "OFctg8r1", "instantiation": "true", "filament_vendor": [ "CoLiDo" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo DIY 4.0.json b/resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo DIY 4.0.json similarity index 73% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo DIY 4.0.json rename to resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo DIY 4.0.json index 94c529c9fe..acb6033883 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo DIY 4.0.json +++ b/resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo DIY 4.0.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic ABS @CoLiDo DIY 4.0", + "name": "Generic ABS @CoLiDo DIY 4.0", "inherits": "fdm_filament_abs", + "renamed_from": "CoLiDo Generic ABS @CoLiDo DIY 4.0;CoLiDo Generic ABS CoLiDo DIY 4.0", "from": "system", - "setting_id": "acWqrAFyi2SIkNwa", - "filament_id": "GFB99", + "setting_id": "XLTLGUPGcCZnX5XA", + "filament_id": "OFY9muEs", "instantiation": "true", "fan_max_speed": [ "80" @@ -16,7 +17,7 @@ "16" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "100" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo X16.json b/resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo X16.json similarity index 75% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo X16.json rename to resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo X16.json index 5dc279ffe6..aa567b7ba8 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic ABS @CoLiDo X16.json +++ b/resources/profiles/CoLiDo/filament/Generic ABS @CoLiDo X16.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic ABS @CoLiDo X16", + "name": "Generic ABS @CoLiDo X16", "inherits": "fdm_filament_abs", + "renamed_from": "CoLiDo Generic ABS @CoLiDo X16;CoLiDo Generic ABS CoLiDo X16", "from": "system", - "setting_id": "l44ioMidpUECbGYF", - "filament_id": "GFB99", + "setting_id": "LE7jeYUNsBZEKQpJ", + "filament_id": "OFY9muEs", "instantiation": "true", "fan_max_speed": [ "20" @@ -16,7 +17,7 @@ "16" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "95" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo DIY 4.0.json b/resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo DIY 4.0.json similarity index 84% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo DIY 4.0.json rename to resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo DIY 4.0.json index 1c0751457e..d70dd4d511 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo DIY 4.0.json +++ b/resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo DIY 4.0.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic PETG @CoLiDo DIY 4.0", + "name": "Generic PETG @CoLiDo DIY 4.0", "inherits": "fdm_filament_pet", + "renamed_from": "CoLiDo Generic PETG @CoLiDo DIY 4.0;CoLiDo Generic PETG CoLiDo DIY 4.0", "from": "system", - "setting_id": "IBtIS8bwcIWhiCow", - "filament_id": "GFG99", + "setting_id": "FV2MjDSWlg3kolp3", + "filament_id": "OFYPdQJh", "instantiation": "true", "cool_plate_temp": [ "0" @@ -40,7 +41,7 @@ "; filament start gcode\n" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo X16.json b/resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo X16.json similarity index 85% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo X16.json rename to resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo X16.json index e09df95679..5f68b5600b 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic PETG @CoLiDo X16.json +++ b/resources/profiles/CoLiDo/filament/Generic PETG @CoLiDo X16.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic PETG @CoLiDo X16", + "name": "Generic PETG @CoLiDo X16", "inherits": "fdm_filament_pet", + "renamed_from": "CoLiDo Generic PETG @CoLiDo X16;CoLiDo Generic PETG CoLiDo X16", "from": "system", - "setting_id": "AovAvrEzGiZqFRpc", - "filament_id": "GFG99", + "setting_id": "eX4i0rDwO3rAlQ2y", + "filament_id": "OFYPdQJh", "instantiation": "true", "cool_plate_temp": [ "0" @@ -40,7 +41,7 @@ "; filament start gcode\n" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo DIY 4.0.json b/resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo DIY 4.0.json similarity index 77% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo DIY 4.0.json rename to resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo DIY 4.0.json index 1848216904..9bd8db3357 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo DIY 4.0.json +++ b/resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo DIY 4.0.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic PLA @CoLiDo DIY 4.0", + "name": "Generic PLA @CoLiDo DIY 4.0", "inherits": "fdm_filament_pla", + "renamed_from": "CoLiDo Generic PLA @CoLiDo DIY 4.0;CoLiDo Generic PLA CoLiDo DIY 4.0", "from": "system", - "setting_id": "foEeUk6PK78QXleQ", - "filament_id": "GFA99", + "setting_id": "POF6nKughZF8OsBF", + "filament_id": "OFDSrzZ8", "instantiation": "true", "fan_cooling_layer_time": [ "80" @@ -22,7 +23,7 @@ "19.5" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo X16.json b/resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo X16.json similarity index 78% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo X16.json rename to resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo X16.json index 8d9877cfa3..f437702111 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic PLA @CoLiDo X16.json +++ b/resources/profiles/CoLiDo/filament/Generic PLA @CoLiDo X16.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic PLA @CoLiDo X16", + "name": "Generic PLA @CoLiDo X16", "inherits": "fdm_filament_pla", + "renamed_from": "CoLiDo Generic PLA @CoLiDo X16;CoLiDo Generic PLA CoLiDo X16", "from": "system", - "setting_id": "HY8RFWOKRptC2YVt", - "filament_id": "GFA99", + "setting_id": "38SFNLJEVBeAVL3B", + "filament_id": "OFDSrzZ8", "instantiation": "true", "fan_cooling_layer_time": [ "80" @@ -22,7 +23,7 @@ "12" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo DIY 4.0.json b/resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo DIY 4.0.json similarity index 74% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo DIY 4.0.json rename to resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo DIY 4.0.json index 96912962de..0422f6b4c6 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo DIY 4.0.json +++ b/resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo DIY 4.0.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic TPU @CoLiDo DIY 4.0", + "name": "Generic TPU @CoLiDo DIY 4.0", "inherits": "fdm_filament_tpu", + "renamed_from": "CoLiDo Generic TPU @CoLiDo DIY 4.0;CoLiDo Generic TPU CoLiDo DIY 4.0", "from": "system", - "setting_id": "ZgbaHhRSK8AW38MB", - "filament_id": "GFU99", + "setting_id": "5tJNn6c6RXqJUT2z", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_density": [ "1.22" @@ -16,7 +17,7 @@ "; filament start gcode\n" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "45" diff --git a/resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo X16.json b/resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo X16.json similarity index 76% rename from resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo X16.json rename to resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo X16.json index 3bbea681d1..ccf0d405b1 100644 --- a/resources/profiles/CoLiDo/filament/CoLiDo Generic TPU @CoLiDo X16.json +++ b/resources/profiles/CoLiDo/filament/Generic TPU @CoLiDo X16.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "CoLiDo Generic TPU @CoLiDo X16", + "name": "Generic TPU @CoLiDo X16", "inherits": "fdm_filament_tpu", + "renamed_from": "CoLiDo Generic TPU @CoLiDo X16;CoLiDo Generic TPU CoLiDo X16", "from": "system", - "setting_id": "f6yTiUiYYLckJBTQ", - "filament_id": "GFU99", + "setting_id": "wylEuYSIKlzSVnoQ", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_density": [ "1.22" @@ -16,7 +17,7 @@ "; filament start gcode\n" ], "filament_vendor": [ - "CoLiDo" + "Generic" ], "hot_plate_temp": [ "40" diff --git a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json index 65f2db78eb..8e9b4b34c5 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "CoLiDo Generic PLA @CoLiDo X16" + "Generic PLA @CoLiDo X16" ], "default_print_profile": "0.20mm Standard @CoLiDo X16", "deretraction_speed": [ diff --git a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2.json b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2.json index 4c18236e07..6f6985d46e 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "CoLiDo Generic PLA @CoLiDo X16;CoLiDo Generic ABS @CoLiDo X16;CoLiDo Generic PETG @CoLiDo X16;CoLiDo Generic TPU @CoLiDo X16" + "default_materials": "Generic PLA @CoLiDo X16;Generic ABS @CoLiDo X16;Generic PETG @CoLiDo X16;Generic TPU @CoLiDo X16" } diff --git a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json index d0e1a2abc6..bbecec1d48 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "CoLiDo Generic PLA @CoLiDo DIY 4.0" + "Generic PLA @CoLiDo DIY 4.0" ], "default_print_profile": "0.20mm Standard @CoLiDo DIY 4.0", "deretraction_speed": [ diff --git a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0.json b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0.json index f774672974..693937a8cb 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "CoLiDo Generic PLA @CoLiDo DIY 4.0;CoLiDo Generic ABS @CoLiDo DIY 4.0;CoLiDo Generic PETG @CoLiDo DIY 4.0;CoLiDo Generic TPU @CoLiDo DIY 4.0" + "default_materials": "Generic PLA @CoLiDo DIY 4.0;Generic ABS @CoLiDo DIY 4.0;Generic PETG @CoLiDo DIY 4.0;Generic TPU @CoLiDo DIY 4.0" } diff --git a/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json index cfdfd38571..228580eece 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "CoLiDo Generic PLA @CoLiDo X16" + "Generic PLA @CoLiDo X16" ], "default_print_profile": "0.20mm Standard @CoLiDo X16", "deretraction_speed": [ diff --git a/resources/profiles/CoLiDo/machine/CoLiDo X16.json b/resources/profiles/CoLiDo/machine/CoLiDo X16.json index e95b6ea56b..e1633e083f 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo X16.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo X16.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "CoLiDo Generic PLA @CoLiDo X16;CoLiDo Generic ABS @CoLiDo X16;CoLiDo Generic PETG @CoLiDo X16;CoLiDo Generic TPU @CoLiDo X16" + "default_materials": "Generic PLA @CoLiDo X16;Generic ABS @CoLiDo X16;Generic PETG @CoLiDo X16;Generic TPU @CoLiDo X16" } diff --git a/resources/profiles/Comgrow.json b/resources/profiles/Comgrow.json index da7d0e29f6..d506431ce8 100644 --- a/resources/profiles/Comgrow.json +++ b/resources/profiles/Comgrow.json @@ -1,6 +1,6 @@ { "name": "Comgrow", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "Comgrow configurations", "machine_model_list": [ @@ -105,20 +105,20 @@ "sub_path": "filament/fdm_filament_pla.json" }, { - "name": "Comgrow Generic ABS", - "sub_path": "filament/Comgrow Generic ABS.json" + "name": "Generic ABS @Comgrow", + "sub_path": "filament/Generic ABS @Comgrow.json" }, { - "name": "Comgrow Generic PETG", - "sub_path": "filament/Comgrow Generic PETG.json" + "name": "Generic PETG @Comgrow", + "sub_path": "filament/Generic PETG @Comgrow.json" }, { - "name": "Comgrow Generic PLA", - "sub_path": "filament/Comgrow Generic PLA.json" + "name": "Generic PLA @Comgrow", + "sub_path": "filament/Generic PLA @Comgrow.json" }, { - "name": "Comgrow T300 PLA", - "sub_path": "filament/Comgrow T300 PLA.json" + "name": "Generic PLA @Comgrow T300", + "sub_path": "filament/Generic PLA @Comgrow T300.json" } ], "machine_list": [ diff --git a/resources/profiles/Comgrow/filament/Comgrow Generic ABS.json b/resources/profiles/Comgrow/filament/Generic ABS @Comgrow.json similarity index 72% rename from resources/profiles/Comgrow/filament/Comgrow Generic ABS.json rename to resources/profiles/Comgrow/filament/Generic ABS @Comgrow.json index 0dbfbdf5af..0494418d88 100644 --- a/resources/profiles/Comgrow/filament/Comgrow Generic ABS.json +++ b/resources/profiles/Comgrow/filament/Generic ABS @Comgrow.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Comgrow Generic ABS", + "name": "Generic ABS @Comgrow", "inherits": "fdm_filament_abs", + "renamed_from": "Comgrow Generic ABS", "from": "system", - "setting_id": "7xmGiJHgiD5KKTXt", - "filament_id": "GFB99", + "setting_id": "jprGDn9oZEZu4N97", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Comgrow/filament/Comgrow Generic PETG.json b/resources/profiles/Comgrow/filament/Generic PETG @Comgrow.json similarity index 85% rename from resources/profiles/Comgrow/filament/Comgrow Generic PETG.json rename to resources/profiles/Comgrow/filament/Generic PETG @Comgrow.json index 18f1ea232a..12b29d0b1d 100644 --- a/resources/profiles/Comgrow/filament/Comgrow Generic PETG.json +++ b/resources/profiles/Comgrow/filament/Generic PETG @Comgrow.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Comgrow Generic PETG", + "name": "Generic PETG @Comgrow", "inherits": "fdm_filament_pet", + "renamed_from": "Comgrow Generic PETG", "from": "system", - "setting_id": "FJjkU2RhAZD10Cw8", - "filament_id": "GFG99", + "setting_id": "xi0S7KdXD7lwr3H8", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Comgrow/filament/Comgrow T300 PLA.json b/resources/profiles/Comgrow/filament/Generic PLA @Comgrow T300.json similarity index 82% rename from resources/profiles/Comgrow/filament/Comgrow T300 PLA.json rename to resources/profiles/Comgrow/filament/Generic PLA @Comgrow T300.json index e0785fd57f..bde24b8ba0 100644 --- a/resources/profiles/Comgrow/filament/Comgrow T300 PLA.json +++ b/resources/profiles/Comgrow/filament/Generic PLA @Comgrow T300.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Comgrow T300 PLA", - "inherits": "Comgrow Generic PLA", + "name": "Generic PLA @Comgrow T300", + "inherits": "Generic PLA @Comgrow", + "renamed_from": "Comgrow T300 PLA", "from": "system", - "setting_id": "TnHaf2TSHVfuwbVg", - "filament_id": "GFL99", + "setting_id": "3N6gPGkzpE9CvkVz", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Comgrow/filament/Comgrow Generic PLA.json b/resources/profiles/Comgrow/filament/Generic PLA @Comgrow.json similarity index 73% rename from resources/profiles/Comgrow/filament/Comgrow Generic PLA.json rename to resources/profiles/Comgrow/filament/Generic PLA @Comgrow.json index d3aed1e46d..21b8e19d42 100644 --- a/resources/profiles/Comgrow/filament/Comgrow Generic PLA.json +++ b/resources/profiles/Comgrow/filament/Generic PLA @Comgrow.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Comgrow Generic PLA", + "name": "Generic PLA @Comgrow", "inherits": "fdm_filament_pla", + "renamed_from": "Comgrow Generic PLA", "from": "system", - "setting_id": "sGAn6RP69saYSqcY", - "filament_id": "GFL99", + "setting_id": "oxIMSlkJ8C40mJIv", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Comgrow/machine/Comgrow T300.json b/resources/profiles/Comgrow/machine/Comgrow T300.json index 41c94aa193..558c4338b6 100644 --- a/resources/profiles/Comgrow/machine/Comgrow T300.json +++ b/resources/profiles/Comgrow/machine/Comgrow T300.json @@ -8,5 +8,5 @@ "bed_model": "comgrow_t300_buildplate_model.stl", "bed_texture": "comgrow_t300_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Comgrow T300 PLA" + "default_materials": "Generic PLA @Comgrow T300" } diff --git a/resources/profiles/Comgrow/machine/Comgrow T500.json b/resources/profiles/Comgrow/machine/Comgrow T500.json index e7945de67a..6714a5a4b0 100644 --- a/resources/profiles/Comgrow/machine/Comgrow T500.json +++ b/resources/profiles/Comgrow/machine/Comgrow T500.json @@ -8,5 +8,5 @@ "bed_model": "comgrow_t500_buildplate_model.stl", "bed_texture": "comgrow_t500_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Comgrow Generic PLA;Comgrow Generic PETG;Comgrow Generic ABS" + "default_materials": "Generic PLA @Comgrow;Generic PETG @Comgrow;Generic ABS @Comgrow" } diff --git a/resources/profiles/Comgrow/machine/fdm_comgrow_common.json b/resources/profiles/Comgrow/machine/fdm_comgrow_common.json index b256b09306..ef8ce3ba93 100644 --- a/resources/profiles/Comgrow/machine/fdm_comgrow_common.json +++ b/resources/profiles/Comgrow/machine/fdm_comgrow_common.json @@ -131,7 +131,7 @@ "thumbnails_format": "PNG", "nozzle_type": "hardened_steel", "default_filament_profile": [ - "Comgrow Generic PETG" + "Generic PETG @Comgrow" ], "default_print_profile": "0.20mm Standard @Comgrow T500", "bed_exclude_area": [ diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 077ee827e5..23b8b3799b 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1,6 +1,6 @@ { "name": "Creality", - "version": "02.03.02.76", + "version": "02.03.02.77", "force_update": "0", "description": "Creality configurations", "machine_model_list": [ @@ -1633,28 +1633,28 @@ "sub_path": "filament/fdm_filament_common.json" }, { - "name": "Creality Generic ABS @Ender-5Max-all", - "sub_path": "filament/Creality Generic ABS @Ender-5Max-all.json" + "name": "Generic ABS @Creality Ender-5Max-all", + "sub_path": "filament/Generic ABS @Creality Ender-5Max-all.json" }, { - "name": "Creality Generic ASA @Ender-5Max-all", - "sub_path": "filament/Creality Generic ASA @Ender-5Max-all.json" + "name": "Generic ASA @Creality Ender-5Max-all", + "sub_path": "filament/Generic ASA @Creality Ender-5Max-all.json" }, { - "name": "Creality Generic PA @Ender-5Max-all", - "sub_path": "filament/Creality Generic PA @Ender-5Max-all.json" + "name": "Generic PA @Creality Ender-5Max-all", + "sub_path": "filament/Generic PA @Creality Ender-5Max-all.json" }, { - "name": "Creality Generic PETG @Ender-5Max-all", - "sub_path": "filament/Creality Generic PETG @Ender-5Max-all.json" + "name": "Generic PETG @Creality Ender-5Max-all", + "sub_path": "filament/Generic PETG @Creality Ender-5Max-all.json" }, { - "name": "Creality Generic PLA @Ender-5Max-all", - "sub_path": "filament/Creality Generic PLA @Ender-5Max-all.json" + "name": "Generic PLA @Creality Ender-5Max-all", + "sub_path": "filament/Generic PLA @Creality Ender-5Max-all.json" }, { - "name": "Creality Generic TPU @Ender-5Max-all", - "sub_path": "filament/Creality Generic TPU @Ender-5Max-all.json" + "name": "Generic TPU @Creality Ender-5Max-all", + "sub_path": "filament/Generic TPU @Creality Ender-5Max-all.json" }, { "name": "Creality Hyper ABS @Ender-5Max-all", @@ -1701,212 +1701,212 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Creality Generic ABS", - "sub_path": "filament/Creality Generic ABS.json" + "name": "Generic ABS @Creality", + "sub_path": "filament/Generic ABS @Creality.json" }, { - "name": "Creality Generic ASA", - "sub_path": "filament/Creality Generic ASA.json" + "name": "Generic ASA @Creality", + "sub_path": "filament/Generic ASA @Creality.json" }, { - "name": "Creality Generic PA-CF", - "sub_path": "filament/Creality Generic PA-CF.json" + "name": "Generic PA-CF @Creality", + "sub_path": "filament/Generic PA-CF @Creality.json" }, { - "name": "Creality Generic PC", - "sub_path": "filament/Creality Generic PC.json" + "name": "Generic PC @Creality", + "sub_path": "filament/Generic PC @Creality.json" }, { - "name": "Creality Generic PETG", - "sub_path": "filament/Creality Generic PETG.json" + "name": "Generic PETG @Creality", + "sub_path": "filament/Generic PETG @Creality.json" }, { - "name": "Creality Generic PLA", - "sub_path": "filament/Creality Generic PLA.json" + "name": "Generic PLA @Creality", + "sub_path": "filament/Generic PLA @Creality.json" }, { - "name": "Creality Generic PLA-CF", - "sub_path": "filament/Creality Generic PLA-CF.json" + "name": "Generic PLA-CF @Creality", + "sub_path": "filament/Generic PLA-CF @Creality.json" }, { - "name": "Creality HF Generic PLA", - "sub_path": "filament/Creality HF Generic PLA.json" + "name": "Generic PLA HF @Creality", + "sub_path": "filament/Generic PLA HF @Creality.json" }, { - "name": "Creality HF Generic Speed PLA", - "sub_path": "filament/Creality HF Generic Speed PLA.json" + "name": "Generic Speed PLA @Creality HF", + "sub_path": "filament/Generic Speed PLA @Creality HF.json" }, { - "name": "Creality Generic TPU", - "sub_path": "filament/Creality Generic TPU.json" + "name": "Generic TPU @Creality", + "sub_path": "filament/Generic TPU @Creality.json" }, { - "name": "Creality Generic ABS @Ender-3V3-all", - "sub_path": "filament/Creality Generic ABS @Ender-3V3-all.json" + "name": "Generic ABS @Creality Ender-3V3-all", + "sub_path": "filament/Generic ABS @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic ABS @Hi-all", - "sub_path": "filament/Creality Generic ABS @Hi-all.json" + "name": "Generic ABS @Creality Hi-all", + "sub_path": "filament/Generic ABS @Creality Hi-all.json" }, { - "name": "Creality Generic ABS @K1-all", - "sub_path": "filament/Creality Generic ABS @K1-all.json" + "name": "Generic ABS @Creality K1-all", + "sub_path": "filament/Generic ABS @Creality K1-all.json" }, { - "name": "Creality Generic ABS @K2-all", - "sub_path": "filament/Creality Generic ABS @K2-all.json" + "name": "Generic ABS @Creality K2-all", + "sub_path": "filament/Generic ABS @Creality K2-all.json" }, { - "name": "Creality Generic ASA @Ender-3V3-all", - "sub_path": "filament/Creality Generic ASA @Ender-3V3-all.json" + "name": "Generic ASA @Creality Ender-3V3-all", + "sub_path": "filament/Generic ASA @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic ASA @Hi-all", - "sub_path": "filament/Creality Generic ASA @Hi-all.json" + "name": "Generic ASA @Creality Hi-all", + "sub_path": "filament/Generic ASA @Creality Hi-all.json" }, { - "name": "Creality Generic ASA @K1-all", - "sub_path": "filament/Creality Generic ASA @K1-all.json" + "name": "Generic ASA @Creality K1-all", + "sub_path": "filament/Generic ASA @Creality K1-all.json" }, { - "name": "Creality Generic ASA @K2-all", - "sub_path": "filament/Creality Generic ASA @K2-all.json" + "name": "Generic ASA @Creality K2-all", + "sub_path": "filament/Generic ASA @Creality K2-all.json" }, { - "name": "Creality Generic PA-CF @Ender-3V3-all", - "sub_path": "filament/Creality Generic PA-CF @Ender-3V3-all.json" + "name": "Generic PA-CF @Creality Ender-3V3-all", + "sub_path": "filament/Generic PA-CF @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PA-CF @K1-all", - "sub_path": "filament/Creality Generic PA-CF @K1-all.json" + "name": "Generic PA-CF @Creality K1-all", + "sub_path": "filament/Generic PA-CF @Creality K1-all.json" }, { - "name": "Creality Generic PA-CF @K2-all", - "sub_path": "filament/Creality Generic PA-CF @K2-all.json" + "name": "Generic PA-CF @Creality K2-all", + "sub_path": "filament/Generic PA-CF @Creality K2-all.json" }, { - "name": "Creality Generic PC @K1-all", - "sub_path": "filament/Creality Generic PC @K1-all.json" + "name": "Generic PC @Creality K1-all", + "sub_path": "filament/Generic PC @Creality K1-all.json" }, { - "name": "Creality Generic PETG @Ender-3V3-all", - "sub_path": "filament/Creality Generic PETG @Ender-3V3-all.json" + "name": "Generic PETG @Creality Ender-3V3-all", + "sub_path": "filament/Generic PETG @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PETG @Hi-all", - "sub_path": "filament/Creality Generic PETG @Hi-all.json" + "name": "Generic PETG @Creality Hi-all", + "sub_path": "filament/Generic PETG @Creality Hi-all.json" }, { - "name": "Creality Generic PETG @K1-all", - "sub_path": "filament/Creality Generic PETG @K1-all.json" + "name": "Generic PETG @Creality K1-all", + "sub_path": "filament/Generic PETG @Creality K1-all.json" }, { - "name": "Creality Generic PETG @K2-all", - "sub_path": "filament/Creality Generic PETG @K2-all.json" + "name": "Generic PETG @Creality K2-all", + "sub_path": "filament/Generic PETG @Creality K2-all.json" }, { - "name": "Creality Generic PLA @Ender-3V3-all", - "sub_path": "filament/Creality Generic PLA @Ender-3V3-all.json" + "name": "Generic PLA @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PLA @Hi-all", - "sub_path": "filament/Creality Generic PLA @Hi-all.json" + "name": "Generic PLA @Creality Hi-all", + "sub_path": "filament/Generic PLA @Creality Hi-all.json" }, { - "name": "Creality Generic PLA @K1-all", - "sub_path": "filament/Creality Generic PLA @K1-all.json" + "name": "Generic PLA @Creality K1-all", + "sub_path": "filament/Generic PLA @Creality K1-all.json" }, { - "name": "Creality Generic PLA @K2-all", - "sub_path": "filament/Creality Generic PLA @K2-all.json" + "name": "Generic PLA @Creality K2-all", + "sub_path": "filament/Generic PLA @Creality K2-all.json" }, { - "name": "Creality Generic PLA-CF @Hi-all", - "sub_path": "filament/Creality Generic PLA-CF @Hi-all.json" + "name": "Generic PLA-CF @Creality Hi-all", + "sub_path": "filament/Generic PLA-CF @Creality Hi-all.json" }, { - "name": "Creality Generic PLA-CF @K1-all", - "sub_path": "filament/Creality Generic PLA-CF @K1-all.json" + "name": "Generic PLA-CF @Creality K1-all", + "sub_path": "filament/Generic PLA-CF @Creality K1-all.json" }, { - "name": "Creality Generic PLA-CF @K2-all", - "sub_path": "filament/Creality Generic PLA-CF @K2-all.json" + "name": "Generic PLA-CF @Creality K2-all", + "sub_path": "filament/Generic PLA-CF @Creality K2-all.json" }, { - "name": "Creality Generic TPU @Ender-3V3-all", - "sub_path": "filament/Creality Generic TPU @Ender-3V3-all.json" + "name": "Generic TPU @Creality Ender-3V3-all", + "sub_path": "filament/Generic TPU @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic TPU @Hi-all", - "sub_path": "filament/Creality Generic TPU @Hi-all.json" + "name": "Generic TPU @Creality Hi-all", + "sub_path": "filament/Generic TPU @Creality Hi-all.json" }, { - "name": "Creality Generic TPU @K1-all", - "sub_path": "filament/Creality Generic TPU @K1-all.json" + "name": "Generic TPU @Creality K1-all", + "sub_path": "filament/Generic TPU @Creality K1-all.json" }, { - "name": "Creality Generic TPU @K2-all", - "sub_path": "filament/Creality Generic TPU @K2-all.json" + "name": "Generic TPU @Creality K2-all", + "sub_path": "filament/Generic TPU @Creality K2-all.json" }, { - "name": "Creality Generic ASA-CF @Hi-all", - "sub_path": "filament/Creality Generic ASA-CF @Hi-all.json" + "name": "Generic ASA-CF @Creality Hi-all", + "sub_path": "filament/Generic ASA-CF @Creality Hi-all.json" }, { - "name": "Creality Generic PETG-CF @Hi-all", - "sub_path": "filament/Creality Generic PETG-CF @Hi-all.json" + "name": "Generic PETG-CF @Creality Hi-all", + "sub_path": "filament/Generic PETG-CF @Creality Hi-all.json" }, { - "name": "Creality Generic PLA High Speed @Ender-3V3-all", - "sub_path": "filament/Creality Generic PLA High Speed @Ender-3V3-all.json" + "name": "Generic PLA High Speed @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA High Speed @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PLA Matte @Ender-3V3-all", - "sub_path": "filament/Creality Generic PLA Matte @Ender-3V3-all.json" + "name": "Generic PLA Matte @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA Matte @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PLA Silk @Ender-3V3-all", - "sub_path": "filament/Creality Generic PLA Silk @Ender-3V3-all.json" + "name": "Generic PLA Silk @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA Silk @Creality Ender-3V3-all.json" }, { - "name": "Creality Generic PLA High Speed @Hi-all", - "sub_path": "filament/Creality Generic PLA High Speed @Hi-all.json" + "name": "Generic PLA High Speed @Creality Hi-all", + "sub_path": "filament/Generic PLA High Speed @Creality Hi-all.json" }, { - "name": "Creality Generic PLA Matte @Hi-all", - "sub_path": "filament/Creality Generic PLA Matte @Hi-all.json" + "name": "Generic PLA Matte @Creality Hi-all", + "sub_path": "filament/Generic PLA Matte @Creality Hi-all.json" }, { - "name": "Creality Generic PLA Silk @Hi-all", - "sub_path": "filament/Creality Generic PLA Silk @Hi-all.json" + "name": "Generic PLA Silk @Creality Hi-all", + "sub_path": "filament/Generic PLA Silk @Creality Hi-all.json" }, { - "name": "Creality Generic PLA Wood @Hi-all", - "sub_path": "filament/Creality Generic PLA Wood @Hi-all.json" + "name": "Generic PLA Wood @Creality Hi-all", + "sub_path": "filament/Generic PLA Wood @Creality Hi-all.json" }, { - "name": "Creality Generic PLA High Speed @K1-all", - "sub_path": "filament/Creality Generic PLA High Speed @K1-all.json" + "name": "Generic PLA High Speed @Creality K1-all", + "sub_path": "filament/Generic PLA High Speed @Creality K1-all.json" }, { - "name": "Creality Generic PLA Matte @K1-all", - "sub_path": "filament/Creality Generic PLA Matte @K1-all.json" + "name": "Generic PLA Matte @Creality K1-all", + "sub_path": "filament/Generic PLA Matte @Creality K1-all.json" }, { - "name": "Creality Generic PLA Silk @K1-all", - "sub_path": "filament/Creality Generic PLA Silk @K1-all.json" + "name": "Generic PLA Silk @Creality K1-all", + "sub_path": "filament/Generic PLA Silk @Creality K1-all.json" }, { - "name": "Creality Generic PLA High Speed @K2-all", - "sub_path": "filament/Creality Generic PLA High Speed @K2-all.json" + "name": "Generic PLA High Speed @Creality K2-all", + "sub_path": "filament/Generic PLA High Speed @Creality K2-all.json" }, { - "name": "Creality Generic PLA Matte @K2-all", - "sub_path": "filament/Creality Generic PLA Matte @K2-all.json" + "name": "Generic PLA Matte @Creality K2-all", + "sub_path": "filament/Generic PLA Matte @Creality K2-all.json" }, { - "name": "Creality Generic PLA Silk @K2-all", - "sub_path": "filament/Creality Generic PLA Silk @K2-all.json" + "name": "Generic PLA Silk @Creality K2-all", + "sub_path": "filament/Generic PLA Silk @Creality K2-all.json" }, { "name": "fdm_filament_pp", diff --git a/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json index 33b6514886..faa9404b3b 100644 --- a/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json @@ -173,5 +173,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @Hi-all.json b/resources/profiles/Creality/filament/CR-ABS @Hi-all.json index e4620945d8..10c1cce09d 100644 --- a/resources/profiles/Creality/filament/CR-ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @Hi-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json index 070110cef4..12afdde3cd 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json index 1d7cd3dade..00340895f4 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json index f6ea93b388..d80c98423f 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1C-all.json index d592d9d18f..f41b1bb940 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json index a0451ea1ba..f91677ab31 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json index 6f3bbe777e..b83d103747 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json index 55a2fe9a80..d807936bfc 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json @@ -157,5 +157,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json index cea39dba0e..b6334a93b6 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json @@ -161,5 +161,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json index 8edabb85be..f49bf5dd93 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json @@ -175,5 +175,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-ABS @K2-all.json b/resources/profiles/Creality/filament/CR-ABS @K2-all.json index ec6591b352..d0f92634b1 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2-all.json @@ -159,5 +159,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "07001" + "filament_id": "OFGwZmgS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json index cc25eecbca..bc9719ad07 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json @@ -187,5 +187,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "11001" + "filament_id": "OFvLppPU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json index 9782134aaf..bf9ce0c9e1 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json @@ -188,5 +188,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "11001" + "filament_id": "OFvLppPU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json index 8c1c7a27c6..e2a7ef32fa 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json @@ -188,5 +188,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "11001" + "filament_id": "OFvLppPU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json index 7be6522dd1..48747723f0 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json @@ -188,5 +188,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "11001" + "filament_id": "OFvLppPU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json index 7466949b1a..d665bb8d16 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json @@ -194,5 +194,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "11001" + "filament_id": "OFvLppPU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json index ded5f2b093..bfa6bd0bc7 100644 --- a/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @Hi-all.json b/resources/profiles/Creality/filament/CR-PETG @Hi-all.json index 6e8dde0750..4b3ab33892 100644 --- a/resources/profiles/Creality/filament/CR-PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @Hi-all.json @@ -148,5 +148,5 @@ "Creality Hi 0.6 nozzle", "Creality Hi 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json index 65165f30ea..bc597f92b3 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json index fa3c9922d0..1c92de9916 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json index a388228d10..be3983b772 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1C-all.json index 57482693fa..2829598e5a 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1C-all.json @@ -157,5 +157,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json index 222a850feb..a6ee2af473 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json index 38be118853..d05baf33af 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json index 0c9fcef567..ead310f41c 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json @@ -142,5 +142,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json index ec8cb70475..b73011595f 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json @@ -154,5 +154,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json index e03a34d210..2137f18ef6 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @K2-all.json b/resources/profiles/Creality/filament/CR-PETG @K2-all.json index 3c328bf7ef..16bd7c7053 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2-all.json @@ -154,5 +154,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json index 6bbbc65e9f..befe270b95 100644 --- a/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json @@ -135,5 +135,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "06001" + "filament_id": "OF3WQaKK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json index 175f304ef7..83548daafd 100644 --- a/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @Hi-all.json b/resources/profiles/Creality/filament/CR-PLA @Hi-all.json index dd543fda9a..0dc26b51ba 100644 --- a/resources/profiles/Creality/filament/CR-PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @Hi-all.json @@ -137,5 +137,5 @@ "Creality Hi 0.2 nozzle", "Creality Hi 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json index 6fd4e736e7..84fb331f5b 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json index 0b31dd3075..1f5d2b746a 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json index 3abde8df57..f8517e48b5 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1C-all.json index d98582cf9c..092a18533d 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json index e8a7ab0ad6..e564114150 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json index 722c4978c2..2796306e7f 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json index 172d39a11b..a175fcdb46 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json @@ -154,5 +154,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json index fff8741bec..b30c6e90fe 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json index cbb2931fbd..4de70e5062 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @K2-all.json b/resources/profiles/Creality/filament/CR-PLA @K2-all.json index 75c085137d..26a62766b0 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json index 4727ca270a..ad5aad1c66 100644 --- a/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "04001" + "filament_id": "OFp4ETDP" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json index 18f928308c..cfc58c9cf8 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "13001" + "filament_id": "OFrM4hdm" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json index 071cdb3945..e6eaf070f8 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "13001" + "filament_id": "OFrM4hdm" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json index 85bdd7bb41..2e369e8a3c 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "13001" + "filament_id": "OFrM4hdm" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json index 5118f3b015..47bfd16093 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "13001" + "filament_id": "OFrM4hdm" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json index f3efa4d2ac..b7fb77695e 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "13001" + "filament_id": "OFrM4hdm" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json index b84b651e68..ee3510a9cc 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json index 12834e2b63..22d113814a 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json index 4944e61627..59bf2e48e6 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json index 3c288db1e6..4a3a27bfb5 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json index cb2e84fa5b..5b3aaccd1f 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json @@ -154,5 +154,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json index c320654960..c2dbe07744 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json index f0d35f90da..98a41262c4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json index b2cf047a8a..759d5cbd88 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "15001" + "filament_id": "OFgpQwkk" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json index f341ed0ee4..1ed05bed21 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json index 5f94d3a21b..80373199ad 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json index 68c02594da..ac4a9fc0ff 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json index c19a940780..cd8ea92f5a 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json index 20477243e6..1779ce9a54 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json index e62afb4ad3..ebfe70bac1 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json @@ -157,5 +157,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json index 62ab04db20..90436b9e4b 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json index 0b5efb1f62..b2bc9f1bc4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json index 23fd3380c4..5cf37492a4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json @@ -166,5 +166,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "14001" + "filament_id": "OFM0xjBG" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json index 0b6c2422b3..494d7245c9 100644 --- a/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @Hi-all.json b/resources/profiles/Creality/filament/CR-Silk @Hi-all.json index 838ffa205c..497ddcd169 100644 --- a/resources/profiles/Creality/filament/CR-Silk @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @Hi-all.json @@ -141,5 +141,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json index ef4503c7f0..bffe643c8c 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json index 6261b0607b..39ba90b647 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json @@ -143,5 +143,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json index a5e4bf6b40..33b0ddc999 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json @@ -143,5 +143,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1C-all.json index ce4e3be3ee..7ba2624bae 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1C-all.json @@ -158,5 +158,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json index c44216537a..ddbf57b5f2 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json index 164cadd6cd..3e0e45cd87 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json index 83927ba13b..a2320f3f4e 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json @@ -163,5 +163,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json index 401753cdbd..4c1f433c61 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json index 2151efcec7..9c1415001b 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @K2-all.json b/resources/profiles/Creality/filament/CR-Silk @K2-all.json index dc5301be79..97e5d7da31 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json index 3e62f7680c..11a92b0357 100644 --- a/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json @@ -170,5 +170,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "05001" + "filament_id": "OF3OMgrI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json index d27ed62681..8ad140c757 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K1C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1C-all.json index 490e293ab9..001f3c5e5c 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json index 8186e5a558..9d10ae7b5c 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json index 34343ecff5..5be19a6852 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json index bcc65299d1..b79e38758b 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json @@ -166,5 +166,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json index abd8207f32..e3ea591f17 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json @@ -171,5 +171,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @K2-all.json b/resources/profiles/Creality/filament/CR-TPU @K2-all.json index 9f0e96c015..a336ca1e66 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2-all.json @@ -171,5 +171,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json index 7181fce5e0..3b6e8923eb 100644 --- a/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json @@ -175,5 +175,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "16001" + "filament_id": "OFG2RkhN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json index 54c9f99ea0..2d59b01143 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "17001" + "filament_id": "OFGxC8gB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Wood @K1C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1C-all.json index 7def3b58f7..20477f04a9 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "17001" + "filament_id": "OFGxC8gB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json index 59364bfce5..95dc4f4c95 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "17001" + "filament_id": "OFGxC8gB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json index ce6631705f..e029b37f79 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "17001" + "filament_id": "OFGxC8gB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json index 9d5910633b..aa7a1f5eee 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "17001" + "filament_id": "OFGxC8gB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic ASA-CF @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic ASA-CF @Hi-all.json deleted file mode 100644 index 4c11ce042b..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic ASA-CF @Hi-all.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic ASA-CF @Hi-all", - "inherits": "Creality Generic ASA @Hi-all", - "from": "system", - "setting_id": "C7IB6HSJxW598zFA", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "9" - ], - "slow_down_layer_time": [ - "5" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Generic PETG-CF @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic PETG-CF @Hi-all.json deleted file mode 100644 index 28f6f07150..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic PETG-CF @Hi-all.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic PETG-CF @Hi-all", - "inherits": "Creality Generic PETG @Hi-all", - "from": "system", - "setting_id": "G4ZIJDNOpQvutOfs", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "9" - ], - "filament_flow_ratio": [ - "0.95" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic PLA High Speed @Hi-all.json deleted file mode 100644 index f1748f5d81..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @Hi-all.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic PLA High Speed @Hi-all", - "inherits": "Creality Generic PLA @Hi-all", - "from": "system", - "setting_id": "KzaopZGQPw5OJFFD", - "instantiation": "true", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Matte @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic PLA Matte @Hi-all.json deleted file mode 100644 index fe7c08e6c5..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic PLA Matte @Hi-all.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic PLA Matte @Hi-all", - "inherits": "Creality Generic PLA @Hi-all", - "from": "system", - "setting_id": "R7Jo7NhjsR1iU2Fd", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "18" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Wood @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic PLA Wood @Hi-all.json deleted file mode 100644 index 53637dd460..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic PLA Wood @Hi-all.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic PLA Wood @Hi-all", - "inherits": "Creality Generic PLA @Hi-all", - "from": "system", - "setting_id": "OEc7Bc7WG99tuO5D", - "instantiation": "true", - "filament_flow_ratio": [ - "0.88" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA-CF @Hi-all.json b/resources/profiles/Creality/filament/Creality Generic PLA-CF @Hi-all.json deleted file mode 100644 index 42eaf2c36c..0000000000 --- a/resources/profiles/Creality/filament/Creality Generic PLA-CF @Hi-all.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Creality Generic PLA-CF @Hi-all", - "inherits": "Creality Generic PLA-CF", - "from": "system", - "setting_id": "9nAovlPz0SEUcovr", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "18" - ], - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle" - ] -} diff --git a/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json index 8dc6b98afb..cb50c6f7fb 100644 --- a/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "9Ek7KtQF2kgJbeXg", - "filament_id": "03001", + "filament_id": "OFFP4ORR", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json index 7880478750..6a71e56fff 100644 --- a/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "YUtnpJsC9o1D3NUR", - "filament_id": "01001", + "filament_id": "OFAIrQXu", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json index 9c5a06621b..d44e4d96bf 100644 --- a/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "fZvWZ9kfPN8MU6cX", - "filament_id": "02001", + "filament_id": "OFGwT5Av", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json index 8211036350..d8a060f9b5 100644 --- a/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "S4nzxbjE4DmkoS7p", - "filament_id": "05001", + "filament_id": "OFfuih8e", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json index bd67446620..a7c696718f 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json index 20e1c80d6c..c680265601 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json index 36b97a2268..50816aed69 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json index eab3e35431..43728032ef 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json index 10971264e8..25642697d9 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json @@ -151,5 +151,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json index 1b6b372fd5..16a318a1e0 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json index e70da1c59e..e9693dabcc 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json b/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json index 415263d110..e19e06f40e 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json @@ -166,5 +166,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "09001" + "filament_id": "OFks6esg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json index 8b2802939b..3fd9b4ef24 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "09002" + "filament_id": "OFfSqS4R" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json index 0d353b5b00..a27a828dfb 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json @@ -164,5 +164,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "09002" + "filament_id": "OFfSqS4R" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json index ce9f2f0186..4f831d47ab 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "09002" + "filament_id": "OFfSqS4R" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json index b3178db08d..9c2fd90d30 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "09002" + "filament_id": "OFfSqS4R" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json index 33d7a84e98..c96ff98d72 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "09002" + "filament_id": "OFfSqS4R" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json index 0c911f30cb..711b1b22a7 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json @@ -143,5 +143,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json b/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json index a7ff4e7247..27ea82bdd3 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json index 7a70d00077..ed995443e3 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json @@ -151,5 +151,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json index a9bd4373e6..c220fa54ac 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json @@ -151,5 +151,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json index 258c51c0d0..2471ec31bb 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json @@ -151,5 +151,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json index 98e13e5899..f10bf01177 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json @@ -151,5 +151,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json index 625795d82b..51b85450b3 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json @@ -148,5 +148,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json index 096baea484..8e04e8fee9 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2-all.json index e7f978e6cb..b26145bea9 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json index a4f9b7c7ce..11a85cc128 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "08001" + "filament_id": "OFWao3Ic" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic ABS @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-3V3-all.json similarity index 71% rename from resources/profiles/Creality/filament/Creality Generic ABS @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic ABS @Creality Ender-3V3-all.json index ef6884e069..fcd8548620 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ABS @Ender-3V3-all", - "inherits": "Creality Generic ABS", + "name": "Generic ABS @Creality Ender-3V3-all", + "inherits": "Generic ABS @Creality", + "renamed_from": "Creality Generic ABS @Ender-3V3-all;Creality Generic ABS Ender-3V3-all", "from": "system", - "setting_id": "Jvnq628y3IlGGHK6", + "setting_id": "RqMPGyaU3l17zFrA", "instantiation": "true", "filament_max_volumetric_speed": [ "9" diff --git a/resources/profiles/Creality/filament/Creality Generic ABS @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic ABS @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json index 2e7d34794d..5a6f7a93c9 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic ABS @Ender-5Max-all", + "name": "Generic ABS @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic ABS @Ender-5Max-all;Creality Generic ABS Ender-5Max-all", "from": "system", - "setting_id": "mriWPwWZUKmr7ws0", - "filament_id": "07001", + "setting_id": "qurtvw5OhkVfgpaC", + "filament_id": "OFY9muEs", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", @@ -77,7 +78,7 @@ "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ - "Creality" + "Generic" ], "filament_wipe": "nil", "filament_wipe_distance": "nil", diff --git a/resources/profiles/Creality/filament/Creality Generic ABS @Hi-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality Hi-all.json similarity index 67% rename from resources/profiles/Creality/filament/Creality Generic ABS @Hi-all.json rename to resources/profiles/Creality/filament/Generic ABS @Creality Hi-all.json index 10fe49d23e..aba8475a20 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality Hi-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ABS @Hi-all", - "inherits": "Creality Generic ABS", + "name": "Generic ABS @Creality Hi-all", + "inherits": "Generic ABS @Creality", + "renamed_from": "Creality Generic ABS @Hi-all;Creality Generic ABS Hi-all", "from": "system", - "setting_id": "mKgdNahVCaxQLMJE", + "setting_id": "W2NhLx7Lw4NxWJY6", "instantiation": "true", "filament_max_volumetric_speed": [ "9" @@ -15,7 +16,6 @@ "; filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else}\nM104 S[first_layer_temperature]\n{endif}\n" ], "compatible_printers": [ - "Creality Hi 0.4 nozzle", "Creality Hi 0.6 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic ABS @K1-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality K1-all.json similarity index 53% rename from resources/profiles/Creality/filament/Creality Generic ABS @K1-all.json rename to resources/profiles/Creality/filament/Generic ABS @Creality K1-all.json index 369b92c304..0ea7629f24 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS @K1-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ABS @K1-all", - "inherits": "Creality Generic ABS", + "name": "Generic ABS @Creality K1-all", + "inherits": "Generic ABS @Creality", + "renamed_from": "Creality Generic ABS @K1-all;Creality Generic ABS K1-all", "from": "system", - "setting_id": "lbMWwEM2Rb9ylrkA", + "setting_id": "9hr2XywDT7lTehYd", "instantiation": "true", "filament_max_volumetric_speed": [ "14" @@ -15,9 +16,7 @@ "20" ], "compatible_printers": [ - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle" + "Creality K1C 0.8 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic ABS @K2-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality K2-all.json similarity index 70% rename from resources/profiles/Creality/filament/Creality Generic ABS @K2-all.json rename to resources/profiles/Creality/filament/Generic ABS @Creality K2-all.json index 15229ac4eb..4aab7d7d0d 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ABS @K2-all", - "inherits": "Creality Generic ABS", + "name": "Generic ABS @Creality K2-all", + "inherits": "Generic ABS @Creality", + "renamed_from": "Creality Generic ABS @K2-all;Creality Generic ABS K2-all", "from": "system", - "setting_id": "jl0usGdbqac1xcGN", + "setting_id": "39krWtacUjDnf03V", "instantiation": "true", "filament_flow_ratio": [ "0.95" @@ -22,15 +23,10 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic ABS.json b/resources/profiles/Creality/filament/Generic ABS @Creality.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic ABS.json rename to resources/profiles/Creality/filament/Generic ABS @Creality.json index 5fc04c19ac..cb2c1a6f9c 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic ABS", + "name": "Generic ABS @Creality", "inherits": "fdm_filament_abs", + "renamed_from": "Creality Generic ABS", "from": "system", - "setting_id": "fv5g33ofjgyjVexC", - "filament_id": "GFB99", + "setting_id": "My3UvJeg30wW7hLq", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json index 6690a03676..d1f8662025 100644 --- a/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @Hi-all.json b/resources/profiles/Creality/filament/Generic ABS @Hi-all.json index e64f47d466..9f43259110 100644 --- a/resources/profiles/Creality/filament/Generic ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Hi-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json index 4c78f3881a..4d1de77b9e 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json index 0841cb593a..974ca3a49a 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json index 8c297b397d..8fa83c2dbf 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1C-all.json index 2f21834dc7..0d8c23a2e7 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json index 4135ea39ac..888b283059 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json index eb71fa7e64..58d749dea3 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json index d6f73b5e64..425411f466 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json @@ -154,5 +154,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json index e3c1674f0b..a03c0fbfcb 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json index e895bc8ab8..846dc3b748 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json @@ -175,5 +175,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @K2-all.json b/resources/profiles/Creality/filament/Generic ABS @K2-all.json index f9949a0dc5..0eefa273a9 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2-all.json @@ -159,5 +159,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00004" + "filament_id": "OFY9muEs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic ASA @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-3V3-all.json similarity index 71% rename from resources/profiles/Creality/filament/Creality Generic ASA @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic ASA @Creality Ender-3V3-all.json index 3da4bd0531..27ee572384 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ASA @Ender-3V3-all", - "inherits": "Creality Generic ASA", + "name": "Generic ASA @Creality Ender-3V3-all", + "inherits": "Generic ASA @Creality", + "renamed_from": "Creality Generic ASA @Ender-3V3-all;Creality Generic ASA Ender-3V3-all", "from": "system", - "setting_id": "3KXcINpeRKqx9Hhw", + "setting_id": "LXPKRyWzBzo9nU8k", "instantiation": "true", "filament_max_volumetric_speed": [ "9" diff --git a/resources/profiles/Creality/filament/Creality Generic ASA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic ASA @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json index d93db9edb5..0fa424b522 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic ASA @Ender-5Max-all", + "name": "Generic ASA @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic ASA @Ender-5Max-all;Creality Generic ASA Ender-5Max-all", "from": "system", - "setting_id": "4muzPKAzy8FJKM5D", - "filament_id": "19001", + "setting_id": "7qyRWm8KXa1YUPpl", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", @@ -77,7 +78,7 @@ "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ - "Creality" + "Generic" ], "filament_wipe": "nil", "filament_wipe_distance": "nil", diff --git a/resources/profiles/Creality/filament/Creality Generic ASA @Hi-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality Hi-all.json similarity index 68% rename from resources/profiles/Creality/filament/Creality Generic ASA @Hi-all.json rename to resources/profiles/Creality/filament/Generic ASA @Creality Hi-all.json index aff57be93d..e706078d18 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality Hi-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ASA @Hi-all", - "inherits": "Creality Generic ASA", + "name": "Generic ASA @Creality Hi-all", + "inherits": "Generic ASA @Creality", + "renamed_from": "Creality Generic ASA @Hi-all;Creality Generic ASA Hi-all", "from": "system", - "setting_id": "DaPUW1rMtWyZLo3H", + "setting_id": "kcMcMJUiRgTRFe8P", "instantiation": "true", "filament_max_volumetric_speed": [ "9" diff --git a/resources/profiles/Creality/filament/Creality Generic ASA @K1-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality K1-all.json similarity index 53% rename from resources/profiles/Creality/filament/Creality Generic ASA @K1-all.json rename to resources/profiles/Creality/filament/Generic ASA @Creality K1-all.json index 2248ac6818..91feecf436 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA @K1-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ASA @K1-all", - "inherits": "Creality Generic ASA", + "name": "Generic ASA @Creality K1-all", + "inherits": "Generic ASA @Creality", + "renamed_from": "Creality Generic ASA @K1-all;Creality Generic ASA K1-all", "from": "system", - "setting_id": "nq4sPDBNWLOnU5pD", + "setting_id": "GQVdb7ZBWA55Ld0m", "instantiation": "true", "filament_max_volumetric_speed": [ "12" @@ -15,9 +16,7 @@ "20" ], "compatible_printers": [ - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle" + "Creality K1C 0.8 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic ASA @K2-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality K2-all.json similarity index 77% rename from resources/profiles/Creality/filament/Creality Generic ASA @K2-all.json rename to resources/profiles/Creality/filament/Generic ASA @Creality K2-all.json index 5e1f0c9a18..510e1d7660 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic ASA @K2-all", - "inherits": "Creality Generic ASA", + "name": "Generic ASA @Creality K2-all", + "inherits": "Generic ASA @Creality", + "renamed_from": "Creality Generic ASA @K2-all;Creality Generic ASA K2-all", "from": "system", - "setting_id": "OAYGhucg52H8nPIF", + "setting_id": "XJKLmHYbW2ReKSKs", "instantiation": "true", "filament_flow_ratio": [ "0.95" @@ -22,15 +23,12 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic ASA.json b/resources/profiles/Creality/filament/Generic ASA @Creality.json similarity index 92% rename from resources/profiles/Creality/filament/Creality Generic ASA.json rename to resources/profiles/Creality/filament/Generic ASA @Creality.json index ddf812b5ce..0ef5d15433 100644 --- a/resources/profiles/Creality/filament/Creality Generic ASA.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic ASA", + "name": "Generic ASA @Creality", "inherits": "fdm_filament_asa", + "renamed_from": "Creality Generic ASA", "from": "system", - "setting_id": "jHgcISP1UXOPsGH0", - "filament_id": "GFB98", + "setting_id": "dCUxfG2JXDg56zTK", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json index 1b8af0ce94..6f9ee6971e 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json index 9ffdccc2f3..d5850749d2 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json index 7e83bc3c50..8894ee7af1 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K1C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1C-all.json index eaf1f69185..2669b08f43 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json index 338fc4981a..0a5dc5d18a 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json index e2db7afa6e..33cf5b2860 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json index f9aa956e15..f1bdbc1310 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json index 2723557aa6..346f7bfec6 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json index 79cd23a4f4..758d45606e 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @K2-all.json b/resources/profiles/Creality/filament/Generic ASA @K2-all.json index cb18ef79a4..68b9b71b9e 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00007" + "filament_id": "OFLPAxz3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA-CF @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic ASA-CF @Creality Hi-all.json new file mode 100644 index 0000000000..7a462cc250 --- /dev/null +++ b/resources/profiles/Creality/filament/Generic ASA-CF @Creality Hi-all.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Generic ASA-CF @Creality Hi-all", + "inherits": "Generic ASA @Creality Hi-all", + "renamed_from": "Creality Generic ASA-CF @Hi-all;Creality Generic ASA-CF Hi-all", + "from": "system", + "setting_id": "MwKV8Lh4XzvMUVYA", + "filament_id": "OF53eLVD", + "instantiation": "true", + "filament_type": [ + "ASA-CF" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "slow_down_layer_time": [ + "5" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json index 6736c660a2..f98421ad49 100644 --- a/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json @@ -144,5 +144,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00033" + "filament_id": "OF53eLVD" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json b/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json index decbb3e4a1..33ac63d296 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json @@ -127,5 +127,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json index 81dc3b2ac4..e0cfdb7090 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json @@ -158,5 +158,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json index ac52221e0e..9f2cbf4200 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json @@ -159,5 +159,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json index 35d6581e85..e79e575992 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json @@ -159,5 +159,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json index db50bb2d68..9bd399cbf0 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json @@ -159,5 +159,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json index 2dde38b996..c525c695d7 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json index c9e4552fed..4d3492a70f 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2-all.json index 6bb308253a..1f8bea7aef 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00010" + "filament_id": "OFo2UF2C" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json index b4b0fc15c4..9549195611 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json @@ -169,5 +169,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00012" + "filament_id": "OFsFon5l" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json index 78fde3f1ab..5016c1e5a5 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00012" + "filament_id": "OFsFon5l" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json index f63576c7cf..33950552d8 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00012" + "filament_id": "OFsFon5l" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json index 23a86958eb..7b1ab3190b 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00012" + "filament_id": "OFsFon5l" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json index d004f30737..255e9e8b6e 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00012" + "filament_id": "OFsFon5l" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic PA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic PA @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json index f72b006d9b..500722f1e9 100644 --- a/resources/profiles/Creality/filament/Creality Generic PA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PA @Ender-5Max-all", + "name": "Generic PA @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic PA @Ender-5Max-all;Creality Generic PA Ender-5Max-all", "from": "system", - "setting_id": "8caHexyoeQW9p1NF", - "filament_id": "11001", + "setting_id": "ChQOX6JlKujFwFcB", + "filament_id": "OFg8ndtj", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", @@ -77,7 +78,7 @@ "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ - "Creality" + "Generic" ], "filament_wipe": "nil", "filament_wipe_distance": "nil", diff --git a/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json index 9fd3eb7324..12c3698ca6 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K1C-all.json b/resources/profiles/Creality/filament/Generic PA @K1C-all.json index ef8e035867..310dfb7abd 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json index 91bdcf21c7..0d134ae474 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json index 7f077d59a8..1396769307 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json index 59e941c60f..950b84e7f0 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json @@ -179,5 +179,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json index c9df3bc667..c8ddd05024 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json @@ -192,5 +192,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA @K2-all.json b/resources/profiles/Creality/filament/Generic PA @K2-all.json index 8579386858..b98aac22a0 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2-all.json @@ -192,5 +192,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00008" + "filament_id": "OFg8ndtj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic PA-CF @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PA-CF @Creality Ender-3V3-all.json similarity index 53% rename from resources/profiles/Creality/filament/Creality Generic PA-CF @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PA-CF @Creality Ender-3V3-all.json index f7990f9e99..a73077a6e9 100644 --- a/resources/profiles/Creality/filament/Creality Generic PA-CF @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PA-CF @Ender-3V3-all", - "inherits": "Creality Generic PA-CF", + "name": "Generic PA-CF @Creality Ender-3V3-all", + "inherits": "Generic PA-CF @Creality", + "renamed_from": "Creality Generic PA-CF @Ender-3V3-all;Creality Generic PA-CF Ender-3V3-all", "from": "system", - "setting_id": "PxYQg8A9aHBV0wKU", + "setting_id": "L9lg0gKfwuz9xcs4", "instantiation": "true", "compatible_printers": [ "Creality Ender-3 V3 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PA-CF @K1-all.json b/resources/profiles/Creality/filament/Generic PA-CF @Creality K1-all.json similarity index 65% rename from resources/profiles/Creality/filament/Creality Generic PA-CF @K1-all.json rename to resources/profiles/Creality/filament/Generic PA-CF @Creality K1-all.json index 80ff499716..72519b07f2 100644 --- a/resources/profiles/Creality/filament/Creality Generic PA-CF @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @Creality K1-all.json @@ -1,15 +1,15 @@ { "type": "filament", - "name": "Creality Generic PA-CF @K1-all", - "inherits": "Creality Generic PA-CF", + "name": "Generic PA-CF @Creality K1-all", + "inherits": "Generic PA-CF @Creality", + "renamed_from": "Creality Generic PA-CF @K1-all;Creality Generic PA-CF K1-all", "from": "system", - "setting_id": "3j6MMw59d8UigcH7", + "setting_id": "BkM0CVxYrvFPAbpQ", "instantiation": "true", "compatible_printers": [ "Creality K1 (0.4 nozzle)", "Creality K1 (0.6 nozzle)", "Creality K1 (0.8 nozzle)", - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle", "Creality K1 SE 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PA-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PA-CF @Creality K2-all.json similarity index 75% rename from resources/profiles/Creality/filament/Creality Generic PA-CF @K2-all.json rename to resources/profiles/Creality/filament/Generic PA-CF @Creality K2-all.json index 04ace3d4f4..932c37b2a2 100644 --- a/resources/profiles/Creality/filament/Creality Generic PA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PA-CF @K2-all", - "inherits": "Creality Generic PA-CF", + "name": "Generic PA-CF @Creality K2-all", + "inherits": "Generic PA-CF @Creality", + "renamed_from": "Creality Generic PA-CF @K2-all;Creality Generic PA-CF K2-all", "from": "system", - "setting_id": "08QXVyyDDpDPhOoJ", + "setting_id": "jCFh6dGbNQt7YHNB", "instantiation": "true", "nozzle_temperature_initial_layer": [ "280" @@ -23,9 +24,6 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PA-CF.json b/resources/profiles/Creality/filament/Generic PA-CF @Creality.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic PA-CF.json rename to resources/profiles/Creality/filament/Generic PA-CF @Creality.json index 92a2c25893..964672343a 100644 --- a/resources/profiles/Creality/filament/Creality Generic PA-CF.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PA-CF", + "name": "Generic PA-CF @Creality", "inherits": "fdm_filament_pa", + "renamed_from": "Creality Generic PA-CF", "from": "system", - "setting_id": "hBNsuwMzm7ZZn15D", - "filament_id": "GFN98", + "setting_id": "JDbda1VeHrPKR0NN", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json index b457a527a5..c047fb7774 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json @@ -148,5 +148,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00009" + "filament_id": "OFQLcbps" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json index 2d4f9cb2bf..360ecbf35b 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00009" + "filament_id": "OFQLcbps" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json index 8263c9d426..022474e6f1 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00009" + "filament_id": "OFQLcbps" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json index 49173fecd4..40586091b0 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00009" + "filament_id": "OFQLcbps" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json index 56c2aeed8a..0b0042c6c8 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json @@ -178,5 +178,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "00009" + "filament_id": "OFQLcbps" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json index 3fc6fa4644..fb65088525 100644 --- a/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json @@ -178,5 +178,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00025" + "filament_id": "OFM4iJlv" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json index c9aa3f2918..04260f4d8e 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json @@ -87,7 +87,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -184,5 +184,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json index c3108d354a..b141bc04ec 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json @@ -87,7 +87,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json index d745af0009..6dd6902397 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json @@ -87,7 +87,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json index 6eb1569816..9c70b899f0 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json @@ -87,7 +87,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json index 162ec5e7d1..75cd58773a 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json @@ -84,7 +84,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -187,5 +187,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json index 6049b3b882..6388151090 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json @@ -84,7 +84,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PA6-CF" ], "filament_vendor": [ "Generic" @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00015" + "filament_id": "OFhTPf6L" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json index d113edd116..5919945b58 100644 --- a/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00034" + "filament_id": "OFh9u9c0" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json index 25956f1c1c..d1decb74cc 100644 --- a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json @@ -178,5 +178,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00022" + "filament_id": "OF8eaY7j" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json index 5a29d469ef..5ccb21724d 100644 --- a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json @@ -180,5 +180,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00022" + "filament_id": "OF8eaY7j" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json index 3fee83483f..3e007d79c6 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json @@ -193,5 +193,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json index 100798cac6..dcc9738515 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json @@ -194,5 +194,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json index 71dff576e2..2f5ae88e9d 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json @@ -194,5 +194,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json index 956496c6a1..e7ffe11efa 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json @@ -194,5 +194,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json index 2b21d3680c..8d4157e8cd 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json @@ -193,5 +193,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json index cd4b5491a9..a013abb416 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json @@ -180,5 +180,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json index 0c507bc83d..e8032a6b4c 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json @@ -180,5 +180,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00016" + "filament_id": "OFH7b12v" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic PC @K1-all.json b/resources/profiles/Creality/filament/Generic PC @Creality K1-all.json similarity index 69% rename from resources/profiles/Creality/filament/Creality Generic PC @K1-all.json rename to resources/profiles/Creality/filament/Generic PC @Creality K1-all.json index 9098360594..a73499e2e9 100644 --- a/resources/profiles/Creality/filament/Creality Generic PC @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PC @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PC @K1-all", - "inherits": "Creality Generic PC", + "name": "Generic PC @Creality K1-all", + "inherits": "Generic PC @Creality", + "renamed_from": "Creality Generic PC @K1-all;Creality Generic PC K1-all", "from": "system", - "setting_id": "NZ93pDkjFnCyAVZW", + "setting_id": "Jk9yNMEqu4M92edj", "instantiation": "true", "chamber_temperatures": [ "60" @@ -12,7 +13,6 @@ "Creality K1 (0.4 nozzle)", "Creality K1 (0.6 nozzle)", "Creality K1 (0.8 nozzle)", - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle", "Creality K1 SE 0.4 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PC.json b/resources/profiles/Creality/filament/Generic PC @Creality.json similarity index 75% rename from resources/profiles/Creality/filament/Creality Generic PC.json rename to resources/profiles/Creality/filament/Generic PC @Creality.json index 305de9f580..5212f6c052 100644 --- a/resources/profiles/Creality/filament/Creality Generic PC.json +++ b/resources/profiles/Creality/filament/Generic PC @Creality.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Creality Generic PC", + "name": "Generic PC @Creality", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC99", + "filament_id": "OFLakOUI", "instantiation": "false", "filament_max_volumetric_speed": [ "16" diff --git a/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json index b2e4a4cc1a..67c0d17aa6 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PC @K1C-all.json b/resources/profiles/Creality/filament/Generic PC @K1C-all.json index c23127714d..30bb957e88 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json index 5a775566d2..450b46b2af 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json index 11d4aa54b0..353610592a 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json index a4fd7b8e17..e4a1d358f7 100644 --- a/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json index 17b8f5ba3c..99c3232a10 100644 --- a/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00021" + "filament_id": "OFLakOUI" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json index 5e82819e32..c84c58a220 100644 --- a/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00032" + "filament_id": "OFu1evlr" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json index f2bd3dde2b..047bacd756 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json @@ -184,5 +184,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K1C-all.json b/resources/profiles/Creality/filament/Generic PET @K1C-all.json index b855b18446..ae435635dd 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1C-all.json @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json index fef797ee4b..93e9cd11f0 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json index 6de2eb826d..4e860053d9 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json index d23ec6c681..cf56f3c9af 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json @@ -188,5 +188,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json index ff35401f39..4da77efe33 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET @K2-all.json b/resources/profiles/Creality/filament/Generic PET @K2-all.json index 52aaa6e18c..ef761807b0 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2-all.json @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00020" + "filament_id": "OF6MOPWx" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json index c42769fe11..4c9fadfbc6 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json index a293723722..e98f8773a6 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json @@ -173,5 +173,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json index 5e49cbdb77..36c9dc92a6 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json @@ -173,5 +173,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json index 72bec3d1ba..c1955e0667 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json @@ -173,5 +173,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json index 627620e2e0..44eb974cdf 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json @@ -191,5 +191,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json index ab8839dd7e..ddfb603d30 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00013" + "filament_id": "OFQdaVZS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-3V3-all.json similarity index 81% rename from resources/profiles/Creality/filament/Creality Generic PETG @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PETG @Creality Ender-3V3-all.json index b1e47e12c9..9d2c3a5529 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PETG @Ender-3V3-all", - "inherits": "Creality Generic PETG", + "name": "Generic PETG @Creality Ender-3V3-all", + "inherits": "Generic PETG @Creality", + "renamed_from": "Creality Generic PETG @Ender-3V3-all;Creality Generic PETG Ender-3V3-all", "from": "system", - "setting_id": "VsfDu1bl3N1EaXrw", + "setting_id": "sX2aMXNynDp6VKSR", "instantiation": "true", "filament_max_volumetric_speed": [ "9" diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic PETG @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json index 63700d9207..df6509395f 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PETG @Ender-5Max-all", + "name": "Generic PETG @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic PETG @Ender-5Max-all;Creality Generic PETG Ender-5Max-all", "from": "system", - "setting_id": "vRVsTatkrE46rzRB", - "filament_id": "06001", + "setting_id": "TFS4Fi1PuE7WgnPr", + "filament_id": "OFYPdQJh", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", @@ -77,7 +78,7 @@ "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ - "Creality" + "Generic" ], "filament_wipe": "nil", "filament_wipe_distance": "nil", diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @Hi-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality Hi-all.json similarity index 80% rename from resources/profiles/Creality/filament/Creality Generic PETG @Hi-all.json rename to resources/profiles/Creality/filament/Generic PETG @Creality Hi-all.json index 6889cf3cf3..0092cf5d12 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality Hi-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PETG @Hi-all", - "inherits": "Creality Generic PETG", + "name": "Generic PETG @Creality Hi-all", + "inherits": "Generic PETG @Creality", + "renamed_from": "Creality Generic PETG @Hi-all;Creality Generic PETG Hi-all", "from": "system", - "setting_id": "ZGI0yhD4lB10uUOd", + "setting_id": "QcMkrViYBKh4oISG", "instantiation": "true", "filament_max_volumetric_speed": [ "9" @@ -45,7 +46,6 @@ "; filament start gcode\n{if (position[2] > first_layer_height) }\nM104 S[nozzle_temperature]\n{else}\nM104 S[first_layer_temperature]\n{endif}\n" ], "compatible_printers": [ - "Creality Hi 0.4 nozzle", "Creality Hi 0.6 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @K1-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality K1-all.json similarity index 75% rename from resources/profiles/Creality/filament/Creality Generic PETG @K1-all.json rename to resources/profiles/Creality/filament/Generic PETG @Creality K1-all.json index 67a901d8db..06fb485fd0 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PETG @K1-all", - "inherits": "Creality Generic PETG", + "name": "Generic PETG @Creality K1-all", + "inherits": "Generic PETG @Creality", + "renamed_from": "Creality Generic PETG @K1-all;Creality Generic PETG K1-all", "from": "system", - "setting_id": "zk1Typ98hZMZLn68", + "setting_id": "YEB1keha4rhCSmq8", "instantiation": "true", "filament_max_volumetric_speed": [ "9" @@ -48,9 +49,7 @@ "0" ], "compatible_printers": [ - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle" + "Creality K1C 0.8 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality K2-all.json similarity index 79% rename from resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json rename to resources/profiles/Creality/filament/Generic PETG @Creality K2-all.json index 55ab9051b4..87e82d3eb5 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PETG @K2-all", - "inherits": "Creality Generic PETG", + "name": "Generic PETG @Creality K2-all", + "inherits": "Generic PETG @Creality", + "renamed_from": "Creality Generic PETG @K2-all;Creality Generic PETG K2-all", "from": "system", - "setting_id": "FhtlimihjuAe2pbs", + "setting_id": "IrbPRxkyhiUXaPEu", "instantiation": "true", "filament_max_volumetric_speed": [ "18" @@ -55,15 +56,10 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic PETG.json b/resources/profiles/Creality/filament/Generic PETG @Creality.json similarity index 94% rename from resources/profiles/Creality/filament/Creality Generic PETG.json rename to resources/profiles/Creality/filament/Generic PETG @Creality.json index 28c70a1f6a..7bd45cd910 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PETG", + "name": "Generic PETG @Creality", "inherits": "fdm_filament_pet", + "renamed_from": "Creality Generic PETG", "from": "system", - "setting_id": "ixhOwyMvBCpI8nQs", - "filament_id": "GFG99", + "setting_id": "B8lWG3jJQ4ar4j70", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json index 74e49dfb40..cbdc915a23 100644 --- a/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @Hi-all.json b/resources/profiles/Creality/filament/Generic PETG @Hi-all.json index f855fb8217..32b171416b 100644 --- a/resources/profiles/Creality/filament/Generic PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Hi-all.json @@ -147,5 +147,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json index 2cba8d0911..40fecf5d33 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json index 2626c596da..e82036ef1c 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json index af8cb7d371..649d2057b3 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1C-all.json index 1122d81c46..5d05e2a977 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json index 48b6087734..7f7459382a 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json index 5d518fde42..568b5a1cf5 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json index 1bb9217b84..6b10eac4c6 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json @@ -138,5 +138,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json index e50a03cb28..5d007dfff3 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json index 1b56e51679..69af8255c5 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json @@ -148,5 +148,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @K2-all.json b/resources/profiles/Creality/filament/Generic PETG @K2-all.json index 9df2e83d3d..a8e2308613 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json index 2fee02a703..301fc96ef9 100644 --- a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json @@ -159,5 +159,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "00003" + "filament_id": "OFYPdQJh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @Creality Hi-all.json new file mode 100644 index 0000000000..5049c12c57 --- /dev/null +++ b/resources/profiles/Creality/filament/Generic PETG-CF @Creality Hi-all.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Generic PETG-CF @Creality Hi-all", + "inherits": "Generic PETG @Creality Hi-all", + "renamed_from": "Creality Generic PETG-CF @Hi-all;Creality Generic PETG-CF Hi-all", + "from": "system", + "setting_id": "dWEGZoSVFzj7e9m1", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "filament_type": [ + "PETG-CF" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "filament_flow_ratio": [ + "0.95" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json index e4ab498063..5f03c5b211 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json index 8bbacdd073..4044297ea9 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json index d5a0981341..5c22d3e902 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json index 1414ef10c2..00f8180634 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json index 7114550576..5ed6aa15ea 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json @@ -145,5 +145,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json index d4f5068e4d..a801d09c9b 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json index d9c52ea4d4..a2b844f80f 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json @@ -136,5 +136,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json index 349f5d2418..954782024a 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "00014" + "filament_id": "OFoYSJKi" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json index 09c26dc704..63dead723c 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json @@ -148,5 +148,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00027" + "filament_id": "OFyLWVF3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json index dda8a48f06..5405f7dbcd 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00027" + "filament_id": "OFyLWVF3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json index 2505b3ccc8..7d52685214 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json @@ -60,7 +60,7 @@ "PETG-GF" ], "filament_vendor": [ - "Creality" + "Generic" ], "hot_plate_temp": [ "70" @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00027" + "filament_id": "OFyLWVF3" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-3V3-all.json similarity index 80% rename from resources/profiles/Creality/filament/Creality Generic PLA @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PLA @Creality Ender-3V3-all.json index 5e28b48844..4bc29d5df2 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA @Ender-3V3-all", - "inherits": "Creality Generic PLA", + "name": "Generic PLA @Creality Ender-3V3-all", + "inherits": "Generic PLA @Creality", + "renamed_from": "Creality Generic PLA @Ender-3V3-all;Creality Generic PLA Ender-3V3-all", "from": "system", - "setting_id": "d9awwT21ZLo1iXoh", + "setting_id": "uGq3aWYUI2sLJORU", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic PLA @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json index 23b15169e9..ff55c41e81 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA @Ender-5Max-all", + "name": "Generic PLA @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic PLA @Ender-5Max-all;Creality Generic PLA Ender-5Max-all", "from": "system", - "setting_id": "zQiwnlxGlX4pFOHR", - "filament_id": "04001", + "setting_id": "xGTd14Qwc0JbI6kg", + "filament_id": "OFDSrzZ8", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json similarity index 89% rename from resources/profiles/Creality/filament/Creality Generic PLA @Hi-all.json rename to resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json index 3247f38500..452c7854ae 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA @Hi-all", - "inherits": "Creality Generic PLA", + "name": "Generic PLA @Creality Hi-all", + "inherits": "Generic PLA @Creality", + "renamed_from": "Creality Generic PLA @Hi-all;Creality Generic PLA Hi-all", "from": "system", - "setting_id": "3gf0CImK4nJwfXrB", + "setting_id": "6rwK4GqvNrgaw4kF", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @K1-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality K1-all.json similarity index 72% rename from resources/profiles/Creality/filament/Creality Generic PLA @K1-all.json rename to resources/profiles/Creality/filament/Generic PLA @Creality K1-all.json index d5ea668c68..ac6f727f02 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA @K1-all", - "inherits": "Creality Generic PLA", + "name": "Generic PLA @Creality K1-all", + "inherits": "Generic PLA @Creality", + "renamed_from": "Creality Generic PLA @K1-all;Creality Generic PLA K1-all", "from": "system", - "setting_id": "c5ArCv3qjuKjBwEQ", + "setting_id": "oO2HaneRPfqxNQsP", "instantiation": "true", "filament_max_volumetric_speed": [ "18" @@ -39,9 +40,7 @@ "0" ], "compatible_printers": [ - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle" + "Creality K1C 0.8 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality K2-all.json similarity index 78% rename from resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json rename to resources/profiles/Creality/filament/Generic PLA @Creality K2-all.json index 2c6000111f..bf98b76c5a 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA @K2-all", - "inherits": "Creality Generic PLA", + "name": "Generic PLA @Creality K2-all", + "inherits": "Generic PLA @Creality", + "renamed_from": "Creality Generic PLA @K2-all;Creality Generic PLA K2-all", "from": "system", - "setting_id": "bnqvzgmJYbLraBWC", + "setting_id": "EC0PPocMp0c4O0dK", "instantiation": "true", "filament_flow_ratio": [ "0.95" @@ -49,15 +50,10 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic PLA.json b/resources/profiles/Creality/filament/Generic PLA @Creality.json similarity index 94% rename from resources/profiles/Creality/filament/Creality Generic PLA.json rename to resources/profiles/Creality/filament/Generic PLA @Creality.json index 6791ec64c4..f3d807d76b 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA", + "name": "Generic PLA @Creality", "inherits": "fdm_filament_pla", + "renamed_from": "Creality Generic PLA", "from": "system", - "setting_id": "rUYYpB3GkiNCVyfY", - "filament_id": "GFL99", + "setting_id": "UNUCEjCpe1e4ICT9", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json index 6bb5cef8b2..ce8231d11a 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA @Hi-all.json index 831a63dc03..43bb0786ea 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Hi-all.json @@ -136,9 +136,7 @@ "pressure_advance": "0.04", "support_material_interface_fan_speed": "-1", "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle", "Creality Hi 0.8 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json index a2757b6400..315347fc4f 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json index fe66c9659f..11bd5fd68a 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json index c4b6a70d4e..167ef73d00 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json @@ -137,5 +137,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1C-all.json index 87b5d0554c..7cad23ed0e 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json index a8e2ea3433..50db3c5fb5 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json index 9ad9f4d172..ddbc57ab8d 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json index 9b4f832744..6514b99d50 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json @@ -162,5 +162,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json index 97bfa85e57..96eafd022b 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json index 8c2f352b62..f8e0beaefe 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json @@ -136,5 +136,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @K2-all.json b/resources/profiles/Creality/filament/Generic PLA @K2-all.json index 5773b09d4a..ee71e52517 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2-all.json @@ -158,5 +158,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json index c0d5e84f04..07d9aa02e0 100644 --- a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json @@ -162,5 +162,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "00001" + "filament_id": "OFDSrzZ8" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality HF Generic PLA.json b/resources/profiles/Creality/filament/Generic PLA HF @Creality.json similarity index 81% rename from resources/profiles/Creality/filament/Creality HF Generic PLA.json rename to resources/profiles/Creality/filament/Generic PLA HF @Creality.json index 0b0c7d7d70..235e113a59 100644 --- a/resources/profiles/Creality/filament/Creality HF Generic PLA.json +++ b/resources/profiles/Creality/filament/Generic PLA HF @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality HF Generic PLA", + "name": "Generic PLA HF @Creality", "inherits": "fdm_filament_pla", + "renamed_from": "Creality HF Generic PLA", "from": "system", - "setting_id": "p07b7w0HDxavGLdd", - "filament_id": "GFL99", + "setting_id": "YXqIFmq63jGbN8aZ", + "filament_id": "OFZr862X", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality Ender-3V3-all.json similarity index 63% rename from resources/profiles/Creality/filament/Creality Generic PLA High Speed @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PLA High Speed @Creality Ender-3V3-all.json index 7538ad118c..21d1029a5d 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality Ender-3V3-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA High Speed @Ender-3V3-all", - "inherits": "Creality Generic PLA @Ender-3V3-all", + "name": "Generic PLA High Speed @Creality Ender-3V3-all", + "inherits": "Generic PLA @Creality Ender-3V3-all", + "renamed_from": "Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA High Speed Ender-3V3-all", "from": "system", - "setting_id": "4F3dZWvsniH9QHtr", + "setting_id": "MOH1B7U4Ipv8jw0s", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_max_volumetric_speed": [ "23" diff --git a/resources/profiles/Creality/filament/Generic PLA High Speed @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality Hi-all.json new file mode 100644 index 0000000000..cb184a432a --- /dev/null +++ b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality Hi-all.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Generic PLA High Speed @Creality Hi-all", + "inherits": "Generic PLA @Creality Hi-all", + "renamed_from": "Creality Generic PLA High Speed @Hi-all;Creality Generic PLA High Speed Hi-all", + "from": "system", + "setting_id": "KJZ1ztg3jL2Cg4fi", + "filament_id": "OFmpMwxS", + "instantiation": "true", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @K1-all.json b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality K1-all.json similarity index 63% rename from resources/profiles/Creality/filament/Creality Generic PLA High Speed @K1-all.json rename to resources/profiles/Creality/filament/Generic PLA High Speed @Creality K1-all.json index c810abe5e9..c7b2bbb03a 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality K1-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA High Speed @K1-all", - "inherits": "Creality Generic PLA @K1-all", + "name": "Generic PLA High Speed @Creality K1-all", + "inherits": "Generic PLA @Creality K1-all", + "renamed_from": "Creality Generic PLA High Speed @K1-all;Creality Generic PLA High Speed K1-all", "from": "system", - "setting_id": "ptxV78rC6wevH916", + "setting_id": "5HgGIzGuma2z6vD8", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_max_volumetric_speed": [ "23" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @K2-all.json b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality K2-all.json similarity index 66% rename from resources/profiles/Creality/filament/Creality Generic PLA High Speed @K2-all.json rename to resources/profiles/Creality/filament/Generic PLA High Speed @Creality K2-all.json index 559cb6c0d8..9df651b17d 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA High Speed @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA High Speed @Creality K2-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA High Speed @K2-all", - "inherits": "Creality Generic PLA @K2-all", + "name": "Generic PLA High Speed @Creality K2-all", + "inherits": "Generic PLA @Creality K2-all", + "renamed_from": "Creality Generic PLA High Speed @K2-all;Creality Generic PLA High Speed K2-all", "from": "system", - "setting_id": "ozHstwkc3N5LGWLV", + "setting_id": "Lxp4EwuEZKFHZXWR", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_max_volumetric_speed": [ "23" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Matte @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PLA Matte @Creality Ender-3V3-all.json similarity index 64% rename from resources/profiles/Creality/filament/Creality Generic PLA Matte @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PLA Matte @Creality Ender-3V3-all.json index 8386488fcd..2e561af6b5 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Matte @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Matte @Creality Ender-3V3-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Matte @Ender-3V3-all", - "inherits": "Creality Generic PLA @Ender-3V3-all", + "name": "Generic PLA Matte @Creality Ender-3V3-all", + "inherits": "Generic PLA @Creality Ender-3V3-all", + "renamed_from": "Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Matte Ender-3V3-all", "from": "system", - "setting_id": "xF1B593frol5PWVw", + "setting_id": "JlvUB8GxzpAOlgkz", + "filament_id": "OFmY0l6t", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Creality/filament/Generic PLA Matte @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PLA Matte @Creality Hi-all.json new file mode 100644 index 0000000000..1cff84c8bf --- /dev/null +++ b/resources/profiles/Creality/filament/Generic PLA Matte @Creality Hi-all.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PLA Matte @Creality Hi-all", + "inherits": "Generic PLA @Creality Hi-all", + "renamed_from": "Creality Generic PLA Matte @Hi-all;Creality Generic PLA Matte Hi-all", + "from": "system", + "setting_id": "pFxJgjam0WAeSKqf", + "filament_id": "OFmY0l6t", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "18" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Matte @K1-all.json b/resources/profiles/Creality/filament/Generic PLA Matte @Creality K1-all.json similarity index 65% rename from resources/profiles/Creality/filament/Creality Generic PLA Matte @K1-all.json rename to resources/profiles/Creality/filament/Generic PLA Matte @Creality K1-all.json index 9869ee37fa..2a584450f8 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Matte @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Matte @Creality K1-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Matte @K1-all", - "inherits": "Creality Generic PLA @K1-all", + "name": "Generic PLA Matte @Creality K1-all", + "inherits": "Generic PLA @Creality K1-all", + "renamed_from": "Creality Generic PLA Matte @K1-all;Creality Generic PLA Matte K1-all", "from": "system", - "setting_id": "3hreTG3DjcgmwZC2", + "setting_id": "JJRpJQcHUhelwD02", + "filament_id": "OFmY0l6t", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Matte @K2-all.json b/resources/profiles/Creality/filament/Generic PLA Matte @Creality K2-all.json similarity index 67% rename from resources/profiles/Creality/filament/Creality Generic PLA Matte @K2-all.json rename to resources/profiles/Creality/filament/Generic PLA Matte @Creality K2-all.json index 1659fed28f..27607938a5 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Matte @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Matte @Creality K2-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Matte @K2-all", - "inherits": "Creality Generic PLA @K2-all", + "name": "Generic PLA Matte @Creality K2-all", + "inherits": "Generic PLA @Creality K2-all", + "renamed_from": "Creality Generic PLA Matte @K2-all;Creality Generic PLA Matte K2-all", "from": "system", - "setting_id": "fxZf5E6IHWWq3dsu", + "setting_id": "VVcXNl0Y6B0mLlrb", + "filament_id": "OFmY0l6t", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Silk @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic PLA Silk @Creality Ender-3V3-all.json similarity index 64% rename from resources/profiles/Creality/filament/Creality Generic PLA Silk @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic PLA Silk @Creality Ender-3V3-all.json index d4e1b1f7aa..1f528f79fb 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Silk @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Silk @Creality Ender-3V3-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Silk @Ender-3V3-all", - "inherits": "Creality Generic PLA @Ender-3V3-all", + "name": "Generic PLA Silk @Creality Ender-3V3-all", + "inherits": "Generic PLA @Creality Ender-3V3-all", + "renamed_from": "Creality Generic PLA Silk @Ender-3V3-all;Creality Generic PLA Silk Ender-3V3-all", "from": "system", - "setting_id": "uPFnSMh7WoXmMAoy", + "setting_id": "vPrmBiuBCC8843Jb", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Silk @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA Silk @Creality Hi-all.json similarity index 50% rename from resources/profiles/Creality/filament/Creality Generic PLA Silk @Hi-all.json rename to resources/profiles/Creality/filament/Generic PLA Silk @Creality Hi-all.json index 17b55e5202..3358b98c75 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Silk @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Silk @Creality Hi-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Silk @Hi-all", - "inherits": "Creality Generic PLA @Hi-all", + "name": "Generic PLA Silk @Creality Hi-all", + "inherits": "Generic PLA @Creality Hi-all", + "renamed_from": "Creality Generic PLA Silk @Hi-all;Creality Generic PLA Silk Hi-all", "from": "system", - "setting_id": "RPDVqZcn8EZizd1U", + "setting_id": "k1ofgUXqhHGSPDPY", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_flow_ratio": [ "0.97" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Silk @K1-all.json b/resources/profiles/Creality/filament/Generic PLA Silk @Creality K1-all.json similarity index 65% rename from resources/profiles/Creality/filament/Creality Generic PLA Silk @K1-all.json rename to resources/profiles/Creality/filament/Generic PLA Silk @Creality K1-all.json index 13cd1e7c93..4e8adb2b35 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Silk @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Silk @Creality K1-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Silk @K1-all", - "inherits": "Creality Generic PLA @K1-all", + "name": "Generic PLA Silk @Creality K1-all", + "inherits": "Generic PLA @Creality K1-all", + "renamed_from": "Creality Generic PLA Silk @K1-all;Creality Generic PLA Silk K1-all", "from": "system", - "setting_id": "pxvc0ICvqc0M3wYV", + "setting_id": "JcSq9nar8x5BjFss", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA Silk @K2-all.json b/resources/profiles/Creality/filament/Generic PLA Silk @Creality K2-all.json similarity index 68% rename from resources/profiles/Creality/filament/Creality Generic PLA Silk @K2-all.json rename to resources/profiles/Creality/filament/Generic PLA Silk @Creality K2-all.json index 3b9a3d242c..850ea2704b 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA Silk @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA Silk @Creality K2-all.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA Silk @K2-all", - "inherits": "Creality Generic PLA @K2-all", + "name": "Generic PLA Silk @Creality K2-all", + "inherits": "Generic PLA @Creality K2-all", + "renamed_from": "Creality Generic PLA Silk @K2-all;Creality Generic PLA Silk K2-all", "from": "system", - "setting_id": "qS0Mlt24iz1k4P7n", + "setting_id": "fRyhLWAQiCOaAxKA", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_max_volumetric_speed": [ "10" diff --git a/resources/profiles/Creality/filament/Generic PLA Wood @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PLA Wood @Creality Hi-all.json new file mode 100644 index 0000000000..62f6ddf42c --- /dev/null +++ b/resources/profiles/Creality/filament/Generic PLA Wood @Creality Hi-all.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Generic PLA Wood @Creality Hi-all", + "inherits": "Generic PLA @Creality Hi-all", + "renamed_from": "Creality Generic PLA Wood @Hi-all;Creality Generic PLA Wood Hi-all", + "from": "system", + "setting_id": "PNqfF5ecYqqpobdh", + "filament_id": "OFIKZxPF", + "instantiation": "true", + "filament_flow_ratio": [ + "0.88" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Creality Hi-all.json new file mode 100644 index 0000000000..9bbc7a4433 --- /dev/null +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Creality Hi-all.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA-CF @Creality Hi-all", + "inherits": "Generic PLA-CF @Creality", + "renamed_from": "Creality Generic PLA-CF @Hi-all;Creality Generic PLA-CF Hi-all", + "from": "system", + "setting_id": "MH2pm9wTHLgX9fyq", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "18" + ], + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Creality Generic PLA-CF @K1-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Creality K1-all.json similarity index 65% rename from resources/profiles/Creality/filament/Creality Generic PLA-CF @K1-all.json rename to resources/profiles/Creality/filament/Generic PLA-CF @Creality K1-all.json index 7eca9d5dc0..2e3ed94cb7 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA-CF @K1-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA-CF @K1-all", - "inherits": "Creality Generic PLA-CF", + "name": "Generic PLA-CF @Creality K1-all", + "inherits": "Generic PLA-CF @Creality", + "renamed_from": "Creality Generic PLA-CF @K1-all;Creality Generic PLA-CF K1-all", "from": "system", - "setting_id": "zCnOLIfwhfZIDYLC", + "setting_id": "DoyvqW51z3o1vBSa", "instantiation": "true", "additional_cooling_fan_speed": [ "0" @@ -12,10 +13,8 @@ "Creality K1 (0.4 nozzle)", "Creality K1 (0.6 nozzle)", "Creality K1 (0.8 nozzle)", - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle", "Creality K1 Max (0.4 nozzle)", "Creality K1 Max (0.6 nozzle)", "Creality K1 Max (0.8 nozzle)" diff --git a/resources/profiles/Creality/filament/Creality Generic PLA-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Creality K2-all.json similarity index 70% rename from resources/profiles/Creality/filament/Creality Generic PLA-CF @K2-all.json rename to resources/profiles/Creality/filament/Generic PLA-CF @Creality K2-all.json index 7b2b7212e8..4cc99c0ff5 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic PLA-CF @K2-all", - "inherits": "Creality Generic PLA-CF", + "name": "Generic PLA-CF @Creality K2-all", + "inherits": "Generic PLA-CF @Creality", + "renamed_from": "Creality Generic PLA-CF @K2-all;Creality Generic PLA-CF K2-all", "from": "system", - "setting_id": "wfZgLrH8dafxsNyZ", + "setting_id": "6KqkLBBYBA59h5TA", "instantiation": "true", "filament_max_volumetric_speed": [ "18" @@ -16,15 +17,12 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic PLA-CF.json b/resources/profiles/Creality/filament/Generic PLA-CF @Creality.json similarity index 92% rename from resources/profiles/Creality/filament/Creality Generic PLA-CF.json rename to resources/profiles/Creality/filament/Generic PLA-CF @Creality.json index 83fa21d7d6..e35a839035 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA-CF.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic PLA-CF", + "name": "Generic PLA-CF @Creality", "inherits": "fdm_filament_pla", + "renamed_from": "Creality Generic PLA-CF", "from": "system", - "setting_id": "DCCWPQGMsvDOucwx", - "filament_id": "GFL98", + "setting_id": "Fn5Z3ccrrRYFkiwT", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json index c651861af8..3fd2827231 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json index 8721ebfd57..698bdc2927 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json index 9b686f0f9a..57228d8b7f 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json index a606564c5d..647819f8ea 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json index f0bd1b2659..ae3aa14a7a 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json index 9e1ed31ae4..7c1b681b1e 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json index aa6a91936f..ab73ebe1ba 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json index be755fcebb..381f25f899 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json index 2e54d39334..f1ce0ce42d 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json index 64c621680e..4dab8f0c8a 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json index c754999f33..111ac7470a 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json index 60fa4e2bee..4184a05737 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json @@ -179,5 +179,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "00006" + "filament_id": "OFWbdGsC" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json index 1cf6f9ecd9..da5c1ba172 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json @@ -143,5 +143,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json index d2dab74d67..a3dfac28d1 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json index 53f97c21f1..c7ce2639ae 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json index 92dc9c7f22..418248ed71 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json index 683eb16c4d..1ba33bf6dc 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json index 7210792495..f37ef16d31 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json @@ -159,5 +159,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json index 70e41a8078..1b4298f035 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json index 71b992c1fc..f81638a23f 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json index ba03b66ddd..50f7dac4eb 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json index 9e03746797..2c18b858e8 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json index 074fde8bfe..8b7030ff73 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json @@ -133,5 +133,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json index 953edaba8b..5826a18ba9 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json @@ -158,5 +158,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json index 30e6a20ebd..e67d570ad4 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "00002" + "filament_id": "OFi6PfUM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json index 59f53cbb9d..7aec44400e 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K1C-all.json b/resources/profiles/Creality/filament/Generic PP @K1C-all.json index 4c8ac4d0d0..ad01f49d51 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json index 1668dd04fa..fb56912bf1 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json index f82a464fe5..88acdf3d32 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json index 9a5f2f3e53..e34d70a902 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json index 38ba4abe64..e3167109d8 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json @@ -138,5 +138,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP @K2-all.json b/resources/profiles/Creality/filament/Generic PP @K2-all.json index 8f97f08d6b..8f0075422c 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2-all.json @@ -138,5 +138,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00019" + "filament_id": "OF1UNk9P" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json index 3f35f96343..e557ac36e4 100644 --- a/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00031" + "filament_id": "OFXkm8q1" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json index 37176e53e1..01f7c52bc9 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json @@ -169,5 +169,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00017" + "filament_id": "OFq9svOz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS @K1C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1C-all.json index d15aeef469..39a3449351 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00017" + "filament_id": "OFq9svOz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json index d2af02918e..af12995572 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00017" + "filament_id": "OFq9svOz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json index 69f7f95046..dd22fcf107 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00017" + "filament_id": "OFq9svOz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json index 964d010a97..deff12cad5 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json @@ -147,5 +147,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00017" + "filament_id": "OFq9svOz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json index 47c8c9dc0e..f07eed6f9a 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json @@ -169,5 +169,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00018" + "filament_id": "OF6rdQ6M" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json index c8e56eb45b..78f5a33e87 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00018" + "filament_id": "OF6rdQ6M" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json index 5a937397ac..8975f9792c 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00018" + "filament_id": "OF6rdQ6M" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json index ae80e3823a..11b1b3a155 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00018" + "filament_id": "OF6rdQ6M" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json index a538bfb7a1..3bbcf8f992 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json @@ -140,5 +140,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00018" + "filament_id": "OF6rdQ6M" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @Hi-all.json b/resources/profiles/Creality/filament/Generic PVA @Hi-all.json index a327524d0b..6fdad0ad0b 100644 --- a/resources/profiles/Creality/filament/Generic PVA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @Hi-all.json @@ -132,5 +132,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json index 468d910190..ba02942df2 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json @@ -124,5 +124,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K1C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1C-all.json index 208b12d48e..34d0a7231d 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1C-all.json @@ -125,5 +125,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json index 5f2d2d535a..607cf3b0dd 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json @@ -125,5 +125,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json index e527dfaddf..e5eff7fb64 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json @@ -125,5 +125,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json index 4e76a603d2..a4499aa85d 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json index 3902a813d5..9cf5bfd6bc 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PVA @K2-all.json b/resources/profiles/Creality/filament/Generic PVA @K2-all.json index 9d6376abe7..d69eab7457 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00011" + "filament_id": "OFDvXujf" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality HF Generic Speed PLA.json b/resources/profiles/Creality/filament/Generic Speed PLA @Creality HF.json similarity index 79% rename from resources/profiles/Creality/filament/Creality HF Generic Speed PLA.json rename to resources/profiles/Creality/filament/Generic Speed PLA @Creality HF.json index dabcf7cdba..80e07cfff0 100644 --- a/resources/profiles/Creality/filament/Creality HF Generic Speed PLA.json +++ b/resources/profiles/Creality/filament/Generic Speed PLA @Creality HF.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality HF Generic Speed PLA", + "name": "Generic Speed PLA @Creality HF", "inherits": "fdm_filament_pla", + "renamed_from": "Creality HF Generic Speed PLA", "from": "system", - "setting_id": "Jp93uqYennsWVAKe", - "filament_id": "GFL99", + "setting_id": "pklu1YSwmDOj6gRq", + "filament_id": "OFXmv5p0", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json index 65431307ec..a59be37173 100644 --- a/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json @@ -175,5 +175,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00023" + "filament_id": "OFDtop41" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json index 130d40baff..5135c5ee68 100644 --- a/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json @@ -158,5 +158,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00024" + "filament_id": "OFin64Qg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json index 2d59a7a434..da1860ce3c 100644 --- a/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00026" + "filament_id": "OFF3cuzT" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json index 5b50b540bf..54d1fd6680 100644 --- a/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json @@ -181,5 +181,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "00026" + "filament_id": "OFF3cuzT" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @Ender-3V3-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-3V3-all.json similarity index 78% rename from resources/profiles/Creality/filament/Creality Generic TPU @Ender-3V3-all.json rename to resources/profiles/Creality/filament/Generic TPU @Creality Ender-3V3-all.json index 11b24086b2..89fa6b290b 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @Ender-3V3-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-3V3-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic TPU @Ender-3V3-all", - "inherits": "Creality Generic TPU", + "name": "Generic TPU @Creality Ender-3V3-all", + "inherits": "Generic TPU @Creality", + "renamed_from": "Creality Generic TPU @Ender-3V3-all;Creality Generic TPU Ender-3V3-all", "from": "system", - "setting_id": "0fDkYNB91MiqbAS0", + "setting_id": "ZufJdJseoFNQC66B", "instantiation": "true", "hot_plate_temp": [ "30" diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json similarity index 93% rename from resources/profiles/Creality/filament/Creality Generic TPU @Ender-5Max-all.json rename to resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json index 20b4033ed4..62f4916a99 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic TPU @Ender-5Max-all", + "name": "Generic TPU @Creality Ender-5Max-all", "inherits": "fdm_filament_common", + "renamed_from": "Creality Generic TPU @Ender-5Max-all;Creality Generic TPU Ender-5Max-all", "from": "system", - "setting_id": "aaiFHjbveXabDAMr", - "filament_id": "10001", + "setting_id": "XqW2iYrRTVlXuCwD", + "filament_id": "OFgbpcy9", "instantiation": "true", "activate_air_filtration": "0", "activate_chamber_temp_control": "0", @@ -77,7 +78,7 @@ "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ - "Creality" + "Generic" ], "filament_wipe": "nil", "filament_wipe_distance": "nil", diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @Hi-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality Hi-all.json similarity index 77% rename from resources/profiles/Creality/filament/Creality Generic TPU @Hi-all.json rename to resources/profiles/Creality/filament/Generic TPU @Creality Hi-all.json index c3b5905d96..1a46bfc0b5 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality Hi-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic TPU @Hi-all", - "inherits": "Creality Generic TPU", + "name": "Generic TPU @Creality Hi-all", + "inherits": "Generic TPU @Creality", + "renamed_from": "Creality Generic TPU @Hi-all;Creality Generic TPU Hi-all", "from": "system", - "setting_id": "aF2isnhJKc3hoq8r", + "setting_id": "P42mcGCETNdcZchS", "instantiation": "true", "hot_plate_temp": [ "30" diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @K1-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality K1-all.json similarity index 69% rename from resources/profiles/Creality/filament/Creality Generic TPU @K1-all.json rename to resources/profiles/Creality/filament/Generic TPU @Creality K1-all.json index c8d4b63a69..d2cd19bb7c 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @K1-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality K1-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic TPU @K1-all", - "inherits": "Creality Generic TPU", + "name": "Generic TPU @Creality K1-all", + "inherits": "Generic TPU @Creality", + "renamed_from": "Creality Generic TPU @K1-all;Creality Generic TPU K1-all", "from": "system", - "setting_id": "isJCGG1B672xyX4l", + "setting_id": "7zTgnS8bIEkkhqtB", "instantiation": "true", "hot_plate_temp": [ "30" @@ -33,9 +34,7 @@ "0" ], "compatible_printers": [ - "Creality K1C 0.4 nozzle", "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle", - "Creality K1 SE 0.4 nozzle" + "Creality K1C 0.8 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality K2-all.json similarity index 81% rename from resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json rename to resources/profiles/Creality/filament/Generic TPU @Creality K2-all.json index db2138db73..9a8896ea23 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality K2-all.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Creality Generic TPU @K2-all", - "inherits": "Creality Generic TPU", + "name": "Generic TPU @Creality K2-all", + "inherits": "Generic TPU @Creality", + "renamed_from": "Creality Generic TPU @K2-all;Creality Generic TPU K2-all", "from": "system", - "setting_id": "60PiyJbkRFDzr7b5", + "setting_id": "C9PAmCIDhCAthMuK", "instantiation": "true", "hot_plate_temp": [ "40" @@ -37,15 +38,12 @@ ], "compatible_printers": [ "Creality K2 0.2 nozzle", - "Creality K2 0.4 nozzle", "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle", "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle", "Creality K2 Pro 0.2 nozzle", - "Creality K2 Pro 0.4 nozzle", "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Creality/filament/Creality Generic TPU.json b/resources/profiles/Creality/filament/Generic TPU @Creality.json similarity index 83% rename from resources/profiles/Creality/filament/Creality Generic TPU.json rename to resources/profiles/Creality/filament/Generic TPU @Creality.json index 904768bb5e..0277d14563 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Creality Generic TPU", + "name": "Generic TPU @Creality", "inherits": "fdm_filament_tpu", + "renamed_from": "Creality Generic TPU", "from": "system", - "setting_id": "mKCynAMC7cjY03c0", - "filament_id": "GFU99", + "setting_id": "eCzlxPg3piTZEui4", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json index d5582bb484..18e8caacda 100644 --- a/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json index cb08115e87..0e093087d3 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json index 46e2de4629..12f548e797 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json index 45926b0b66..c7aa82e060 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1C-all.json index bcfcbd4836..4d77ed28a7 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1C-all.json @@ -147,5 +147,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json index 7d929554a8..4c29062659 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json @@ -147,5 +147,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json index 56491b9100..88523dd930 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json @@ -147,5 +147,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json index 46aee6149c..a06cdec298 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json index 62451e782a..07e97acb84 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json index 04348049b8..8793fc167e 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @K2-all.json b/resources/profiles/Creality/filament/Generic TPU @K2-all.json index 4967c237e0..03d44388f5 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json index cd8b519c2e..c1d0268024 100644 --- a/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json @@ -168,5 +168,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "00005" + "filament_id": "OFgbpcy9" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json index c7ae970179..e300daac38 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "18001" + "filament_id": "OFCJpR7a" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json index e02b477267..d437c91d60 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "18001" + "filament_id": "OFCJpR7a" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json index c6bb9bd547..2c354d95bc 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "18001" + "filament_id": "OFCJpR7a" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json index 1eb74d0999..db920a7f56 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json @@ -156,5 +156,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "18001" + "filament_id": "OFCJpR7a" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json index 399c357b29..8f912cf729 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "18001" + "filament_id": "OFCJpR7a" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json index 3118bd2d96..16810d1886 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K1C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1C-all.json index 95e31de6b3..c720b4d1b0 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json index 6ea06b5eb7..01a49e2392 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json index 30411e4028..d3a45386ad 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json @@ -167,5 +167,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json index 3babd544ef..1b97d61b93 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json @@ -175,5 +175,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json index a508566f74..33a4406fdd 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json index 68cbfb27d7..f29ffdd702 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @K2-all.json b/resources/profiles/Creality/filament/HP-ASA @K2-all.json index b7d3829cda..2d38575630 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "19001" + "filament_id": "OFPHLnoe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json b/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json index e627f5c5e8..9d7767c4d8 100644 --- a/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @Hi-all.json b/resources/profiles/Creality/filament/HP-TPU @Hi-all.json index 244f173f41..c9b6766149 100644 --- a/resources/profiles/Creality/filament/HP-TPU @Hi-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @Hi-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json index 8ed2212fa9..079dfebfe2 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json index 5c83cda993..7e5935cdf7 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json index f251c2e7db..62184e78e3 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1C-all.json index 6559456723..6762f0d2d4 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1C-all.json @@ -164,5 +164,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json index 825d30d323..e7534ade92 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json index 9a950cce1d..077936057a 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json index 19195696be..5b979963f0 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json @@ -168,5 +168,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json index 07423945cb..90201f7dcf 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json @@ -170,5 +170,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json index df44f03a65..b3779225c2 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @K2-all.json b/resources/profiles/Creality/filament/HP-TPU @K2-all.json index 4d1285f815..3768b17547 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2-all.json @@ -165,5 +165,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json index 796ce1e78f..1d225ec253 100644 --- a/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json @@ -179,5 +179,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "10001" + "filament_id": "OFGcMkEB" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json index 3f038190b1..e4a50b5fec 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json b/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json index 5e3b9d7de7..bb93a96d02 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json index f2a095c235..9749f95e35 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json index 35871f8ac5..a303e41640 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json index f160827598..b4780cb82d 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json index 0d57ad0380..1ae0bc6ddf 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json @@ -166,5 +166,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json index 78b1d7d719..03f8fbc354 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json index e6ef2cfb6c..d6c76e777f 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json index bbef4b2148..7ecce97627 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json @@ -163,5 +163,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json index edd4f7a352..de032398b5 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json index 4710c1f7b1..c3132a18b5 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2-all.json index 6aa0b2f736..63bf93483d 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "03001" + "filament_id": "OF8GnyFU" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json index efafa60017..d4deb0be89 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json @@ -145,5 +145,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json index 4b8ed94936..182364977c 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json @@ -166,5 +166,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json index c07d9981db..2bc12a6918 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json @@ -144,5 +144,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json index 3d69f8e7ae..065b9ac77e 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json @@ -144,5 +144,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json index 7193bf835b..872eeca4dc 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json index 0757ec1fc8..3685dbd854 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json index 387a549dbc..718112bd7b 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json index 2f3c64a6e1..df0df361ad 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json index 902e373f86..cf2c873e77 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json index a0f31de0c4..9b06765831 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "01002" + "filament_id": "OF70zbGS" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json b/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json index a6873b4dc2..4c39c1ac1a 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json @@ -136,5 +136,5 @@ "Creality Hi 0.6 nozzle", "Creality Hi 0.8 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json index df72136acc..53ab1e078e 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json @@ -163,5 +163,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json index 13670be4d9..9e267d07cf 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json @@ -160,5 +160,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json index eb7d7f3f03..67c567791c 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json @@ -160,5 +160,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json index 86a72078c6..b5182102e4 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json @@ -160,5 +160,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json index b4991bc3ff..9817bd9701 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json @@ -179,5 +179,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "01003" + "filament_id": "OFC1PzXz" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json b/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json index 7576185076..614c8a9ac8 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json index 3475d6f5aa..1fdeb7e4d3 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json index fb9bc8c08c..3430271e86 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json index 63ab61c68e..f92a629e09 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json index 0e3f217669..0443b606a1 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json index bce1cbb5f0..87c217d5db 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json index 4c77e3e4ab..90047e7778 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json index 706230c0b9..a0bc0bbfbc 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2-all.json index 527ec67332..09eb2487d3 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json index 0746b42880..746332ab6a 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "29001" + "filament_id": "OFLzx3J4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json index 01aeb86cdf..d5d494f3f4 100644 --- a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json @@ -195,5 +195,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "12005" + "filament_id": "OFn2GlhY" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json index 40139cf279..97f41d5746 100644 --- a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json @@ -195,5 +195,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "12005" + "filament_id": "OFn2GlhY" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json index 2f8bcbbacb..658908446c 100644 --- a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "12004" + "filament_id": "OFhkN0a7" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json index 3f4be12bf3..40870d5cd3 100644 --- a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json @@ -189,5 +189,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "12004" + "filament_id": "OFhkN0a7" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json index 3311a96082..915b8b67d9 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json @@ -192,5 +192,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json index b06066ce46..3529603ba6 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json @@ -193,5 +193,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json index 1e89fbaa08..a2c841f463 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json @@ -193,5 +193,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json index bf05bb6310..c597cd9c95 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json @@ -193,5 +193,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json index df43ebb973..67d0b403cc 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json @@ -190,5 +190,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json index 60e6f6e84e..f7e37afe69 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json @@ -180,5 +180,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json index 39fc5e217b..1f97108309 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json @@ -180,5 +180,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "12003" + "filament_id": "OF4APyxe" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json index 43f1d53cdc..85d5d66252 100644 --- a/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json @@ -167,5 +167,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "07002" + "filament_id": "OFUF7oA4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json index 3668981c2b..7592b6dbcf 100644 --- a/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json @@ -169,5 +169,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "07002" + "filament_id": "OFUF7oA4" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json index aa4a1da8b8..a333d63f3d 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json b/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json index fdc782abad..5998e1e8bd 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json @@ -145,5 +145,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json index 89090724f4..6bd1f3afea 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json index 85d9b0fc2d..058dfe5bd6 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json index afd34c32d2..f1ceb825e9 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json index b4f548e7d8..175aa8099c 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json @@ -151,5 +151,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json index a132ab6ba7..be8e2c58f5 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json index 1d4207f047..9bf2512abe 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json index 2b65adafad..983556224b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json @@ -145,5 +145,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json index 25acc10afb..32a8fae98b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json index f00003218e..cc058c4511 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json @@ -154,5 +154,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2-all.json index f0f86795ec..9bbf24c47f 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2-all.json @@ -144,5 +144,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json index 26b6def656..d8db7fd923 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json @@ -160,5 +160,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "06002" + "filament_id": "OFujZSdh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json index 459f8fcd55..69662a0296 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json @@ -136,5 +136,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json index 05fe909fb4..1005d22d7f 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json @@ -135,5 +135,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json index 9fa1a032be..e9008aede1 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json @@ -135,5 +135,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json index 3f99330c5b..2358ec054e 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json @@ -136,5 +136,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json index 544ae5fb6f..252b6dad9c 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json @@ -138,5 +138,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json index ec260e76f3..1962c54912 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json index e178e47042..68ae2439d7 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json index f88b59d4d7..a3ab600254 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json @@ -163,5 +163,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "06003" + "filament_id": "OFusbWjj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json index 0c1d8e5c2a..9fdfe1559b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json @@ -145,5 +145,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "06004" + "filament_id": "OFLgwqp2" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json index 4b719767d0..820b021b9e 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "06004" + "filament_id": "OFLgwqp2" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json index 346247a4aa..3129330404 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "06004" + "filament_id": "OFLgwqp2" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json index 9f28d154fb..eafa06d339 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "06004" + "filament_id": "OFLgwqp2" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json index aa981c3a30..8fbc885c07 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json b/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json index 9b1ec357b7..c5297f78ed 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json @@ -142,5 +142,5 @@ "Creality Hi 0.6 nozzle", "Creality Hi 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json index c3e7bed7f8..be08cd5bb4 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json index 717c0835dc..2d764065a5 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json @@ -136,5 +136,5 @@ "Creality K1 SE 0.6 nozzle", "Creality K1 SE 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json index 3679080841..0c80515aaa 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json @@ -134,5 +134,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json index fa5a7a6ac2..4b3f6b5a60 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json @@ -157,5 +157,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json index 7626dae835..f0513b112b 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json index f95f80a5a4..c4175d3ead 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json index 2d4608e32f..193bf2dee6 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json @@ -155,5 +155,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json index 973044ff35..3d8a1cbdd6 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json @@ -157,5 +157,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json index 6480fb0dad..34f98b70ae 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json @@ -136,5 +136,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2-all.json index 910f9888fe..f47ea8a5d8 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2-all.json @@ -155,5 +155,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json index 8e9b21749f..00afa33b11 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json @@ -164,5 +164,5 @@ "Creality SPARKX i7 0.6 nozzle", "Creality SPARKX i7 0.8 nozzle" ], - "filament_id": "01001" + "filament_id": "OFCZsqXg" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json index f55de5ef56..fb92e57672 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json index ac7a413888..e63ee3717d 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json index f15929e486..d1a9cb3a38 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json index af9c28e809..368b104901 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 SE 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json index b44b0ceb3d..215a01e8a7 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K1 SE_CFS-C 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json index f4f4b2e536..d6d269db66 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json index 952822e040..5ed8fbe15f 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json index f65f1b5ec5..fe506e1147 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json @@ -153,5 +153,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json index ebb185aabc..f9267d07e8 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json @@ -162,5 +162,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json index b32297ee79..9c465b0d30 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json index 758086354d..94ac06f8bb 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json @@ -145,5 +145,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json index b280582803..d0344132b6 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json index ccb1e5a690..53b640d939 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json @@ -172,5 +172,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "02001" + "filament_id": "OFTnWzBs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json index e13b1c8420..c817224955 100644 --- a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json @@ -181,5 +181,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "12002" + "filament_id": "OFNvBIL0" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json index 314b8641aa..4f7d4ddf2f 100644 --- a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json @@ -177,5 +177,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "12002" + "filament_id": "OFNvBIL0" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json b/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json index fd0c47db8e..02756e4af3 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json @@ -152,5 +152,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json index e822a0fa7a..0af9505f19 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json index 8e9d53c893..7afa71cd4c 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json index 416ee437c0..058d4439ea 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json index d8dcb3862b..f90af90902 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json index b74711cd62..7580e9f4e9 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json index a0fdc30bab..1e307464b1 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json index 84a8a22de5..9134285053 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json @@ -139,5 +139,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json index 95f30eb149..154376069e 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json @@ -157,5 +157,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json index bc3de91594..43ccb7898c 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json @@ -175,5 +175,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "01004" + "filament_id": "OFXnToSX" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json index 05b64e3648..62f308a71b 100644 --- a/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "P1003" + "filament_id": "OFrOh600" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json b/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json index c290ac0748..5d7f4818bd 100644 --- a/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "P1001" + "filament_id": "OFPkCJKE" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json index bee02a0f14..20bd0700ab 100644 --- a/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json @@ -168,5 +168,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "P1004" + "filament_id": "OF66KUAN" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json b/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json index 47e17257bd..acd8558abe 100644 --- a/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "P1002" + "filament_id": "OFKbdiiJ" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @Hi-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @Hi-all.json index 66fb01a064..1e77a28ccf 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @Hi-all.json @@ -123,5 +123,5 @@ "Creality Hi 0.6 nozzle", "Creality Hi 0.8 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @K1C-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @K1C-all.json index 208583adff..626d34362d 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @K1C-all.json @@ -126,5 +126,5 @@ "Creality K1C 0.6 nozzle", "Creality K1C 0.8 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Plus-all.json index f9d68e033a..8d1dc8a1c0 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Plus-all.json @@ -128,5 +128,5 @@ "Creality K2 Plus 0.6 nozzle", "Creality K2 Plus 0.8 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Pro-all.json index d88e732e2f..fca00e01ab 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2 Pro-all.json @@ -128,5 +128,5 @@ "Creality K2 Pro 0.6 nozzle", "Creality K2 Pro 0.8 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2-all.json index 5c62188c93..da86d9e27e 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @K2-all.json @@ -128,5 +128,5 @@ "Creality K2 0.6 nozzle", "Creality K2 0.8 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Basic PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Soleyin Basic PETG @SPARKX i7-all.json index 5b73363f5d..79b83b8e69 100644 --- a/resources/profiles/Creality/filament/Soleyin Basic PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Soleyin Basic PETG @SPARKX i7-all.json @@ -118,5 +118,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "06005" + "filament_id": "OFBLktDy" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json index 0abc37c050..b159f9141b 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json @@ -149,5 +149,5 @@ "compatible_printers": [ "Creality Ender-3 V4 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json index 8340313872..163ed96d8a 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json @@ -142,5 +142,5 @@ "compatible_printers": [ "Creality Hi 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json index b32740a47c..5612fad4d2 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1 Max_CFS-C 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json index 2b0d1058cc..f975e2b6c4 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1C 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json index 9cfa3eb9e9..9f4c2d9029 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1C_CFS-C 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json index 4cb9bfa4ff..0c7bd485be 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K1_CFS-C 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json index b4e93a4aea..06b1fc8729 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json @@ -161,5 +161,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json index 63b6a48fa2..37702f76c0 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K2 Pro 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json index 590e345f39..7ff723f655 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json @@ -146,5 +146,5 @@ "compatible_printers": [ "Creality K2 SE 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json index 3e8753160b..2d68106751 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json @@ -164,5 +164,5 @@ "compatible_printers": [ "Creality K2 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json index 3c15bcb7d0..9bad5351c2 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json @@ -170,5 +170,5 @@ "compatible_printers": [ "Creality SPARKX i7 0.4 nozzle" ], - "filament_id": "01601" + "filament_id": "OF02UAVh" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json index 449aed7663..77f2c6a6bf 100644 --- a/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E3001" + "filament_id": "OFTXduCM" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json index d9e439ef2b..1afd5f1511 100644 --- a/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json @@ -155,5 +155,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E4001" + "filament_id": "OFUmS5z5" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json index 0befedf49f..08ab12e2c9 100644 --- a/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json @@ -185,5 +185,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E8001" + "filament_id": "OFHaYaB1" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PETG @K2 Plus-all.json index abbc6f48cc..745ca87011 100644 --- a/resources/profiles/Creality/filament/eSUN PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PETG @K2 Plus-all.json @@ -83,5 +83,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E2001" + "filament_id": "OF3kBrdA" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PETG+HS @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PETG+HS @K2 Plus-all.json index 2ac796d298..db95688083 100644 --- a/resources/profiles/Creality/filament/eSUN PETG+HS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PETG+HS @K2 Plus-all.json @@ -80,5 +80,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E2002" + "filament_id": "OFrdZ0cK" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PETG-Basic @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PETG-Basic @K2 Plus-all.json index 5803a71cef..4885eb89a0 100644 --- a/resources/profiles/Creality/filament/eSUN PETG-Basic @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PETG-Basic @K2 Plus-all.json @@ -83,5 +83,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E2003" + "filament_id": "OFFbQscs" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json index a5bdfb25cd..d4f35de9be 100644 --- a/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json @@ -159,5 +159,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1001" + "filament_id": "OFqINlYj" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-CF @K2 Plus-all.json index 3712719e47..e76dc3d1fa 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-CF @K2 Plus-all.json @@ -74,5 +74,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1005" + "filament_id": "OFnHc3D6" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-HS @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-HS @K2 Plus-all.json index a5a1e52d46..0c540de90b 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-HS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-HS @K2 Plus-all.json @@ -65,5 +65,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1006" + "filament_id": "OFOHOf2F" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json index 99550707a2..2e4b7703a0 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "00035" + "filament_id": "OFi5RSve" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json index 07fdbcd5b2..d5f4324da1 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json @@ -165,5 +165,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1004" + "filament_id": "OFhbolij" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json index 5a1f80d5de..bca728ae00 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1003" + "filament_id": "OFDETOM6" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json index d09abc2625..fa57453069 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json @@ -162,5 +162,5 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "filament_id": "E1002" + "filament_id": "OFIRUqWi" } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality CR-10 Max 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 Max 0.4 nozzle.json index 73687d8be7..e9cadc9124 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 Max 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 Max 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-10 Max", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality CR10Max", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality CR-10 Max.json b/resources/profiles/Creality/machine/Creality CR-10 Max.json index 5922576073..82a5d1d760 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 Max.json +++ b/resources/profiles/Creality/machine/Creality CR-10 Max.json @@ -8,5 +8,5 @@ "bed_model": "creality_cr10max_buildplate_model.stl", "bed_texture": "creality_cr10max_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json index 34ae5f05e3..9dc1ae8962 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json @@ -116,7 +116,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "M220 S100 ;Reset feed rate \nM221 S100 ;Reset flow rate \n\nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp\nG28 ;Home \nG92 E0 ;Reset extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position \nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", "machine_end_gcode": "G91 ;Relative positioning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z3 ;Raise Z more \nG90 ;Absolute positioning \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.4 nozzle.json index 99ddf4e2e2..12805d5e86 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.4 nozzle.json @@ -116,7 +116,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "M220 S100 ;Reset feed rate \nM221 S100 ;Reset flow rate \n\nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp\nG28 ;Home \nG92 E0 ;Reset extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position \nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", "machine_end_gcode": "G91 ;Relative positioning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z3 ;Raise Z more \nG90 ;Absolute positioning \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json index 32bec9dd85..60ae6d2db8 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json @@ -116,7 +116,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "M220 S100 ;Reset feed rate \nM221 S100 ;Reset flow rate \n\nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp\nG28 ;Home \nG92 E0 ;Reset extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position \nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", "machine_end_gcode": "G91 ;Relative positioning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z3 ;Raise Z more \nG90 ;Absolute positioning \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json index 25d0d2a2df..1ae4e24163 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json @@ -116,7 +116,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "M220 S100 ;Reset feed rate \nM221 S100 ;Reset flow rate \n\nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp\nG28 ;Home \nG92 E0 ;Reset extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position \nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", "machine_end_gcode": "G91 ;Relative positioning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z3 ;Raise Z more \nG90 ;Absolute positioning \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE.json b/resources/profiles/Creality/machine/Creality CR-10 SE.json index 6e57e38c0c..56af1ec8a6 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE.json @@ -8,5 +8,5 @@ "bed_model": "creality_cr10se_buildplate_model.stl", "bed_texture": "creality_cr10se_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality HF Generic PLA;Creality HF Generic Speed PLA;Creality Generic PETG;Creality Generic TPU;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PETG @Creality;Generic TPU @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-10 V2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 V2 0.4 nozzle.json index af449cd705..7b70121bef 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 V2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 V2 0.4 nozzle.json @@ -106,7 +106,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG28 ; home all\nG1 Z2 F240\nG1 X2 Y10 F3000\nG1 Z0.28 F240\nG92 E0\nG1 Y190 E15 F1500 ; intro line\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E15 F1200 ; intro line\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600{endif} ; Move print head further up\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality CR-10 V2.json b/resources/profiles/Creality/machine/Creality CR-10 V2.json index a709fe2309..6098003c41 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 V2.json +++ b/resources/profiles/Creality/machine/Creality CR-10 V2.json @@ -8,5 +8,5 @@ "bed_model": "creality_cr10v2_buildplate_model.stl", "bed_texture": "creality_cr10v2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-10 V3 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 V3 0.4 nozzle.json index 10837d9271..6eee0b7357 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 V3 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 V3 0.4 nozzle.json @@ -109,7 +109,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S{first_layer_temperature[0]} ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0\nG1 X2 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600{endif} ; Move print head further up\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality CR-10 V3 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 V3 0.6 nozzle.json index 6b518c35a5..8ec571442d 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 V3 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 V3 0.6 nozzle.json @@ -110,7 +110,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S{first_layer_temperature[0]} ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nG1 Z0.28 F240\nG92 E0\nG1 X2 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600{endif} ; Move print head further up\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality CR-10 V3.json b/resources/profiles/Creality/machine/Creality CR-10 V3.json index 37cfe67f05..39958036b8 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 V3.json +++ b/resources/profiles/Creality/machine/Creality CR-10 V3.json @@ -8,5 +8,5 @@ "bed_model": "creality_cr10v3_buildplate_model.stl", "bed_texture": "creality_cr10v3_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-6 Max 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 Max 0.2 nozzle.json index 1a91139859..db3d5f8ac1 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 Max 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 Max 0.2 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 Max", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.2", "default_print_profile": "0.16mm Optimal @Creality CR-6 0.2", diff --git a/resources/profiles/Creality/machine/Creality CR-6 Max 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 Max 0.4 nozzle.json index 0c8ce148a6..5f0d68af0c 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 Max 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 Max 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 Max", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality CR-6 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality CR-6 Max 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 Max 0.6 nozzle.json index aeea306f78..eb2b0bfb2a 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 Max 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 Max 0.6 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 Max", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.6", "default_print_profile": "0.20mm Standard @Creality CR-6 0.6", diff --git a/resources/profiles/Creality/machine/Creality CR-6 Max 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 Max 0.8 nozzle.json index 417eba9589..fc9adbc8b6 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 Max 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 Max 0.8 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 Max", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.8", "default_print_profile": "0.32mm Standard @Creality CR-6 0.8", diff --git a/resources/profiles/Creality/machine/Creality CR-6 Max.json b/resources/profiles/Creality/machine/Creality CR-6 Max.json index aa1925da6e..af7f785051 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 Max.json +++ b/resources/profiles/Creality/machine/Creality CR-6 Max.json @@ -8,5 +8,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_CR_6_Max", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-6 SE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 SE 0.2 nozzle.json index 757ee910bf..d738e8569c 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 SE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 SE 0.2 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 SE", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.2", "default_print_profile": "0.16mm Optimal @Creality CR-6 0.2", diff --git a/resources/profiles/Creality/machine/Creality CR-6 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 SE 0.4 nozzle.json index 8c862ad0c1..8ad215b2f5 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 SE 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 SE", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality CR-6 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality CR-6 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 SE 0.6 nozzle.json index d5f40f373f..f5f19131b8 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 SE 0.6 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 SE", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.6", "default_print_profile": "0.20mm Standard @Creality CR-6 0.6", diff --git a/resources/profiles/Creality/machine/Creality CR-6 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality CR-6 SE 0.8 nozzle.json index a38fa30329..8afdf0d906 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-6 SE 0.8 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality CR-6 SE", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.8", "default_print_profile": "0.32mm Standard @Creality CR-6 0.8", diff --git a/resources/profiles/Creality/machine/Creality CR-6 SE.json b/resources/profiles/Creality/machine/Creality CR-6 SE.json index 2d7026c31d..63fc2fc19b 100644 --- a/resources/profiles/Creality/machine/Creality CR-6 SE.json +++ b/resources/profiles/Creality/machine/Creality CR-6 SE.json @@ -8,5 +8,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_CR_6_SE", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json index 165a332297..9d1de682c3 100644 --- a/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json @@ -9,7 +9,7 @@ "gcode_flavor": "marlin", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality CR-M4", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality CR-M4.json b/resources/profiles/Creality/machine/Creality CR-M4.json index 0cb519eec9..d4df994d2c 100644 --- a/resources/profiles/Creality/machine/Creality CR-M4.json +++ b/resources/profiles/Creality/machine/Creality CR-M4.json @@ -8,5 +8,5 @@ "bed_model": "creality_crm4_buildplate_model.stl", "bed_texture": "creality_crm4_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json index 29762960b6..ce445321ed 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json index 59497d500b..7e6a63ab18 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.4 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json index a33329652b..5becaffc5d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json index d77ba1063f..03beab016f 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json index d6715bb636..d7305a3b9e 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.4 nozzle.json index ac1a04a609..a2bf0df0ad 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.4 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json index f0377efa29..66c1f038ba 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json index b8371d1770..f42b8f288d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json @@ -112,7 +112,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro.json index 982a2256bf..407f2d9833 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v2_buildplate_model.stl", "bed_texture": "creality_ender3v2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 0.4 nozzle.json index c8ee1f7a0f..72e1aeb855 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 0.4 nozzle.json @@ -106,7 +106,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json index 66d9161841..6f61fc3c0b 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json @@ -110,7 +110,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling \nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.4 nozzle.json index a871bc6d03..08579e0a00 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.4 nozzle.json @@ -110,7 +110,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json index 53d5923358..9b688aae93 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json @@ -110,7 +110,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json index 29735d253d..73f2340b40 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json @@ -111,7 +111,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus.json index 134df7200d..68badab1c3 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3s1plus_buildplate_model.stl", "bed_texture": "creality_ender3s1plus_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro 0.4 nozzle.json index fa9f815d66..d7cbb9292d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro 0.4 nozzle.json @@ -109,7 +109,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro.json index 2ce3d35e19..e47e3ab7ba 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Pro.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3s1pro_buildplate_model.stl", "bed_texture": "creality_ender3s1pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1.json b/resources/profiles/Creality/machine/Creality Ender-3 S1.json index aec61a4289..fb405f39f4 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3s1_buildplate_model.stl", "bed_texture": "creality_ender3s1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V2 0.4 nozzle.json index 2e7787e04e..47e5f72147 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V2 0.4 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-3 V2", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality Ender3V2", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo 0.4 nozzle.json index e07ac17f02..7cddabe415 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Creality Ender-3 V2 Neo", "printer_structure": "i3", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality Ender3V2 Neo", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo.json b/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo.json index 827ae40bc3..b22add48ea 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V2 Neo.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v2neo_buildplate_model.stl", "bed_texture": "creality_ender3v2neo_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS;Creality Generic ASA;Creality Generic PLA;Creality Generic PETG" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PLA @Creality;Generic PETG @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V2.json b/resources/profiles/Creality/machine/Creality Ender-3 V2.json index 88665f5892..a5ef1d123d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V2.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V2.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v2_buildplate_model.stl", "bed_texture": "creality_ender3v2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json index 4bc5a8a963..de3c4286dc 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json @@ -126,7 +126,7 @@ "change_filament_gcode": "PAUSE", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "M140 S0\nM104 S0\nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json index 317b7b3499..75ceca6c79 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json @@ -126,7 +126,7 @@ "change_filament_gcode": "PAUSE", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "M140 S0\nM104 S0\nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.2 nozzle.json index 9b1fa97ba2..e27b0b3c54 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.2 nozzle.json @@ -117,7 +117,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan0_min VALUE=30 ;compensate for fan speed\nSET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500 ;revert accel_to_decel back to 2500\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nM140 S[bed_temperature_initial_layer_single] ;Set bed temp\nG28 X Y ;Home XY axes\nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nG28 Z ;Home Z axis & load bed mesh\nBED_MESH_CALIBRATE PROBE_COUNT=5,5 ;Auto bed level\n\nM104 S[nozzle_temperature_initial_layer] ;Set nozzle temp\nG92 E0 ;Reset Extruder\nG1 X-2.0 Y20 Z0.3 F5000.0 ;Move to start position\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 Z0.2 ;Lower nozzle to printing height\nG1 Y145.0 F1500.0 E15 ;Draw the first line\nG1 X-1.7 F5000.0 ;Move to side a little\nG1 Y30 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder", "machine_end_gcode": "G92 E0 ;Reset Extruder\nG1 E-1.2 Z{max_layer_z + 0.5} F1800 ;Retract and raise Z\n{if max_layer_z < 50}\nG1 Z{max_layer_z + 25} F900 ;Raise Z more\n{endif}\n\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json index a0a2f1fe1b..1607a8bd4e 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json @@ -117,7 +117,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan0_min VALUE=30 ;compensate for fan speed\nSET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500 ;revert accel_to_decel back to 2500\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nM140 S[bed_temperature_initial_layer_single] ;Set bed temp\nG28 X Y ;Home XY axes\nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nG28 Z ;Home Z axis & load bed mesh\nBED_MESH_CALIBRATE PROBE_COUNT=5,5 ;Auto bed level\n\nM104 S[nozzle_temperature_initial_layer] ;Set nozzle temp\nG92 E0 ;Reset Extruder\nG1 X-2.0 Y20 Z0.3 F5000.0 ;Move to start position\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 Z0.2 ;Lower nozzle to printing height\nG1 Y145.0 F1500.0 E15 ;Draw the first line\nG1 X-1.7 F5000.0 ;Move to side a little\nG1 Y30 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder", "machine_end_gcode": "G92 E0 ;Reset Extruder\nG1 E-1.2 Z{max_layer_z + 0.5} F1800 ;Retract and raise Z\n{if max_layer_z < 50}\nG1 Z{max_layer_z + 25} F900 ;Raise Z more\n{endif}\n\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.6 nozzle.json index 7141b3088f..cbc3d0cc58 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.6 nozzle.json @@ -117,7 +117,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan0_min VALUE=30 ;compensate for fan speed\nSET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500 ;revert accel_to_decel back to 2500\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nM140 S[bed_temperature_initial_layer_single] ;Set bed temp\nG28 X Y ;Home XY axes\nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nG28 Z ;Home Z axis & load bed mesh\nBED_MESH_CALIBRATE PROBE_COUNT=5,5 ;Auto bed level\n\nM104 S[nozzle_temperature_initial_layer] ;Set nozzle temp\nG92 E0 ;Reset Extruder\nG1 X-2.0 Y20 Z0.3 F5000.0 ;Move to start position\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 Z0.2 ;Lower nozzle to printing height\nG1 Y145.0 F1500.0 E15 ;Draw the first line\nG1 X-1.7 F5000.0 ;Move to side a little\nG1 Y30 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder", "machine_end_gcode": "G92 E0 ;Reset Extruder\nG1 E-1.2 Z{max_layer_z + 0.5} F1800 ;Retract and raise Z\n{if max_layer_z < 50}\nG1 Z{max_layer_z + 25} F900 ;Raise Z more\n{endif}\n\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.8 nozzle.json index da6689b46d..d4eadbf772 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.8 nozzle.json @@ -117,7 +117,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan0_min VALUE=30 ;compensate for fan speed\nSET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500 ;revert accel_to_decel back to 2500\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nM140 S[bed_temperature_initial_layer_single] ;Set bed temp\nG28 X Y ;Home XY axes\nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nG28 Z ;Home Z axis & load bed mesh\nBED_MESH_CALIBRATE PROBE_COUNT=5,5 ;Auto bed level\n\nM104 S[nozzle_temperature_initial_layer] ;Set nozzle temp\nG92 E0 ;Reset Extruder\nG1 X-2.0 Y20 Z0.3 F5000.0 ;Move to start position\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 Z0.2 ;Lower nozzle to printing height\nG1 Y145.0 F1500.0 E15 ;Draw the first line\nG1 X-1.7 F5000.0 ;Move to side a little\nG1 Y30 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder", "machine_end_gcode": "G92 E0 ;Reset Extruder\nG1 E-1.2 Z{max_layer_z + 0.5} F1800 ;Retract and raise Z\n{if max_layer_z < 50}\nG1 Z{max_layer_z + 25} F900 ;Raise Z more\n{endif}\n\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json index 63ac65eec6..1911d1f0d0 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3ke_buildplate_model.stl", "bed_texture": "creality_ender3v3ke_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" + "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json index ac9f51f5cb..f9b91395ba 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json @@ -123,7 +123,7 @@ "change_filament_gcode": "PAUSE", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "M140 S0\nM104 S0\nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json index 52db2b831d..d0c4bee18a 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json @@ -123,7 +123,7 @@ "change_filament_gcode": "PAUSE", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "machine_start_gcode": "M140 S0\nM104 S0\nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus.json index b471a9ab08..919076763b 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3plus_buildplate_model.stl", "bed_texture": "creality_ender3v3plus_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" + "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json index e75a79ce23..dc04436c04 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json @@ -118,7 +118,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "file_start_gcode": ";FLAVOR:Marlin\\n;TIME:{print_time_sec}\\n;Filament used:{used_filament_length}m\\n;Layer height:{layer_height}", "machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nM190 S[bed_temperature_initial_layer_single] ;Set and wait for bed temp to stabilize \nG28 ;Home \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json index 59c207b62a..22df39dd1d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.4 nozzle.json @@ -118,7 +118,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "file_start_gcode": ";FLAVOR:Marlin\\n;TIME:{print_time_sec}\\n;Filament used:{used_filament_length}m\\n;Layer height:{layer_height}", "machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nM190 S[bed_temperature_initial_layer_single] ;Set and wait for bed temp to stabilize \nG28 ;Home \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json index 713e8e7332..881a46fc3a 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json @@ -118,7 +118,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "file_start_gcode": ";FLAVOR:Marlin\\n;TIME:{print_time_sec}\\n;Filament used:{used_filament_length}m\\n;Layer height:{layer_height}", "machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nM190 S[bed_temperature_initial_layer_single] ;Set and wait for bed temp to stabilize \nG28 ;Home \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json index b904c4b7f3..44e9b97afb 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json @@ -118,7 +118,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA @Ender-3V3-all" + "Generic PLA @Creality Ender-3V3-all" ], "file_start_gcode": ";FLAVOR:Marlin\\n;TIME:{print_time_sec}\\n;Filament used:{used_filament_length}m\\n;Layer height:{layer_height}", "machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nM190 S[bed_temperature_initial_layer_single] ;Set and wait for bed temp to stabilize \nG28 ;Home \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json index 2ceb56c108..71786a500d 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3se_buildplate_model.stl", "bed_texture": "creality_ender3v3se_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" + "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3.json b/resources/profiles/Creality/machine/Creality Ender-3 V3.json index 74f5c275fc..5650e068aa 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3_buildplate_model.stl", "bed_texture": "creality_ender3v3_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS @Ender-3V3-all;Creality Generic ASA @Ender-3V3-all;Creality Generic PETG @Ender-3V3-all;Creality Generic PLA @Ender-3V3-all;Creality Generic PLA High Speed @Ender-3V3-all;Creality Generic PLA Matte @Ender-3V3-all;Creality Generic PLA Silk @Ender-3V3-all;Creality Generic TPU @Ender-3V3-all" + "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3.json b/resources/profiles/Creality/machine/Creality Ender-3.json index 66a234e378..70bdb03d55 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3.json +++ b/resources/profiles/Creality/machine/Creality Ender-3.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v2_buildplate_model.stl", "bed_texture": "creality_ender3v2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 0.4 nozzle.json index c04de58097..44434bbf93 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 0.4 nozzle.json @@ -105,7 +105,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Max.json b/resources/profiles/Creality/machine/Creality Ender-5 Max.json index 8c5354fea2..9c10f97f05 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Max.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Max.json @@ -9,5 +9,5 @@ "bed_texture": "creality_ender5max_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Hyper PLA-CF @Ender-5Max-all;Creality Hyper PLA @Ender-5Max-all;Creality Hyper ABS @Ender-5Max-all;Creality Generic TPU @Ender-5Max-all;Creality Generic ASA @Ender-5Max-all;Creality Silk PLA @Ender-5Max-all;Creality Generic PLA @Ender-5Max-all;Creality Generic PETG @Ender-5Max-all;Creality Generic ABS @Ender-5Max-all;Creality Generic PA @Ender-5Max-all" + "default_materials": "Creality Hyper PLA-CF @Ender-5Max-all;Creality Hyper PLA @Ender-5Max-all;Creality Hyper ABS @Ender-5Max-all;Generic TPU @Creality Ender-5Max-all;Generic ASA @Creality Ender-5Max-all;Creality Silk PLA @Ender-5Max-all;Generic PLA @Creality Ender-5Max-all;Generic PETG @Creality Ender-5Max-all;Generic ABS @Creality Ender-5Max-all;Generic PA @Creality Ender-5Max-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Plus 0.4 nozzle.json index bcca726c1b..66fea8f254 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Plus 0.4 nozzle.json @@ -108,7 +108,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; move print head out of the way\n{if max_layer_z < printable_height-10}G1 Z{z_offset+ printable_height-10} F600{endif} ; Move print bed close to the bottom\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Plus.json b/resources/profiles/Creality/machine/Creality Ender-5 Plus.json index 2950cdacf5..f672b4db0a 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Plus.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Plus.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender5plus_buildplate_model.stl", "bed_texture": "creality_ender5plus_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json index 285297c0df..435b89d3c9 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.2 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.2", "default_print_profile": "0.16mm Optimal @Creality Ender5Pro (2019) 0.2", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json index 375ad54f20..a2bffd1951 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.25 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.25", "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.25", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json index fc273af47e..62c133018f 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.3 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.3", "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.3", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json index 860e1dcc05..87e58181e4 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.4 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019)", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json index 47ad87824a..e46303cd0b 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.5 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.5", "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.5", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json index 11a71495b2..ca4875c1eb 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.6 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.6", "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.6", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json index 45332a9788..d3597d37af 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 0.8 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "0.8", "default_print_profile": "0.20mm Standard @Creality Ender5Pro (2019) 0.8", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json index 5d5230f5af..841bab4eab 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019) 1.0 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Ender-5 Pro (2019)", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "printer_variant": "1.0", "default_print_profile": "0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json index 1863dd03c6..e8185a0458 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Pro (2019).json @@ -8,5 +8,5 @@ "bed_model": "creality_ender5pro_buildplate_model.stl", "bed_texture": "creality_ender5pro_buildplate_texture.svg", "hotend_model": "hotend.stl", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5 S1 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 S1 0.4 nozzle.json index 6ef5e99e94..58a98c2064 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 S1 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 S1 0.4 nozzle.json @@ -105,7 +105,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 S1.json b/resources/profiles/Creality/machine/Creality Ender-5 S1.json index 23ec29b299..8ef8baed2f 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 S1.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 S1.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender5s1_buildplate_model.stl", "bed_texture": "creality_ender5s1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5.json b/resources/profiles/Creality/machine/Creality Ender-5.json index f43c00b81b..72f2f30680 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5.json +++ b/resources/profiles/Creality/machine/Creality Ender-5.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender5_buildplate_model.stl", "bed_texture": "creality_ender5_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5S 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5S 0.4 nozzle.json index 5b9fbe6a66..c6068c5e24 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5S 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5S 0.4 nozzle.json @@ -101,7 +101,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-5S.json b/resources/profiles/Creality/machine/Creality Ender-5S.json index ff1f2633fa..a3dfb27ff6 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5S.json +++ b/resources/profiles/Creality/machine/Creality Ender-5S.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender5s_buildplate_model.stl", "bed_texture": "creality_ender5s_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Ender-6 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-6 0.4 nozzle.json index 3e8b6f1216..d61f549c7f 100644 --- a/resources/profiles/Creality/machine/Creality Ender-6 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-6 0.4 nozzle.json @@ -105,7 +105,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600{endif} ; Move print bed down\nG1 X50 Y50 F{travel_speed*60} ; move print head out of the way\n{if max_layer_z < printable_height-10}G1 Z{z_offset+ printable_height-10} F600{endif} ; Move print bed close to the bottom\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", diff --git a/resources/profiles/Creality/machine/Creality Ender-6.json b/resources/profiles/Creality/machine/Creality Ender-6.json index f327bd97b0..9f3b5e2cc8 100644 --- a/resources/profiles/Creality/machine/Creality Ender-6.json +++ b/resources/profiles/Creality/machine/Creality Ender-6.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender6_buildplate_model.stl", "bed_texture": "creality_ender6_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality" } diff --git a/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json index b7a1676baa..57dcd7e949 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json @@ -91,7 +91,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @Hi-all" + "Generic PLA @System" ], "deretraction_speed": "40", "extruder_colour": "#018001", diff --git a/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json index 74cd4559d5..0372431a1e 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json @@ -135,7 +135,7 @@ "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X260 Y180 F30000\nG1 Z{z_after_toolchange} F600", "default_filament_profile": [ - "Creality Generic PLA @Hi-all" + "Generic PLA @Creality Hi-all" ], "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "G1 X0 Y180 F8000\nEND_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json index 402771c410..f7bcd5884d 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json @@ -135,7 +135,7 @@ "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X260 Y180 F30000\nG1 Z{z_after_toolchange} F600", "default_filament_profile": [ - "Creality Generic PLA @Hi-all" + "Generic PLA @Creality Hi-all" ], "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "G1 X0 Y180 F8000\nEND_PRINT", diff --git a/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json index 5f43c0992c..23e19a2a66 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json @@ -86,7 +86,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @Hi-all" + "Generic PLA @Hi-all" ], "deretraction_speed": "40", "extruder_colour": "#018001", diff --git a/resources/profiles/Creality/machine/Creality Hi.json b/resources/profiles/Creality/machine/Creality Hi.json index c1b5173f32..279daf531c 100644 --- a/resources/profiles/Creality/machine/Creality Hi.json +++ b/resources/profiles/Creality/machine/Creality Hi.json @@ -9,5 +9,5 @@ "bed_texture": "creality_hi_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "", - "default_materials": "Creality Generic ABS @Hi-all;Creality Generic ASA @Hi-all;Creality Generic ASA-CF @Hi-all;Creality Generic PETG @Hi-all;Creality Generic PETG-CF @Hi-all;Creality Generic PLA @Hi-all;Creality Generic PLA High Speed @Hi-all;Creality Generic PLA Matte @Hi-all;Creality Generic PLA Silk @Hi-all;Creality Generic PLA-CF @Hi-all;Creality Generic PLA Wood @Hi-all;Creality Generic TPU @Hi-all" + "default_materials": "Generic ABS @Creality Hi-all;Generic ABS @Hi-all;Generic ASA @Creality Hi-all;Generic ASA-CF @Creality Hi-all;Generic PETG @Creality Hi-all;Generic PETG @Hi-all;Generic PETG-CF @Creality Hi-all;Generic PLA @Creality Hi-all;Generic PLA @Hi-all;Generic PLA High Speed @Creality Hi-all;Generic PLA Matte @Creality Hi-all;Generic PLA Silk @Creality Hi-all;Generic PLA-CF @Creality Hi-all;Generic PLA Wood @Creality Hi-all;Generic TPU @Creality Hi-all" } diff --git a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json index 4b1fad646b..4cde2d1f5e 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json @@ -121,7 +121,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json index 1a849f15d9..afaa516e7e 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json @@ -121,7 +121,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json index efc77b1623..417c088cb7 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json @@ -121,7 +121,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index d41f4b8ec9..c3978a05eb 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 8c0f630a43..2ebe0a97c2 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index 2593be039b..b59c1f54a4 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 Max.json b/resources/profiles/Creality/machine/Creality K1 Max.json index af8379ad83..5680990e70 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max.json +++ b/resources/profiles/Creality/machine/Creality K1 Max.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k1max_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Generic ABS;Creality Generic ASA;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG;Creality Generic PLA;Creality HF Generic PLA;Creality HF Generic Speed PLA;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality" } diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json index 0ffbbb8fc2..992ae60a0f 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality HF Generic PLA" + "Generic PLA HF @Creality" ], "deretraction_speed": "40", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json index 426f93e8be..012ad881ea 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_Max_CFS_C", - "default_materials": "Creality Generic ABS;Creality Generic ASA;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG;Creality Generic PLA;Creality HF Generic PLA;Creality HF Generic Speed PLA;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality" } diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index fc50432dd0..95db217016 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -121,7 +121,7 @@ "manual_filament_change": "0", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json index 93a4641702..b78cf80658 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "deretraction_speed": "30", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json index aa98cb2b00..175ff1da66 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "deretraction_speed": "30", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1 SE.json b/resources/profiles/Creality/machine/Creality K1 SE.json index 82a8d97b63..1cb9769e0e 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE.json +++ b/resources/profiles/Creality/machine/Creality K1 SE.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k1se_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Generic ABS @K1-all;Creality Generic ASA @K1-all;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG @K1-all;Creality Generic PLA @K1-all;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU @K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ABS @K1 SE-all;Generic ASA @Creality K1-all;Generic ASA @K1 SE-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PETG @K1 SE-all;Generic PLA @Creality K1-all;Generic PLA @K1 SE-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic PLA-CF @K1 SE-all;Generic TPU @Creality K1-all;Generic TPU @K1 SE-all" } diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json index 14077b6693..510e17ecf5 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json @@ -82,7 +82,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "deretraction_speed": "30", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json index 7c41c72dff..835c133338 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_SE_CFS_C", - "default_materials": "Creality Generic ABS @K1-all;Creality Generic ASA @K1-all;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG @K1-all;Creality Generic PLA @K1-all;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU @K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all" } diff --git a/resources/profiles/Creality/machine/Creality K1.json b/resources/profiles/Creality/machine/Creality K1.json index 4892cfbaca..a70046460a 100644 --- a/resources/profiles/Creality/machine/Creality K1.json +++ b/resources/profiles/Creality/machine/Creality K1.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k1_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Generic ABS;Creality Generic ASA;Creality Generic PC @K1-all;Creality Generic PLA;Creality HF Generic PLA;Creality HF Generic Speed PLA;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PETG;Creality Generic TPU" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PC @Creality K1-all;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PETG @Creality;Generic TPU @Creality" } diff --git a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json index 87ccb311bf..5d8154c1f1 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json index b00db3d173..73328c69f4 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json index 069b665e5f..2c59727abf 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json @@ -122,7 +122,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K1C.json b/resources/profiles/Creality/machine/Creality K1C.json index 7db363a7d7..18e80dab92 100644 --- a/resources/profiles/Creality/machine/Creality K1C.json +++ b/resources/profiles/Creality/machine/Creality K1C.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k1c_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Generic ABS @K1-all;Creality Generic ASA @K1-all;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG @K1-all;Creality Generic PLA @K1-all;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU @K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ABS @K1C-all;Generic ASA @Creality K1-all;Generic ASA @K1C-all;Generic PA-CF @Creality K1-all;Generic PA-CF @K1C-all;Generic PC @Creality K1-all;Generic PC @K1C-all;Generic PETG @Creality K1-all;Generic PETG @K1C-all;Generic PLA @Creality K1-all;Generic PLA @K1C-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic PLA-CF @K1C-all;Generic TPU @Creality K1-all;Generic TPU @K1C-all" } diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json index 225b760c9c..b3221b0dd5 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "deretraction_speed": "40", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C.json index 9cf7839332..6e80f1fbd4 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1C_CFS_C", - "default_materials": "Creality Generic ABS @K1-all;Creality Generic ASA @K1-all;Creality Generic PA-CF @K1-all;Creality Generic PC @K1-all;Creality Generic PETG @K1-all;Creality Generic PLA @K1-all;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PLA-CF @K1-all;Creality Generic TPU @K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all" } diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json index d4a7d9e913..04cb946b94 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Generic PLA @Creality K1-all" ], "deretraction_speed": "40", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C.json b/resources/profiles/Creality/machine/Creality K1_CFS-C.json index 268a48e994..c5986ae635 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_CFS_C", - "default_materials": "Creality Generic ABS;Creality Generic ASA;Creality Generic PC @K1-all;Creality Generic PLA;Creality HF Generic PLA;Creality HF Generic Speed PLA;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all;Creality Generic PETG;Creality Generic TPU" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PC @Creality K1-all;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PETG @Creality;Generic TPU @Creality" } diff --git a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json index a0a342d406..c75b9d04f1 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json @@ -122,7 +122,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "deretraction_speed": [ "40" diff --git a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json index c3d6488839..1c28315013 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json @@ -118,7 +118,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "deretraction_speed": [ "40" diff --git a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json index b17c6f479a..8eb0c83877 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json @@ -120,7 +120,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "deretraction_speed": [ "30" diff --git a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json index 9d13607569..1281d5934d 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json @@ -120,7 +120,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "deretraction_speed": [ "30" diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index 52e7d360e9..356e6f571a 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -136,7 +136,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 93472b4dea..e74b47a143 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -136,7 +136,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 3b9009eb0c..9faca356d9 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -136,7 +136,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 285613858f..df47686765 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -136,7 +136,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus.json b/resources/profiles/Creality/machine/Creality K2 Plus.json index 68cde06cfe..ea4430128a 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k2plus_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all" + "default_materials": "Generic ABS @Creality K2-all;Generic ABS @K2 Plus-all;Generic ASA @Creality K2-all;Generic ASA @K2 Plus-all;Generic PETG @Creality K2-all;Generic PETG @K2 Plus-all;Generic PLA @Creality K2-all;Generic PLA @K2 Plus-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all" } diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json index 08249a6136..c8c34d0b39 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json @@ -136,7 +136,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json index c9d74994d7..e55e947fac 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json @@ -134,7 +134,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json index b364acf29f..9ca340c779 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json @@ -134,7 +134,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json index 207c059d24..4cadba6946 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json @@ -134,7 +134,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro.json b/resources/profiles/Creality/machine/Creality K2 Pro.json index d50ec5384a..937117d11d 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k2pro_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "", - "default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all" + "default_materials": "Generic ABS @Creality K2-all;Generic ABS @K2 Pro-all;Generic ASA @Creality K2-all;Generic ASA @K2 Pro-all;Generic PETG @Creality K2-all;Generic PETG @K2 Pro-all;Generic PLA @Creality K2-all;Generic PLA @K2 Pro-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all" } diff --git a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json index ebe24f655f..4b0e4754fc 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json @@ -83,7 +83,7 @@ "use_relative_e_distances": "1", "z_offset": "0", "default_filament_profile": [ - "Creality Generic PLA @K2-all" + "Generic PLA @Creality K2-all" ], "deretraction_speed": "30", "extruder_colour": "#FCE94F", diff --git a/resources/profiles/Creality/machine/Creality K2 SE.json b/resources/profiles/Creality/machine/Creality K2 SE.json index 701d32c06e..5b7ec27ea0 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE.json +++ b/resources/profiles/Creality/machine/Creality K2 SE.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K2_SE", - "default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all" + "default_materials": "Generic ABS @Creality K2-all;Generic ASA @Creality K2-all;Generic PETG @Creality K2-all;Generic PLA @Creality K2-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all" } diff --git a/resources/profiles/Creality/machine/Creality K2.json b/resources/profiles/Creality/machine/Creality K2.json index 3baf9e4126..cc852576fe 100644 --- a/resources/profiles/Creality/machine/Creality K2.json +++ b/resources/profiles/Creality/machine/Creality K2.json @@ -9,5 +9,5 @@ "default_bed_type": "Textured PEI Plate", "bed_texture": "creality_k2_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all" + "default_materials": "Generic ABS @Creality K2-all;Generic ABS @K2-all;Generic ASA @Creality K2-all;Generic ASA @K2-all;Generic PETG @Creality K2-all;Generic PETG @K2-all;Generic PLA @Creality K2-all;Generic PLA @K2-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all" } diff --git a/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json index a3a6bfbfb1..2d7f0a63d8 100644 --- a/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Sermoon V1 0.4 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "printer_model": "Creality Sermoon V1", "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality Sermoon V1", "nozzle_diameter": [ diff --git a/resources/profiles/Creality/machine/Creality Sermoon V1.json b/resources/profiles/Creality/machine/Creality Sermoon V1.json index 1f7f26c390..7b14e8256e 100644 --- a/resources/profiles/Creality/machine/Creality Sermoon V1.json +++ b/resources/profiles/Creality/machine/Creality Sermoon V1.json @@ -11,5 +11,5 @@ "Spiral Lift" ], "hotend_model": "", - "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS;Creality Generic TPU" + "default_materials": "Generic PLA @Creality;Generic PETG @Creality;Generic ABS @Creality;Generic TPU @Creality" } diff --git a/resources/profiles/Creality/machine/fdm_creality_common.json b/resources/profiles/Creality/machine/fdm_creality_common.json index f3021ae1ed..1818e8b54b 100644 --- a/resources/profiles/Creality/machine/fdm_creality_common.json +++ b/resources/profiles/Creality/machine/fdm_creality_common.json @@ -124,7 +124,7 @@ "1" ], "default_filament_profile": [ - "Creality Generic PLA" + "Generic PLA @Creality" ], "default_print_profile": "0.20mm Standard @Creality", "bed_exclude_area": [ diff --git a/resources/profiles/Cubicon.json b/resources/profiles/Cubicon.json index 9f2100a187..ffb363c807 100644 --- a/resources/profiles/Cubicon.json +++ b/resources/profiles/Cubicon.json @@ -1,6 +1,6 @@ { "name": "Cubicon", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Cubicon configurations", "machine_model_list": [ diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-I 0.4 nozzle.json index ca0143d65c..93949a7c80 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon ABS @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon ABS @base", + "renamed_from": "Cubicon ABS @base", "setting_id": "VJEyK87ZYvHmamB9", + "filament_id": "OFpDo5Ix", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Mini 0.4 nozzle.json index 72b2c51e50..ea320b01e4 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon ABS @base", "from": "system", "setting_id": "Kz41mb2M9xLbEJ97", + "filament_id": "OFpDo5Ix", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Plus 0.4 nozzle.json index 38a00a4624..1f4da6c3f8 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon ABS @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon ABS @base", "setting_id": "A5FQdwh0Xo7aTRpq", + "filament_id": "OFpDo5Ix", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS @base.json b/resources/profiles/Cubicon/filament/Cubicon ABS @base.json index 55fbd40ee4..31efe73b11 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon ABS @base", "inherits": "fdm_filament_abs", - "setting_id": "aZRVIlDze62Bbw81", - "filament_id": "P510cfb0", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFpDo5Ix", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon ABS @base" - ], "filament_vendor": [ "Cubicon" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-I 0.4 nozzle.json index 897f3cceff..2788688e1b 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon ABS-A100 @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon ABS-A100 @base", + "renamed_from": "Cubicon ABS-A100 @base", "setting_id": "OfiOryklf7FDVCz8", + "filament_id": "OFy8tYJE", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Mini 0.4 nozzle.json index f0d3715d32..5c85efa062 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon ABS-A100 @base", "from": "system", "setting_id": "pIyU9uXQ5V3hsg5F", + "filament_id": "OFy8tYJE", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Plus 0.4 nozzle.json index c6965435a0..765f1ce75c 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon ABS-A100 @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon ABS-A100 @base", "setting_id": "xhYh9x1vescinfbF", + "filament_id": "OFy8tYJE", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json index dddc147ff2..5c64ed0fa5 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon ABS-A100 @base", "inherits": "Cubicon ABS @base", - "setting_id": "vGIT4KZvqojIh2up", - "filament_id": "P510cfb1", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFy8tYJE", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon ABS-A100 @base" - ], "filament_type": [ "ABS" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-I 0.4 nozzle.json index 7596fa618a..cdb6324af1 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon ABSk @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon ABSk @base", + "renamed_from": "Cubicon ABSk @base", "setting_id": "TXcodZkab4fofnEn", + "filament_id": "OForhBi4", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Mini 0.4 nozzle.json index 63c827c034..1a2e21517c 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon ABSk @base", "from": "system", "setting_id": "CsthNnKn8WlBbkP4", + "filament_id": "OForhBi4", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Plus 0.4 nozzle.json index 586982ea51..1295c2189e 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABSk @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon ABSk @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon ABSk @base", "setting_id": "UVitMFMxvdf34qZw", + "filament_id": "OForhBi4", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json b/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json index e1546d3bae..46a8f2d48c 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon ABSk @base", "inherits": "Cubicon ABS @base", - "setting_id": "UbOUO0K3Y2iRPBtf", - "filament_id": "P510cfb2", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OForhBi4", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon ABSk @base" - ], "filament_type": [ "ABS" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-I 0.4 nozzle.json index c8af313f4f..09a5d917f4 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon PA-CF @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PA-CF @base", + "renamed_from": "Cubicon PA-CF @base", "setting_id": "nupuIJggdc1EKDqG", + "filament_id": "OFiEz2XI", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Mini 0.4 nozzle.json index 40aa29b577..7cb486c4e8 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PA-CF @base", "from": "system", "setting_id": "NPjuy4deP6Ly7u9s", + "filament_id": "OFiEz2XI", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Plus 0.4 nozzle.json index 6e307bed78..4279540ac4 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PA-CF @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon PA-CF @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon PA-CF @base", "setting_id": "ygB1Uf9Vbw9LJZc8", + "filament_id": "OFiEz2XI", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PA-CF @base.json b/resources/profiles/Cubicon/filament/Cubicon PA-CF @base.json index 51c89949f6..b9ac6cf4c9 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PA-CF @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PA-CF @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon PA-CF @base", "inherits": "fdm_filament_pa", - "setting_id": "55cJDyCoEudfOePY", - "filament_id": "P510cfd0", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFiEz2XI", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon PA-CF @base" - ], "filament_type": [ "PA" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-I 0.4 nozzle.json index b83d690fff..e37f5f063c 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon PC @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PC @base", + "renamed_from": "Cubicon PC @base", "setting_id": "c0sUPS0SRYUNjEpB", + "filament_id": "OFEj7sca", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Mini 0.4 nozzle.json index 868ec82e34..9890ed585f 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PC @base", "from": "system", "setting_id": "XGXjHwuHUjtAJGl1", + "filament_id": "OFEj7sca", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Plus 0.4 nozzle.json index 07a2308add..63be065b85 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PC @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon PC @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon PC @base", "setting_id": "jbYKOK1A0Oxm9t0f", + "filament_id": "OFEj7sca", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PC @base.json b/resources/profiles/Cubicon/filament/Cubicon PC @base.json index de42989e84..001434a2b1 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PC @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PC @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon PC @base", "inherits": "fdm_filament_pc", - "setting_id": "Mzg6jfwb2nqfGkdV", - "filament_id": "P510cfd0", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFEj7sca", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon PC @base" - ], "filament_type": [ "PC" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-I 0.4 nozzle.json index 62a4f58c53..db9a90c42d 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-I 0.4 nozzle.json @@ -2,7 +2,9 @@ "type": "filament", "name": "Cubicon PETG @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PETG @base", + "renamed_from": "Cubicon PETG @base", "setting_id": "dsX01tCkd2Usk104", + "filament_id": "OFoBTKmn", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Mini 0.4 nozzle.json index 9c1108a73f..b87bc4b3e5 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PETG @base", "from": "system", "setting_id": "2hYoCR5qUXCWIAxZ", + "filament_id": "OFoBTKmn", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Plus 0.4 nozzle.json index 14a23cc728..1b46fe6d64 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PETG @Cubicon xCeler-Plus 0.4 nozzle.json @@ -3,6 +3,7 @@ "name": "Cubicon PETG @Cubicon xCeler-Plus 0.4 nozzle", "inherits": "Cubicon PETG @base", "setting_id": "5pfiRdyNz9dvT4Q6", + "filament_id": "OFoBTKmn", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PETG @base.json b/resources/profiles/Cubicon/filament/Cubicon PETG @base.json index 2242ba36ca..61fc5c647a 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PETG @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PETG @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon PETG @base", "inherits": "fdm_filament_pet", - "setting_id": "bGfz4phwIdqSz0Hx", - "filament_id": "P510cfc0", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFoBTKmn", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon PETG @base" - ], "filament_type": [ "PETG" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-I 0.4 nozzle.json index bca40b2814..3b3c9b1d4c 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-I 0.4 nozzle.json @@ -2,8 +2,10 @@ "type": "filament", "name": "Cubicon PLA @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PLA @base", + "renamed_from": "Cubicon PLA @base", "from": "system", "setting_id": "xXJgHAeNf1JdCitr", + "filament_id": "OFEwRwmL", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle.json index 54ffbd694c..940152ae16 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLA @base", "from": "system", "setting_id": "o2BQL6OKtxDmBkWV", + "filament_id": "OFEwRwmL", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle.json index 04cac6ab7d..ee5a5a1d3d 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLA @base", "from": "system", "setting_id": "WkZrzDlGvb25OtrF", + "filament_id": "OFEwRwmL", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA @base.json b/resources/profiles/Cubicon/filament/Cubicon PLA @base.json index 665ba58d59..53df18afc5 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA @base.json @@ -3,17 +3,9 @@ "name": "Cubicon PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "setting_id": "ypwdJAu0NlEsWpf4", - "filament_id": "P510cfa0", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFEwRwmL", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "CBC_MTC_0" - ], "filament_type": [ "PLA" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-I 0.4 nozzle.json index 7442cf2490..3674c61e3f 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-I 0.4 nozzle.json @@ -2,8 +2,10 @@ "type": "filament", "name": "Cubicon PLA+ @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PLA+ @base", + "renamed_from": "Cubicon PLA+ @base", "from": "system", "setting_id": "fNR2Bw3e4TGcWhq0", + "filament_id": "OF7tt7DO", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Mini 0.4 nozzle.json index 76a31d14c1..32a6607377 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLA+ @base", "from": "system", "setting_id": "wukhnaCJaOLUUdiU", + "filament_id": "OF7tt7DO", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Plus 0.4 nozzle.json index 2f37996fe3..823e0e51ca 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA+ @Cubicon xCeler-Plus 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLA+ @base", "from": "system", "setting_id": "JVShu8DKQ3euGHec", + "filament_id": "OF7tt7DO", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json b/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json index cb916a9410..5e7c8dc10b 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json @@ -2,19 +2,11 @@ "type": "filament", "name": "Cubicon PLA+ @base", "inherits": "Cubicon PLA @base", - "setting_id": "ETnuhiOZRh1jxrVk", - "filament_id": "P510cfa1", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OF7tt7DO", + "instantiation": "false", "default_filament_colour": [ "" ], - "filament_settings_id": [ - "Cubicon PLA+ @base" - ], "filament_type": [ "PLA" ], diff --git a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-I 0.4 nozzle.json index 10d2a2e6ae..74bff5f995 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-I 0.4 nozzle.json @@ -2,8 +2,10 @@ "type": "filament", "name": "Cubicon PLAi21 @Cubicon xCeler-I 0.4 nozzle", "inherits": "Cubicon PLAi21 @base", + "renamed_from": "Cubicon PLAi21 @base", "from": "system", "setting_id": "vcLVF3cglagBfVAF", + "filament_id": "OFRhBryT", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Mini 0.4 nozzle.json index 73404c4729..999da52ede 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Mini 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLAi21 @base", "from": "system", "setting_id": "3TbOucKB5TGk8sXG", + "filament_id": "OFRhBryT", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Mini 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Plus 0.4 nozzle.json index 0769e1fa3d..637cdb87f2 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @Cubicon xCeler-Plus 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Cubicon PLAi21 @base", "from": "system", "setting_id": "Vm1oDASHoFUfDrzQ", + "filament_id": "OFRhBryT", "instantiation": "true", "compatible_printers": [ "Cubicon xCeler-Plus 0.4 nozzle" diff --git a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @base.json b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @base.json index 831450deef..39b5b31430 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLAi21 @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLAi21 @base.json @@ -2,17 +2,9 @@ "type": "filament", "name": "Cubicon PLAi21 @base", "inherits": "Cubicon PLA @base", - "setting_id": "mnwC7ijXXV72lBOt", - "filament_id": "P510cfa2", - "instantiation": "true", - "compatible_printers": [ - "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" - ], + "filament_id": "OFRhBryT", + "instantiation": "false", "default_filament_colour": "", - "filament_settings_id": [ - "Cubicon PLAi21 @base" - ], "filament_type": [ "PLA" ], diff --git a/resources/profiles/Cubicon/filament/fdm_filament_pa.json b/resources/profiles/Cubicon/filament/fdm_filament_pa.json index c2e4cf86df..b75ab9a8c9 100644 --- a/resources/profiles/Cubicon/filament/fdm_filament_pa.json +++ b/resources/profiles/Cubicon/filament/fdm_filament_pa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFN99", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Cubicon/filament/fdm_filament_pc.json b/resources/profiles/Cubicon/filament/fdm_filament_pc.json index 0f550063ad..120689c074 100644 --- a/resources/profiles/Cubicon/filament/fdm_filament_pc.json +++ b/resources/profiles/Cubicon/filament/fdm_filament_pc.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pc", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFC99", "instantiation": "false", "supertack_plate_temp": [ "0" diff --git a/resources/profiles/Cubicon/filament/fdm_filament_pet.json b/resources/profiles/Cubicon/filament/fdm_filament_pet.json index 250915a07b..63996fb69a 100644 --- a/resources/profiles/Cubicon/filament/fdm_filament_pet.json +++ b/resources/profiles/Cubicon/filament/fdm_filament_pet.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pet", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFG99", "instantiation": "false", "eng_plate_temp": [ "0" diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json index 140b31986c..2844a543a4 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Cubicon PLA @Cubicon xCeler-I" + "Cubicon PLA @Cubicon xCeler-I 0.4 nozzle" ], "default_print_profile": "cubicon default @base", "deretraction_speed": [ diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-I.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-I.json index 0377e94716..64d00c37c4 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-I.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-I.json @@ -6,5 +6,5 @@ "bed_texture": "Cubicon xCeler-I_bed_texture.svg", "family": "Cubicon", "machine_tech": "FFF", - "default_materials": "Cubicon PLA @Cubicon xCeler-I" + "default_materials": "Cubicon PLA @Cubicon xCeler-I 0.4 nozzle" } diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json index 451e4716d2..85bd7be03f 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Cubicon PLA @Cubicon xCeler-Mini" + "Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle" ], "default_print_profile": "cubicon default @base", "deretraction_speed": [ diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini.json index af43717058..bb55969134 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini.json @@ -6,5 +6,5 @@ "bed_texture": "Cubicon xCeler-I_bed_texture.svg", "family": "Cubicon", "machine_tech": "FFF", - "default_materials": "Cubicon PLA @Cubicon xCeler-Mini" + "default_materials": "Cubicon PLA @Cubicon xCeler-Mini 0.4 nozzle" } diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json index 483c82be07..9c38452bf5 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Cubicon PLA @Cubicon xCeler-Plus" + "Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle" ], "default_print_profile": "cubicon default @base", "deretraction_speed": [ diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus.json index 28bdd1ce65..41bac9acc1 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus.json @@ -6,5 +6,5 @@ "bed_texture": "Cubicon xCeler-I_bed_texture.svg", "family": "Cubicon", "machine_tech": "FFF", - "default_materials": "Cubicon PLA @Cubicon xCeler-Plus" + "default_materials": "Cubicon PLA @Cubicon xCeler-Plus 0.4 nozzle" } diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index 7eba013111..a8cef36ca5 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json index 47f175c277..9aec5f168f 100644 --- a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic PC @System", "from": "system", "setting_id": "HMOa2jbj19Xjipt5", - "filament_id": "GFC99", "instantiation": "true", "filament_cooling_final_speed": [ "3.5" diff --git a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json index 95e47a32a8..685482342e 100644 --- a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "4qShNrl9EWAVBfeG", - "filament_id": "GFG99", "instantiation": "true", "filament_cooling_final_speed": [ "3.5" diff --git a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json index b8fe088325..0913752501 100644 --- a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "WbAYFZdqFwEZnNAX", - "filament_id": "GFL99", "instantiation": "true", "filament_cooling_final_speed": [ "3.5" diff --git a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json index 4a766aa3ef..6e17b6e4c0 100644 --- a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic PLA-CF @System", "from": "system", "setting_id": "53UFt3Q63NB0ztlP", - "filament_id": "GFL98", "instantiation": "true", "filament_cooling_final_speed": [ "3.5" diff --git a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json index 6fe168abcc..a70aeffe29 100644 --- a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic PVA @System", "from": "system", "setting_id": "dyOUyXNOKP1VmSal", - "filament_id": "GFS99", "instantiation": "true", "filament_cooling_final_speed": [ "3.5" diff --git a/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json b/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json index c88ee2da7d..2527ff824e 100644 --- a/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json @@ -5,7 +5,6 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "H45dfn4BGdLAx9nN", - "filament_id": "GFU99", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/DeltaMaker.json b/resources/profiles/DeltaMaker.json index c583fa9a16..c7209bdf2b 100755 --- a/resources/profiles/DeltaMaker.json +++ b/resources/profiles/DeltaMaker.json @@ -1,7 +1,7 @@ { "name": "DeltaMaker", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "DeltaMaker configurations", "machine_model_list": [ @@ -58,20 +58,20 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "DeltaMaker Generic PETG", - "sub_path": "filament/DeltaMaker Generic PETG.json" + "name": "Generic PETG @DeltaMaker", + "sub_path": "filament/Generic PETG @DeltaMaker.json" }, { "name": "DeltaMaker Brand PLA", "sub_path": "filament/DeltaMaker Brand PLA.json" }, { - "name": "DeltaMaker Generic PLA", - "sub_path": "filament/DeltaMaker Generic PLA.json" + "name": "Generic PLA @DeltaMaker", + "sub_path": "filament/Generic PLA @DeltaMaker.json" }, { - "name": "DeltaMaker Generic TPU", - "sub_path": "filament/DeltaMaker Generic TPU.json" + "name": "Generic TPU @DeltaMaker", + "sub_path": "filament/Generic TPU @DeltaMaker.json" } ], "machine_list": [ diff --git a/resources/profiles/DeltaMaker/filament/DeltaMaker Brand PLA.json b/resources/profiles/DeltaMaker/filament/DeltaMaker Brand PLA.json index 2d905807fb..713eac979d 100755 --- a/resources/profiles/DeltaMaker/filament/DeltaMaker Brand PLA.json +++ b/resources/profiles/DeltaMaker/filament/DeltaMaker Brand PLA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "bvZOHe5ejWqBALPQ", - "filament_id": "GFL99", + "filament_id": "OFRpAZ1P", "instantiation": "true", "filament_flow_ratio": [ "0.987" diff --git a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic PETG.json b/resources/profiles/DeltaMaker/filament/Generic PETG @DeltaMaker.json similarity index 82% rename from resources/profiles/DeltaMaker/filament/DeltaMaker Generic PETG.json rename to resources/profiles/DeltaMaker/filament/Generic PETG @DeltaMaker.json index 32980cb53e..a31ad9aec5 100755 --- a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic PETG.json +++ b/resources/profiles/DeltaMaker/filament/Generic PETG @DeltaMaker.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "DeltaMaker Generic PETG", + "name": "Generic PETG @DeltaMaker", "inherits": "fdm_filament_pet", + "renamed_from": "DeltaMaker Generic PETG", "from": "system", - "setting_id": "qlQo6a93esZv2l9a", - "filament_id": "GFG99", + "setting_id": "XmKr3I3RjeI3hm6F", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic PLA.json b/resources/profiles/DeltaMaker/filament/Generic PLA @DeltaMaker.json similarity index 70% rename from resources/profiles/DeltaMaker/filament/DeltaMaker Generic PLA.json rename to resources/profiles/DeltaMaker/filament/Generic PLA @DeltaMaker.json index d4b8ab071c..2e2b626feb 100755 --- a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic PLA.json +++ b/resources/profiles/DeltaMaker/filament/Generic PLA @DeltaMaker.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "DeltaMaker Generic PLA", + "name": "Generic PLA @DeltaMaker", "inherits": "fdm_filament_pla", + "renamed_from": "DeltaMaker Generic PLA", "from": "system", - "setting_id": "gfxr3MiE4uI2Xxy7", - "filament_id": "GFL99", + "setting_id": "ITJo0Cig9myqk1uB", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.987" diff --git a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic TPU.json b/resources/profiles/DeltaMaker/filament/Generic TPU @DeltaMaker.json similarity index 68% rename from resources/profiles/DeltaMaker/filament/DeltaMaker Generic TPU.json rename to resources/profiles/DeltaMaker/filament/Generic TPU @DeltaMaker.json index e971b6884c..edfc8a1cd2 100755 --- a/resources/profiles/DeltaMaker/filament/DeltaMaker Generic TPU.json +++ b/resources/profiles/DeltaMaker/filament/Generic TPU @DeltaMaker.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "DeltaMaker Generic TPU", + "name": "Generic TPU @DeltaMaker", "inherits": "fdm_filament_tpu", + "renamed_from": "DeltaMaker Generic TPU", "from": "system", - "setting_id": "2L1U33wC0LofrMWs", - "filament_id": "GFB99", + "setting_id": "uWHBbbhFzvWq0qUP", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2 0.35 nozzle.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2 0.35 nozzle.json index f28c54eedc..8e7f98c81d 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2 0.35 nozzle.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2 0.35 nozzle.json @@ -22,6 +22,6 @@ ], "default_filament_profile": [ "DeltaMaker Brand PLA", - "DeltaMaker Generic PLA" + "Generic PLA @DeltaMaker" ] } diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2.json index e7693bc7ce..7b57c1956b 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2.json @@ -7,5 +7,5 @@ "family": "DeltaMaker", "bed_model": "deltamaker_2_buildplate_model.stl", "bed_texture": "deltamaker_2_buildplate_texture.svg", - "default_materials": "DeltaMaker Brand PLA;DeltaMaker Generic PLA" + "default_materials": "DeltaMaker Brand PLA;Generic PLA @DeltaMaker" } diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2T 0.5 nozzle.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2T 0.5 nozzle.json index 4f83ddb32e..2b622e3c68 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2T 0.5 nozzle.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2T 0.5 nozzle.json @@ -22,6 +22,6 @@ ], "default_filament_profile": [ "DeltaMaker Brand PLA", - "DeltaMaker Generic PLA" + "Generic PLA @DeltaMaker" ] } diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2T.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2T.json index 37b989997b..88846595bf 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2T.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2T.json @@ -7,5 +7,5 @@ "family": "DeltaMaker", "bed_model": "deltamaker_2_buildplate_model.stl", "bed_texture": "deltamaker_2_buildplate_texture.svg", - "default_materials": "DeltaMaker Brand PLA;DeltaMaker Generic PLA" + "default_materials": "DeltaMaker Brand PLA;Generic PLA @DeltaMaker" } diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT 0.5 nozzle.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT 0.5 nozzle.json index 5ce9d45438..1767cda770 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT 0.5 nozzle.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT 0.5 nozzle.json @@ -22,6 +22,6 @@ ], "default_filament_profile": [ "DeltaMaker Brand PLA", - "DeltaMaker Generic PLA" + "Generic PLA @DeltaMaker" ] } diff --git a/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT.json b/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT.json index 9d10697dd8..0b3870e4ac 100755 --- a/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT.json +++ b/resources/profiles/DeltaMaker/machine/DeltaMaker 2XT.json @@ -7,5 +7,5 @@ "family": "DeltaMaker", "bed_model": "deltamaker_2_buildplate_model.stl", "bed_texture": "deltamaker_2_buildplate_texture.svg", - "default_materials": "DeltaMaker Brand PLA;DeltaMaker Generic PLA" + "default_materials": "DeltaMaker Brand PLA;Generic PLA @DeltaMaker" } diff --git a/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json b/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json index 1033551ca9..ecfe431ef6 100755 --- a/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json +++ b/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json @@ -124,7 +124,7 @@ "1" ], "default_filament_profile": [ - "DeltaMaker Generic PLA" + "Generic PLA @DeltaMaker" ], "default_print_profile": "0.20mm Standard @DeltaMaker 2 0.35 nozzle", "bed_exclude_area": [ diff --git a/resources/profiles/Dremel.json b/resources/profiles/Dremel.json index c8462f0414..71f13d0dc8 100644 --- a/resources/profiles/Dremel.json +++ b/resources/profiles/Dremel.json @@ -1,6 +1,6 @@ { "name": "Dremel", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Dremel configurations", "machine_model_list": [ @@ -89,20 +89,16 @@ "sub_path": "filament/fdm_filament_pla.json" }, { - "name": "Dremel Generic PLA", - "sub_path": "filament/Dremel Generic PLA.json" + "name": "Generic PLA @Dremel 3D20 all", + "sub_path": "filament/Generic PLA @Dremel 3D20 all.json" }, { - "name": "Dremel Generic PLA @3D20 all", - "sub_path": "filament/Dremel Generic PLA @3D20 all.json" + "name": "Generic PLA @Dremel 3D40 all", + "sub_path": "filament/Generic PLA @Dremel 3D40 all.json" }, { - "name": "Dremel Generic PLA @3D40 all", - "sub_path": "filament/Dremel Generic PLA @3D40 all.json" - }, - { - "name": "Dremel Generic PLA @3D45 all", - "sub_path": "filament/Dremel Generic PLA @3D45 all.json" + "name": "Generic PLA @Dremel 3D45 all", + "sub_path": "filament/Generic PLA @Dremel 3D45 all.json" } ], "machine_list": [ diff --git a/resources/profiles/Dremel/filament/Dremel Generic PLA.json b/resources/profiles/Dremel/filament/Dremel Generic PLA.json deleted file mode 100644 index b5263d20f3..0000000000 --- a/resources/profiles/Dremel/filament/Dremel Generic PLA.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "name": "Dremel Generic PLA", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "blJERdJqaaRmRdD4", - "filament_id": "GFL99", - "instantiation": "true", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], - "compatible_printers": [ - "Dremel 3D45 0.4 nozzle", - "Dremel 3D40 0.4 nozzle", - "Dremel 3D20 0.4 nozzle" - ] -} diff --git a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D20 all.json b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D20 all.json similarity index 63% rename from resources/profiles/Dremel/filament/Dremel Generic PLA @3D20 all.json rename to resources/profiles/Dremel/filament/Generic PLA @Dremel 3D20 all.json index 7e76e2404b..2dbcc6184e 100644 --- a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D20 all.json +++ b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D20 all.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "Dremel Generic PLA @3D20 all", - "inherits": "Dremel Generic PLA", + "name": "Generic PLA @Dremel 3D20 all", + "inherits": "fdm_filament_pla", + "renamed_from": "Dremel Generic PLA @3D20 all;Dremel Generic PLA 3D20 all", "from": "system", - "setting_id": "weKWPiNIe3TmOXRn", + "setting_id": "UggXEvCig0b6S8Vx", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_flow_ratio": [ + "0.98" + ], "filament_max_volumetric_speed": [ "9" ], diff --git a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D40 all.json b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D40 all.json similarity index 66% rename from resources/profiles/Dremel/filament/Dremel Generic PLA @3D40 all.json rename to resources/profiles/Dremel/filament/Generic PLA @Dremel 3D40 all.json index 8074c6f0a3..03704ce5e9 100644 --- a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D40 all.json +++ b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D40 all.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "Dremel Generic PLA @3D40 all", - "inherits": "Dremel Generic PLA", + "name": "Generic PLA @Dremel 3D40 all", + "inherits": "fdm_filament_pla", + "renamed_from": "Dremel Generic PLA @3D40 all;Dremel Generic PLA 3D40 all", "from": "system", - "setting_id": "kZAEjhLS29WQeyf1", + "setting_id": "VUOtsWfy46cvAyBT", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_flow_ratio": [ + "0.98" + ], "filament_max_volumetric_speed": [ "9" ], diff --git a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D45 all.json b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D45 all.json similarity index 65% rename from resources/profiles/Dremel/filament/Dremel Generic PLA @3D45 all.json rename to resources/profiles/Dremel/filament/Generic PLA @Dremel 3D45 all.json index fb9c31fe0e..78f747e0f9 100644 --- a/resources/profiles/Dremel/filament/Dremel Generic PLA @3D45 all.json +++ b/resources/profiles/Dremel/filament/Generic PLA @Dremel 3D45 all.json @@ -1,10 +1,21 @@ { "type": "filament", - "name": "Dremel Generic PLA @3D45 all", - "inherits": "Dremel Generic PLA", + "name": "Generic PLA @Dremel 3D45 all", + "inherits": "fdm_filament_pla", + "renamed_from": "Dremel Generic PLA @3D45 all;Dremel Generic PLA 3D45 all", "from": "system", - "setting_id": "pIlkZjNrXnHJDszp", + "setting_id": "qEeBb3Pix2iDT3SD", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], "slow_down_min_speed": "10", "close_fan_the_first_x_layers": "3", "filament_loading_speed_start": "3", diff --git a/resources/profiles/Dremel/machine/Dremel 3D20 0.4 nozzle.json b/resources/profiles/Dremel/machine/Dremel 3D20 0.4 nozzle.json index ea9490971a..02d513000c 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D20 0.4 nozzle.json +++ b/resources/profiles/Dremel/machine/Dremel 3D20 0.4 nozzle.json @@ -10,7 +10,7 @@ "printer_structure": "hbot", "gcode_flavor": "marlin", "default_filament_profile": [ - "Dremel Generic PLA @3D20 all" + "Generic PLA @Dremel 3D20 all" ], "default_print_profile": ".20mm Standard @Dremel 3D20 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Dremel/machine/Dremel 3D20.json b/resources/profiles/Dremel/machine/Dremel 3D20.json index ec37c0d8df..8aa43be862 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D20.json +++ b/resources/profiles/Dremel/machine/Dremel 3D20.json @@ -8,5 +8,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Dremel_3D20", - "default_materials": "Dremel Generic PLA @3D20 all" + "default_materials": "Generic PLA @Dremel 3D20 all" } diff --git a/resources/profiles/Dremel/machine/Dremel 3D40 0.4 nozzle.json b/resources/profiles/Dremel/machine/Dremel 3D40 0.4 nozzle.json index d37a785099..db8a20003a 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D40 0.4 nozzle.json +++ b/resources/profiles/Dremel/machine/Dremel 3D40 0.4 nozzle.json @@ -10,7 +10,7 @@ "printer_structure": "hbot", "gcode_flavor": "marlin", "default_filament_profile": [ - "Dremel Generic PLA @3D40 all" + "Generic PLA @Dremel 3D40 all" ], "default_print_profile": ".20mm Standard @Dremel 3D40 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Dremel/machine/Dremel 3D40.json b/resources/profiles/Dremel/machine/Dremel 3D40.json index 3e3a003f2a..0223ced4d8 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D40.json +++ b/resources/profiles/Dremel/machine/Dremel 3D40.json @@ -8,5 +8,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Dremel_3D40", - "default_materials": "Dremel Generic PLA @3D40 all" + "default_materials": "Generic PLA @Dremel 3D40 all" } diff --git a/resources/profiles/Dremel/machine/Dremel 3D45 0.4 nozzle.json b/resources/profiles/Dremel/machine/Dremel 3D45 0.4 nozzle.json index 8d6b26f34b..c8cf0666d0 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D45 0.4 nozzle.json +++ b/resources/profiles/Dremel/machine/Dremel 3D45 0.4 nozzle.json @@ -10,7 +10,7 @@ "printer_settings_id": "Dremel", "gcode_flavor": "marlin", "default_filament_profile": [ - "Dremel Generic PLA @3D45 all" + "Generic PLA @Dremel 3D45 all" ], "default_print_profile": ".20mm Standard @Dremel 3D45 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Dremel/machine/Dremel 3D45.json b/resources/profiles/Dremel/machine/Dremel 3D45.json index d32aac4977..f701b83188 100644 --- a/resources/profiles/Dremel/machine/Dremel 3D45.json +++ b/resources/profiles/Dremel/machine/Dremel 3D45.json @@ -8,5 +8,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Dremel_3D45", - "default_materials": "Dremel Generic PLA @3D45 all" + "default_materials": "Generic PLA @Dremel 3D45 all" } diff --git a/resources/profiles/Dremel/machine/fdm_dremel_common.json b/resources/profiles/Dremel/machine/fdm_dremel_common.json index 194559cdcf..0dae7eb9ea 100644 --- a/resources/profiles/Dremel/machine/fdm_dremel_common.json +++ b/resources/profiles/Dremel/machine/fdm_dremel_common.json @@ -123,9 +123,6 @@ "wipe": [ "1" ], - "default_filament_profile": [ - "Dremel Generic PLA" - ], "bed_exclude_area": [ "0x0" ], diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index 077c264b84..f85e19bb76 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,6 +1,6 @@ { "name": "Elegoo", - "version": "02.04.00.06", + "version": "02.04.00.07", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ @@ -1241,8 +1241,8 @@ "sub_path": "filament/BASE/Generic ASA @base.json" }, { - "name": "Elegoo TPU @base", - "sub_path": "filament/BASE/Elegoo TPU @base.json" + "name": "Elegoo TPU 95A @base", + "sub_path": "filament/BASE/Elegoo TPU 95A @base.json" }, { "name": "Elegoo PETG @base", @@ -1261,8 +1261,8 @@ "sub_path": "filament/BASE/Elegoo ABS @base.json" }, { - "name": "Elegoo PAHT @base", - "sub_path": "filament/BASE/Elegoo PAHT @base.json" + "name": "Elegoo PAHT-CF @base", + "sub_path": "filament/BASE/Elegoo PAHT-CF @base.json" }, { "name": "Elegoo PC @base", @@ -1276,6 +1276,10 @@ "name": "Elegoo PETG @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG @0.2 nozzle.json" }, + { + "name": "Elegoo PETG PRO @base", + "sub_path": "filament/BASE/Elegoo PETG PRO @base.json" + }, { "name": "Elegoo PETG PRO @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json" @@ -1284,26 +1288,50 @@ "name": "Elegoo PLA @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA @0.2 nozzle.json" }, + { + "name": "Elegoo PLA Matte @base", + "sub_path": "filament/BASE/Elegoo PLA Matte @base.json" + }, { "name": "Elegoo PLA Matte @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json" }, + { + "name": "Elegoo PLA PRO @base", + "sub_path": "filament/BASE/Elegoo PLA PRO @base.json" + }, { "name": "Elegoo PLA PRO @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json" }, + { + "name": "Elegoo PLA Silk @base", + "sub_path": "filament/BASE/Elegoo PLA Silk @base.json" + }, { "name": "Elegoo PLA Silk @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json" }, + { + "name": "Elegoo PLA+ @base", + "sub_path": "filament/BASE/Elegoo PLA+ @base.json" + }, { "name": "Elegoo PLA+ @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json" }, + { + "name": "Elegoo Rapid PLA+ @base", + "sub_path": "filament/BASE/Elegoo Rapid PLA+ @base.json" + }, { "name": "Elegoo Rapid PLA+ @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json" }, + { + "name": "Elegoo Rapid PETG @base", + "sub_path": "filament/BASE/Elegoo Rapid PETG @base.json" + }, { "name": "Elegoo Rapid PETG @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json" @@ -1316,14 +1344,26 @@ "name": "Elegoo PC @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC @0.2 nozzle.json" }, + { + "name": "Elegoo PC-FR @base", + "sub_path": "filament/BASE/Elegoo PC-FR @base.json" + }, { "name": "Elegoo PC-FR @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json" }, + { + "name": "Elegoo PLA Basic @base", + "sub_path": "filament/BASE/Elegoo PLA Basic @base.json" + }, { "name": "Elegoo PLA Basic @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json" }, + { + "name": "Elegoo PETG Translucent @base", + "sub_path": "filament/BASE/Elegoo PETG Translucent @base.json" + }, { "name": "Elegoo PETG Translucent @0.2 nozzle", "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json" @@ -1352,6 +1392,10 @@ "name": "Elegoo PLA Matte @ECC", "sub_path": "filament/ECC/Elegoo PLA Matte @ECC.json" }, + { + "name": "Elegoo PLA-CF @base", + "sub_path": "filament/BASE/Elegoo PLA-CF @base.json" + }, { "name": "Elegoo PLA-CF @ECC", "sub_path": "filament/ECC/Elegoo PLA-CF @ECC.json" @@ -1380,6 +1424,10 @@ "name": "Elegoo ABS @ECC", "sub_path": "filament/ECC/Elegoo ABS @ECC.json" }, + { + "name": "Elegoo PLA Galaxy @base", + "sub_path": "filament/BASE/Elegoo PLA Galaxy @base.json" + }, { "name": "Elegoo PLA Galaxy @ECC", "sub_path": "filament/ECC/Elegoo PLA Galaxy @ECC.json" @@ -1388,14 +1436,26 @@ "name": "Elegoo PLA Basic @ECC", "sub_path": "filament/ECC/Elegoo PLA Basic @ECC.json" }, + { + "name": "Elegoo PLA Marble @base", + "sub_path": "filament/BASE/Elegoo PLA Marble @base.json" + }, { "name": "Elegoo PLA Marble @ECC", "sub_path": "filament/ECC/Elegoo PLA Marble @ECC.json" }, + { + "name": "Elegoo PLA Sparkle @base", + "sub_path": "filament/BASE/Elegoo PLA Sparkle @base.json" + }, { "name": "Elegoo PLA Sparkle @ECC", "sub_path": "filament/ECC/Elegoo PLA Sparkle @ECC.json" }, + { + "name": "Elegoo PLA Wood @base", + "sub_path": "filament/BASE/Elegoo PLA Wood @base.json" + }, { "name": "Elegoo PLA Wood @ECC", "sub_path": "filament/ECC/Elegoo PLA Wood @ECC.json" @@ -1412,10 +1472,18 @@ "name": "Elegoo PC-FR @ECC", "sub_path": "filament/ECC/Elegoo PC-FR @ECC.json" }, + { + "name": "Elegoo PETG-CF @base", + "sub_path": "filament/BASE/Elegoo PETG-CF @base.json" + }, { "name": "Elegoo PETG-CF @ECC", "sub_path": "filament/ECC/Elegoo PETG-CF @ECC.json" }, + { + "name": "Elegoo PETG-GF @base", + "sub_path": "filament/BASE/Elegoo PETG-GF @base.json" + }, { "name": "Elegoo PETG-GF @ECC", "sub_path": "filament/ECC/Elegoo PETG-GF @ECC.json" @@ -1424,6 +1492,10 @@ "name": "Elegoo PETG Translucent @ECC", "sub_path": "filament/ECC/Elegoo PETG Translucent @ECC.json" }, + { + "name": "Elegoo Rapid TPU 95A @base", + "sub_path": "filament/BASE/Elegoo Rapid TPU 95A @base.json" + }, { "name": "Elegoo Rapid TPU 95A @ECC", "sub_path": "filament/ECC/Elegoo Rapid TPU 95A @ECC.json" @@ -1716,6 +1788,10 @@ "name": "Elegoo PETG Translucent @EC2", "sub_path": "filament/EC2/Elegoo PETG Translucent @EC2.json" }, + { + "name": "Elegoo ASA-CF @base", + "sub_path": "filament/BASE/Elegoo ASA-CF @base.json" + }, { "name": "Elegoo ASA-CF @ECC2", "sub_path": "filament/ECC2/Elegoo ASA-CF @ECC2.json" @@ -1724,6 +1800,10 @@ "name": "Elegoo ASA-CF @EC2", "sub_path": "filament/EC2/Elegoo ASA-CF @EC2.json" }, + { + "name": "Elegoo PET-CF @base", + "sub_path": "filament/BASE/Elegoo PET-CF @base.json" + }, { "name": "Elegoo PET-CF @ECC2", "sub_path": "filament/ECC2/Elegoo PET-CF @ECC2.json" @@ -1732,6 +1812,10 @@ "name": "Elegoo PET-CF @EC2", "sub_path": "filament/EC2/Elegoo PET-CF @EC2.json" }, + { + "name": "Elegoo PETG HF @base", + "sub_path": "filament/BASE/Elegoo PETG HF @base.json" + }, { "name": "Elegoo PETG HF @ECC2", "sub_path": "filament/ECC2/Elegoo PETG HF @ECC2.json" @@ -1740,6 +1824,10 @@ "name": "Elegoo PETG HF @EC2", "sub_path": "filament/EC2/Elegoo PETG HF @EC2.json" }, + { + "name": "Elegoo PLA Glow @base", + "sub_path": "filament/BASE/Elegoo PLA Glow @base.json" + }, { "name": "Elegoo PLA Glow @ECC2", "sub_path": "filament/ECC2/Elegoo PLA Glow @ECC2.json" @@ -1748,6 +1836,10 @@ "name": "Elegoo PLA Glow @EC2", "sub_path": "filament/EC2/Elegoo PLA Glow @EC2.json" }, + { + "name": "Elegoo PLA Translucent2 @base", + "sub_path": "filament/BASE/Elegoo PLA Translucent2 @base.json" + }, { "name": "Elegoo PLA Translucent2 @ECC2", "sub_path": "filament/ECC2/Elegoo PLA Translucent2 @ECC2.json" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo ABS @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo ABS @base.json index 86b533bba1..43c786705e 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo ABS @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo ABS @base.json @@ -3,7 +3,7 @@ "name": "Elegoo ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "EABSB00", + "filament_id": "OFxOHhZw", "instantiation": "false", "filament_vendor": [ "Elegoo" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo ASA @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo ASA @base.json index c48b5e5671..ea910dec86 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo ASA @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo ASA @base.json @@ -3,7 +3,7 @@ "name": "Elegoo ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "EASAB00", + "filament_id": "OFobDOW5", "instantiation": "false", "filament_vendor": [ "Elegoo" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo ASA-CF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo ASA-CF @base.json new file mode 100644 index 0000000000..155d6f8290 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo ASA-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo ASA-CF @base", + "inherits": "Elegoo ASA @base", + "from": "system", + "filament_id": "OFryjl35", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PAHT @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PAHT-CF @base.json similarity index 94% rename from resources/profiles/Elegoo/filament/BASE/Elegoo PAHT @base.json rename to resources/profiles/Elegoo/filament/BASE/Elegoo PAHT-CF @base.json index 87907a36f8..95bc595f90 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo PAHT @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PAHT-CF @base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Elegoo PAHT @base", + "name": "Elegoo PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "EPAHTB00", + "filament_id": "OF20kXr5", "instantiation": "false", "filament_density": [ "1.25" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PC @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PC @base.json index d60048b30a..ecaac93aaf 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo PC @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PC @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "EPCB00", + "filament_id": "OFUyDDNv", "instantiation": "false", "filament_density": [ "1.25" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PC-FR @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PC-FR @base.json new file mode 100644 index 0000000000..91034fda41 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PC-FR @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PC-FR @base", + "inherits": "Elegoo PC @base", + "from": "system", + "filament_id": "OFlsTpJG", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PET-CF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PET-CF @base.json new file mode 100644 index 0000000000..5f9561f5a9 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PET-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Elegoo PET-CF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFe98A1y", + "instantiation": "false", + "filament_type": [ + "PET-CF" + ] +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG @base.json index 29d83df77a..ec92793955 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "EPETGB00", + "filament_id": "OFLcd093", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG HF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG HF @base.json new file mode 100644 index 0000000000..9645c4572f --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG HF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG HF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFlP3KWq", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG PRO @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG PRO @base.json new file mode 100644 index 0000000000..ec604d722c --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG PRO @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFOsHDnB", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG Translucent @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG Translucent @base.json new file mode 100644 index 0000000000..2d7d0f9777 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG Translucent @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG Translucent @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OF6Ll8lK", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-CF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-CF @base.json new file mode 100644 index 0000000000..60a643b2a3 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG-CF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFuUuIhR", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-GF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-GF @base.json new file mode 100644 index 0000000000..3ff4b96375 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PETG-GF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG-GF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFmveLWz", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA @base.json index 40e594ee62..8965bae8e1 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "EPLAB00", + "filament_id": "OFvgE0Zh", "instantiation": "false", "filament_density": [ "1.25" diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Basic @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Basic @base.json new file mode 100644 index 0000000000..93c52a3382 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Basic @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Basic @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFm06H6V", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Galaxy @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Galaxy @base.json new file mode 100644 index 0000000000..a25fcf8daa --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Galaxy @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Galaxy @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFU1zPxE", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Glow @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Glow @base.json new file mode 100644 index 0000000000..a07012d83b --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Glow @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Glow @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFjPXrXO", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Marble @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Marble @base.json new file mode 100644 index 0000000000..b8990a7c1b --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Marble @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Marble @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFfuhviw", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Matte @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Matte @base.json new file mode 100644 index 0000000000..0394308e99 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Matte @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFsB2lxm", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA PRO @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA PRO @base.json new file mode 100644 index 0000000000..731f5c5ca4 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA PRO @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OF1hznGB", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Silk @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Silk @base.json new file mode 100644 index 0000000000..e708794eea --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Silk @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFXz7Mwx", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Sparkle @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Sparkle @base.json new file mode 100644 index 0000000000..cc292ac240 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Sparkle @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Sparkle @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFhcYzR8", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Translucent2 @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Translucent2 @base.json new file mode 100644 index 0000000000..c0e2e23dfe --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Translucent2 @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Translucent2 @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFn1QaY3", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Wood @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Wood @base.json new file mode 100644 index 0000000000..4e3362a5d3 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA Wood @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Wood @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFWYtgCa", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA+ @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA+ @base.json new file mode 100644 index 0000000000..f90355d85c --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA+ @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFBUIlZ7", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo PLA-CF @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA-CF @base.json new file mode 100644 index 0000000000..4f4979d95f --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo PLA-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFln72PT", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PETG @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PETG @base.json new file mode 100644 index 0000000000..e328cf0a75 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PETG @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid PETG @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFLXvuMr", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PLA+ @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PLA+ @base.json new file mode 100644 index 0000000000..06fd489c41 --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid PLA+ @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid PLA+ @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFkhhUS0", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid TPU 95A @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid TPU 95A @base.json new file mode 100644 index 0000000000..3ffd591fdc --- /dev/null +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo Rapid TPU 95A @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid TPU 95A @base", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "filament_id": "OF30Ftju", + "instantiation": "false" +} diff --git a/resources/profiles/Elegoo/filament/BASE/Elegoo TPU @base.json b/resources/profiles/Elegoo/filament/BASE/Elegoo TPU 95A @base.json similarity index 85% rename from resources/profiles/Elegoo/filament/BASE/Elegoo TPU @base.json rename to resources/profiles/Elegoo/filament/BASE/Elegoo TPU 95A @base.json index 99ed8dc8e9..70cdc0faa0 100644 --- a/resources/profiles/Elegoo/filament/BASE/Elegoo TPU @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Elegoo TPU 95A @base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Elegoo TPU @base", + "name": "Elegoo TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "ETPUB00", + "filament_id": "OFqHQNoZ", "instantiation": "false", "filament_max_volumetric_speed": [ "3.6" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic ABS @base.json b/resources/profiles/Elegoo/filament/BASE/Generic ABS @base.json index 5607709da7..1c6c0dffaf 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic ABS @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic ABS @base.json @@ -3,7 +3,7 @@ "name": "Generic ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GABSB00", + "filament_id": "OFY9muEs", "instantiation": "false", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic ASA @base.json b/resources/profiles/Elegoo/filament/BASE/Generic ASA @base.json index d2f0c4672b..5c1ac04bd9 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic ASA @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic ASA @base.json @@ -3,7 +3,7 @@ "name": "Generic ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GASAB00", + "filament_id": "OFLPAxz3", "instantiation": "false", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic PA @base.json b/resources/profiles/Elegoo/filament/BASE/Generic PA @base.json index e130cbf2e2..c9cae649dc 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic PA @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic PA @base.json @@ -3,7 +3,7 @@ "name": "Generic PA @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GPAB00", + "filament_id": "OFg8ndtj", "instantiation": "false", "chamber_temperatures": [ "60" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic PC @base.json b/resources/profiles/Elegoo/filament/BASE/Generic PC @base.json index 71850f98a9..b07248a643 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic PC @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic PC @base.json @@ -3,7 +3,7 @@ "name": "Generic PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GPCB00", + "filament_id": "OFLakOUI", "instantiation": "false", "filament_max_volumetric_speed": [ "16" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic PET @base.json b/resources/profiles/Elegoo/filament/BASE/Generic PET @base.json index 61a6f03b96..e3af7115ae 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic PET @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic PET @base.json @@ -3,7 +3,7 @@ "name": "Generic PET @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GPETB00", + "filament_id": "OF6MOPWx", "instantiation": "false", "filament_vendor": [ "Generic" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic PETG @base.json b/resources/profiles/Elegoo/filament/BASE/Generic PETG @base.json index 046d0dab90..e22cd697f8 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic PETG @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic PETG @base.json @@ -3,7 +3,7 @@ "name": "Generic PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GPETGB00", + "filament_id": "OFYPdQJh", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Elegoo/filament/BASE/Generic PLA @base.json b/resources/profiles/Elegoo/filament/BASE/Generic PLA @base.json index b9b1b0299c..0116649a9b 100644 --- a/resources/profiles/Elegoo/filament/BASE/Generic PLA @base.json +++ b/resources/profiles/Elegoo/filament/BASE/Generic PLA @base.json @@ -3,7 +3,7 @@ "name": "Generic PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GPLAB00", + "filament_id": "OFDSrzZ8", "instantiation": "false", "filament_density": [ "1.25" diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PAHT-CF @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PAHT-CF @EC.json index d1e05a1372..0b01b2feb3 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PAHT-CF @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PAHT-CF @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PAHT-CF @EC", - "inherits": "Elegoo PAHT @base", + "inherits": "Elegoo PAHT-CF @base", "from": "system", "setting_id": "ZRd4WPQrh8nC8n7G", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PC-FR @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PC-FR @EC.json index 8fae500404..85c449d63d 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PC-FR @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PC-FR @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @EC", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "DOX4jdBlUuiFx27J", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json index e86269bb09..a31310c99e 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @EC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "ADLcWU2wDYdXUM0F", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG Translucent @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG Translucent @EC.json index 28f8027a7a..82cf5984ce 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PETG Translucent @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG Translucent @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @EC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "bkdR8uTPqu0nMTMW", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG-CF @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG-CF @EC.json index 1875a4b76d..40c06c2ea6 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PETG-CF @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG-CF @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @EC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "bNOqwg4q2TE94jEj", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG-GF @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG-GF @EC.json index fcfd9e3ed8..978d44137c 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PETG-GF @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG-GF @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @EC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "jDvyk3UkeiNb2U9m", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Basic @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Basic @EC.json index a69e1b0daa..53fb8da44e 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Basic @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Basic @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "hO0eeJKhhc9aWSqV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Galaxy @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Galaxy @EC.json index cb692d090b..9e4e4e75fa 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Galaxy @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Galaxy @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "F55l4bPdEauXI3Zf", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Marble @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Marble @EC.json index 521d677ac9..5f15585557 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Marble @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Marble @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "lZOlnGqn1G7V5NBY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json index ba0cdcff72..2ebc1acdcb 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "GC7p8OUHQheNbsms", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json index 59b3d04f4b..96e4da2470 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "23RCuAK92MPaxyqe", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json index 1641f49732..3de7272685 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "vSomzlfdeel8Fkkc", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Sparkle @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Sparkle @EC.json index cea1875a1e..ccb945dea0 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Sparkle @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Sparkle @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "XbPbopAAmos9Fhe5", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Wood @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Wood @EC.json index 329eca7704..c023839c9e 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Wood @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Wood @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "4cqc0qMp58PbLivG", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json index 4b02ef0ff2..e4f500e3d9 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "TtRiwCEgVej4q1bD", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PETG @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PETG @EC.json index 5651aabd4e..aaa6b6ed57 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PETG @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PETG @EC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @EC", "renamed_from": "Elegoo RAPID PETG @EC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "BIkMBzPkBJNZtn9I", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PLA+ @EC.json index 441e1c1844..f91163b60b 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PLA+ @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid PLA+ @EC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @EC", "renamed_from": "Elegoo RAPID PLA+ @EC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "SdBul5AmPj8ZwaKm", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid TPU 95A @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid TPU 95A @EC.json index b698d51e37..1bb675bcad 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo Rapid TPU 95A @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo Rapid TPU 95A @EC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @EC", "renamed_from": "Elegoo RAPID TPU 95A @EC", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "XWoU9g1mRLapDWmY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json index 6e9944b30c..ef850ee0d8 100644 --- a/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json +++ b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @EC", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "hqmWADQDYWBuniTB", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo ASA-CF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo ASA-CF @EC2.json index d448a14146..09a741f456 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo ASA-CF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo ASA-CF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo ASA-CF @EC2", - "inherits": "Elegoo ASA @base", + "inherits": "Elegoo ASA-CF @base", "from": "system", "setting_id": "12kyjckYS59VKuJr", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PAHT-CF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PAHT-CF @EC2.json index 10d7202698..e1da626c9a 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PAHT-CF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PAHT-CF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PAHT-CF @EC2", - "inherits": "Elegoo PAHT @base", + "inherits": "Elegoo PAHT-CF @base", "from": "system", "setting_id": "miv95d8rXD4CAgjC", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PC-FR @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PC-FR @EC2.json index e27e485702..fef1cd2942 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PC-FR @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PC-FR @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @EC2", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "4y2nFqOY9OLYQT4I", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PET-CF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PET-CF @EC2.json index 0e73748900..9cfd0df698 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PET-CF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PET-CF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PET-CF @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PET-CF @base", "from": "system", "setting_id": "YuxImosRqvxeXky9", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG HF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG HF @EC2.json index db3eac6a9b..3cc09b1253 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG HF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG HF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG HF @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG HF @base", "from": "system", "setting_id": "JXAbqQk05wQC2ZsV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG PRO @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG PRO @EC2.json index f443590f79..19f171099d 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG PRO @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG PRO @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "7eE7wOnwAMmDk3N8", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG Translucent @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG Translucent @EC2.json index e5d38ae804..117eff2f6c 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG Translucent @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG Translucent @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "c62Io0F7o3YY9UfY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-CF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-CF @EC2.json index 521e3f54d6..ef5bc10365 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-CF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-CF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "H5b1oB4xwcsOGVYG", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-GF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-GF @EC2.json index 0376628dd7..78f93ab630 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-GF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PETG-GF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "UXEBZHN5QuEKg2dX", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Basic @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Basic @EC2.json index bf2e6de3d6..5ca3f673a6 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Basic @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Basic @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "YBylnOIc1QhV45N0", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Galaxy @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Galaxy @EC2.json index 485a267cc4..f907a9add4 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Galaxy @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Galaxy @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "BZ67cDxyhlFdrNPf", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Glow @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Glow @EC2.json index d9cd47f31e..5942a1353b 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Glow @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Glow @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Glow @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Glow @base", "from": "system", "setting_id": "X18eV3oo6N3xDJXN", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Marble @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Marble @EC2.json index 819bcc8fb7..41e18aac91 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Marble @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Marble @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "D4UWZLfsmnwQSQP0", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Matte @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Matte @EC2.json index 5713ef1094..fa490188d9 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Matte @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Matte @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "EMVja9n1ZwI2Lq3R", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA PRO @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA PRO @EC2.json index 128866138d..3f52d014e1 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA PRO @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA PRO @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "TXUB904pAsT5napV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Silk @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Silk @EC2.json index def1a54169..6b334b031a 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Silk @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Silk @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "9M8QYAJcLTyKLgNL", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Sparkle @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Sparkle @EC2.json index 17abe488dc..76efd87383 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Sparkle @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Sparkle @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "l7NSciXWqkFqbTgB", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Translucent2 @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Translucent2 @EC2.json index 8bd5e92dea..6e09760383 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Translucent2 @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Translucent2 @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Translucent2 @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Translucent2 @base", "from": "system", "setting_id": "RKBHiiO580ou2vr1", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Wood @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Wood @EC2.json index 1071c52353..153ace7d5d 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Wood @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA Wood @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "ym42CllFezpl1XEg", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA+ @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA+ @EC2.json index cbf217cae1..5dfd3d5218 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA+ @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA+ @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "vf5ap9MNwVgptsvO", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA-CF @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA-CF @EC2.json index e148759647..7f77984b7b 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo PLA-CF @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo PLA-CF @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "UpGOamlqBkqj71bx", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PETG @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PETG @EC2.json index 7242ba793e..c6973a9316 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PETG @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PETG @EC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @EC2", "renamed_from": "Elegoo RAPID PETG @EC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "1qDXoSeuwBcAbZmk", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PLA+ @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PLA+ @EC2.json index e3d33b2243..b44278d6e2 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PLA+ @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid PLA+ @EC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @EC2", "renamed_from": "Elegoo RAPID PLA+ @EC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "lfHbQa7hrJ7wg4oC", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid TPU 95A @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid TPU 95A @EC2.json index 7195e17e93..14b585d079 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid TPU 95A @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo Rapid TPU 95A @EC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @EC2", "renamed_from": "Elegoo RAPID TPU 95A @EC2", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "siG31sp4DyxsrhAc", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EC2/Elegoo TPU 95A @EC2.json b/resources/profiles/Elegoo/filament/EC2/Elegoo TPU 95A @EC2.json index 1389221bce..255eaf6a1a 100644 --- a/resources/profiles/Elegoo/filament/EC2/Elegoo TPU 95A @EC2.json +++ b/resources/profiles/Elegoo/filament/EC2/Elegoo TPU 95A @EC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @EC2", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "6LUQGjzmx0y5A6Qn", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PAHT-CF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PAHT-CF @ECC.json index bf0363b0d7..de12de0612 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PAHT-CF @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PAHT-CF @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PAHT-CF @ECC", - "inherits": "Elegoo PAHT @base", + "inherits": "Elegoo PAHT-CF @base", "from": "system", "setting_id": "iDRlRpUzPNVYv0lY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PC-FR @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PC-FR @ECC.json index 4fc22048cb..739780ead3 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PC-FR @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PC-FR @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @ECC", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "nCZkQRo7hh7vwwbL", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json index 49692dd335..95beb0642f 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @ECC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "VfYr5aZoseuXcbN6", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG Translucent @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG Translucent @ECC.json index de9d234ce4..d5e37e6443 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG Translucent @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG Translucent @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @ECC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "X5cTMTTWd0GWWj6d", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-CF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-CF @ECC.json index a2f6620a79..4f71ace3fa 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-CF @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-CF @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @ECC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "WNaFMeStUh8INJGx", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-GF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-GF @ECC.json index 68df019a74..ad02614622 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-GF @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG-GF @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @ECC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "s5zG5lNveft4RPEX", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Basic @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Basic @ECC.json index 2470cead83..0b6855e93b 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Basic @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Basic @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "zCxfCnJcHoGLipVy", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Galaxy @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Galaxy @ECC.json index 5e0e0819c1..a60319429e 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Galaxy @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Galaxy @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "M5uv0mruFXpkbauD", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Marble @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Marble @ECC.json index d9104d271f..c436f05881 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Marble @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Marble @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "BFEnBt0IBILLmhri", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json index 79e4a2b076..d8259d1668 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "niMCkAjPd2bJdjZs", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json index bbd35a7c58..4405d9eabc 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "JfYUDBI0wNnLpEsL", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json index 7d135cd9fd..d67e21299f 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "n4hPXKakxN4xmQsj", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Sparkle @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Sparkle @ECC.json index 6143048aa1..b26a6d0486 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Sparkle @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Sparkle @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "kn34IfbyhDKllxwq", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Wood @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Wood @ECC.json index 92842d8fbf..4160c5a11a 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Wood @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Wood @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "kI7ZFyzYkMcrKrM1", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json index 06c833d7b2..3d96576667 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "UbOYgGsK00v3gLL8", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json index 4743d13a9f..a7ff2af7ea 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "rvrpVcpcUAtwXgsn", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PETG @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PETG @ECC.json index 6ea852850d..78be9ad0c5 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PETG @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PETG @ECC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @ECC", "renamed_from": "Elegoo RAPID PETG @ECC", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "r4F3n71ajBUlmLgN", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PLA+ @ECC.json index 859b66e8ad..e331dcb593 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PLA+ @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid PLA+ @ECC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @ECC", "renamed_from": "Elegoo RAPID PLA+ @ECC", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "OvdHgrXbSulHkLWz", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid TPU 95A @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid TPU 95A @ECC.json index 6faef1d73a..af4902d2a0 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid TPU 95A @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo Rapid TPU 95A @ECC.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @ECC", "renamed_from": "Elegoo RAPID TPU 95A @ECC", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "uVpRY8TCq9S6kr8M", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json index 870f4dc8ac..7f707f2371 100644 --- a/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @ECC", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "cOI05FCm8wrkqtDD", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo ASA-CF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo ASA-CF @ECC2.json index 0974b25503..9e9de44980 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo ASA-CF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo ASA-CF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo ASA-CF @ECC2", - "inherits": "Elegoo ASA @base", + "inherits": "Elegoo ASA-CF @base", "from": "system", "setting_id": "X7ugJOOrWixpeke8", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PAHT-CF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PAHT-CF @ECC2.json index 5c41f76588..7d52aface9 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PAHT-CF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PAHT-CF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PAHT-CF @ECC2", - "inherits": "Elegoo PAHT @base", + "inherits": "Elegoo PAHT-CF @base", "from": "system", "setting_id": "hmTwVvyCAIZI7rSY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PC-FR @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PC-FR @ECC2.json index 5875d26411..e179a2fae0 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PC-FR @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PC-FR @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @ECC2", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "M86WAPT5jr5ge7Ni", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PET-CF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PET-CF @ECC2.json index 9519266c2d..57de3396b7 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PET-CF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PET-CF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PET-CF @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PET-CF @base", "from": "system", "setting_id": "sIwAf2oRC7VqYjIR", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG HF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG HF @ECC2.json index 27ad64e1b5..06551d42b3 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG HF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG HF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG HF @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG HF @base", "from": "system", "setting_id": "EAt1AJX3ZupILYWV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG PRO @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG PRO @ECC2.json index bb535d3213..52621252b8 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG PRO @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG PRO @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "YjUFi1BuigQdJGfe", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG Translucent @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG Translucent @ECC2.json index de86ebaae6..81f11bb3cf 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG Translucent @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG Translucent @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "Nk21n7x4I5xjwNqV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-CF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-CF @ECC2.json index 1e40c2a305..a8f66ceb18 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-CF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-CF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "TsJJG9mgzBt5GWPZ", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-GF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-GF @ECC2.json index 13060e74ba..a80a50283a 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-GF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PETG-GF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "Po38QP4RqkGBZTHq", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Basic @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Basic @ECC2.json index e301741c27..e0e19454e5 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Basic @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Basic @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "CG6nOQRYTWN0jJNV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Galaxy @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Galaxy @ECC2.json index 638fef599c..1f4c3a24ea 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Galaxy @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Galaxy @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "jieMxZQRwSJ8lOQK", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Glow @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Glow @ECC2.json index 7944c67d88..9d44f32e96 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Glow @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Glow @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Glow @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Glow @base", "from": "system", "setting_id": "S6c2IXcIWDpViP2T", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Marble @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Marble @ECC2.json index 297ac4fcd0..4a1592daef 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Marble @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Marble @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "vBkiE3Uh1LdCiOig", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Matte @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Matte @ECC2.json index 025d40e19d..5522f8f92f 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Matte @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Matte @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "C3IdNUQ5dSe1wQua", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA PRO @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA PRO @ECC2.json index f1b8a7a1d2..b3ed52adae 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA PRO @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA PRO @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "nIBhL1ZCxYZSMZTO", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Silk @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Silk @ECC2.json index 62efb49b53..970a859a26 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Silk @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Silk @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "R20HD2TcTFmVt8ei", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Sparkle @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Sparkle @ECC2.json index da6927987e..7357f57dd7 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Sparkle @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Sparkle @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "RoM3TYRuszinvW6b", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Translucent2 @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Translucent2 @ECC2.json index 8a81ff7ccf..4119a7c009 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Translucent2 @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Translucent2 @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Translucent2 @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Translucent2 @base", "from": "system", "setting_id": "K1pIYbrCCJUBwAOt", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Wood @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Wood @ECC2.json index 0b794f78a6..c1ee9ccb34 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Wood @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA Wood @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "7D7QoTRo7U4HGaZB", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA+ @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA+ @ECC2.json index 7b6e068061..bad7a5e25d 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA+ @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA+ @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "GCMagCIZUPjPBpuH", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA-CF @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA-CF @ECC2.json index a95b21ddba..1c7d88298d 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA-CF @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo PLA-CF @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "0pllUBj7uWuhIr0v", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PETG @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PETG @ECC2.json index fe19d98291..f550c51ee9 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PETG @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PETG @ECC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @ECC2", "renamed_from": "Elegoo RAPID PETG @ECC2", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "oVp14HbITUsNcgvp", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PLA+ @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PLA+ @ECC2.json index c173221004..4baa2ba58d 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PLA+ @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid PLA+ @ECC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @ECC2", "renamed_from": "Elegoo RAPID PLA+ @ECC2", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "qXybozVO1oL7MEud", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json index ebbdefb767..267956ac99 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @ECC2", "renamed_from": "Elegoo RAPID TPU 95A @ECC2", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "5osmvljNWBUEc9Kc", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ECC2/Elegoo TPU 95A @ECC2.json b/resources/profiles/Elegoo/filament/ECC2/Elegoo TPU 95A @ECC2.json index 86eccaff03..215b9beec9 100644 --- a/resources/profiles/Elegoo/filament/ECC2/Elegoo TPU 95A @ECC2.json +++ b/resources/profiles/Elegoo/filament/ECC2/Elegoo TPU 95A @ECC2.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @ECC2", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "v0Qj3xMBkUGnxZPi", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json index 88c968cf23..734234a7e5 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @0.2 nozzle", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "Q6LfquCFYpzmrILa", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json index 9978fb863b..f8cc2b9fc2 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @0.2 nozzle", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "TBkoABUqBy51TLtW", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json index 7b11b3b54e..82e74b3448 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @0.2 nozzle", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "3zgNnsZ5SmrldddZ", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json index c606063a33..9f9b494683 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "cBFHhPKahRBGfAg6", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json index f5bb2921b3..cb1dbf6ebd 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "TyHg4K4ZNiYKgaso", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json index 80f9b0cab9..9514bef332 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "ed7EP0Fx9X6WoP8q", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json index e6a61535b3..7cd383baf0 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "9cy4zu57LxlFIrLB", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json index 7bab03c3c0..960d70e8b4 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "IODCNDnNbt1xXMQR", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json index 4f9d3ddacd..a2c6a17ee8 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @0.2 nozzle", "renamed_from": "Elegoo RAPID PETG @0.2 nozzle", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "Vn71U93sqvxWaq5J", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json index f7d3bf2b8b..5677780b04 100644 --- a/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json +++ b/resources/profiles/Elegoo/filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @0.2 nozzle", "renamed_from": "Elegoo RAPID PLA+ @0.2 nozzle", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "52q6GSMo16aOU2a0", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json index 2d540432f1..ee33397b89 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @EN2 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "47TFK2SdXkanFany", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json index ec6735ee45..9cc8d43f42 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @EN2 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "PG4cLzHQ2okqwTVi", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json index f4cb06df03..15c6fe281b 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @EN2 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "xVvTmdiPx4DqsoSt", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json index 1d4376f603..655a9b4ff0 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @EN2 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "Wuj48uGxkjtu1k0E", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json index 1625d88ade..02f95a30e4 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "rKMXIa1T57ARSSew", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json index 969338f3fb..5ce5cb9b03 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "dK5fXHKyvXbajhfU", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json index 49de0c172a..e65cfd721a 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "vcJBgxGVh5Rl3dRy", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json index b526d88f8a..4ba71c6f1c 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "pFzHY2WtgjYBAq1c", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json index bbca38423a..fc4a9de6d7 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "AP6zWYwNv7aXdT4e", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json index b75a9105f7..1100589ce7 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "AquzfXzcf6CxPLmL", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json index a63d22f72b..309f296c35 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "sYpjo9kbuDSM5YXe", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json index 1f52f7a951..10ee31a860 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "FCCgNMxR3m3CtWBL", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json index aa2afe2789..cdbb0a9336 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "qn1N6b1JCgut6S69", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json index 51be7c9afc..d90f5a7d86 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "vmxHMRDkf1EpLGx1", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json index 66e35e0448..b60d3aa948 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @EN2 Series", "renamed_from": "Elegoo RAPID PETG @EN2 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "7Nqa8yKgcpoRnMhS", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json index 16f84c1480..a2e29df5f2 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @EN2 Series", "renamed_from": "Elegoo RAPID PLA+ @EN2 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "GRiM2kKnyW0xiFoS", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json index f7fd820319..5c3a6c4bd8 100644 --- a/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json +++ b/resources/profiles/Elegoo/filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @EN2 Series", "renamed_from": "Elegoo RAPID TPU 95A @EN2 Series", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "NcE57l7rlZXMQqqO", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json index d7b7d77e88..68076528bc 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @EN3 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "hcpl3lUmYmocda9K", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json index a5df1863a2..3b3c367d85 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @EN3 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "vvE6QSdUAwZyExFq", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json index 85b4e262ce..d47880e700 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @EN3 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "w31T0qj9YkyNYfXR", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json index a0c6dffa1e..74e80e0306 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @EN3 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "Ss1cK4Mg4Qsmq60H", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json index d322e76d4a..c7008362e1 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "HuzVgg6RrpAtYYEv", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json index 70a9903ae6..213d2cdd80 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "BpZZWJcuFxWOCCnw", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json index b6e4d20992..4ccc34dbc8 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "BxsWsE3wgE9wgBmm", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json index 8360ac8d5c..511c9d9677 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "L3da64GFIKUFdDJA", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json index 114e264047..a62506cc92 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "V7HUl0gBvGKwKD1A", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json index d7fa7b836b..8498c99ccb 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "ik0YrrrI6oUpXz79", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json index b40ed87cf6..990ab62ced 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "5NjKDHvQ2r1kxHGU", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json index 3d3ac38460..22f0c6486c 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "aieihLgO1a0ZdWfJ", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json index 00844dd1e8..02b51855fc 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "LqnrFp0vDbiCMJ8I", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json index ab7ccd7730..8284fd2279 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "1NWIyM71opgpoto1", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json index 30ca32476f..bbbb7a044b 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @EN3 Series", "renamed_from": "Elegoo RAPID PETG @EN3 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "WrjA1jFlRkBjm8sV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json index a8755142d5..2e79376216 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @EN3 Series", "renamed_from": "Elegoo RAPID PLA+ @EN3 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "HLIz2ghBgZEcM67x", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json index 0a9d3251b0..11370d1342 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @EN3 Series", "renamed_from": "Elegoo RAPID TPU 95A @EN3 Series", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "q51os4xSncl4kA7h", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json index 864845cb2f..8d4c0d5976 100644 --- a/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json +++ b/resources/profiles/Elegoo/filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @EN3 Series", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "4W6ZheJxNPUPxe1s", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json index 3f514f290c..b3bf57532d 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @EN4 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "9vWaWFD7kELXCz9k", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json index 9d4befe58d..64d7fe70b4 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @EN4 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "MGNtc9J7whLEQzfo", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json index 6b6d93b07e..570205ae49 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @EN4 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "OqmWX74QvP3luz8T", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json index 9c60c02542..14c7c8cd16 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @EN4 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "l9VHRBqMe9jvI5x6", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json index a35c8b06f3..3393aa3998 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "djQpscbgnpi9yeDU", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json index 3b8b23e8d2..510ef8199f 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "rDOS8SneslZCJyiY", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json index 6aaaa87311..81be94abca 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "EXITbaYE2JGd9m6w", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json index b05ed89beb..5240be0bad 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "PKKBmF1QUn3byAbe", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json index d993878b35..d8852e7c62 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "912jZphbXGIftHOj", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json index 0f01fc1e0e..9e87cd98c4 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "3Gwsgkj54YfChaTX", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json index 50750bf2cb..da863b088e 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "fpSoENagRf6Xkgtr", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json index 3e84f6da3f..cadcf8122c 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "9HTUZ0mmSCp2asTR", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json index 569f2e4a73..270d303450 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "aFHpETdqnjrmKoh2", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json index 174db0000f..3eba08c02a 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "tRWzBsYXsnpNVsQ4", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json index 5355c6c52f..855ce546c9 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @EN4 Series", "renamed_from": "Elegoo RAPID PETG @EN4 Series", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "fvbwrYR63t9NnL8m", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json index 024aa42f17..5ec149fee7 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @EN4 Series", "renamed_from": "Elegoo RAPID PLA+ @EN4 Series", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "Eu5Ao6aTdlnV5o7e", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json index bcf333c319..0c3389a1d2 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @EN4 Series", "renamed_from": "Elegoo RAPID TPU 95A @EN4 Series", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "0FWDHJF7V9rGXugP", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json index 392812ff9a..60f5b55a19 100644 --- a/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json +++ b/resources/profiles/Elegoo/filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @EN4 Series", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "6pp381J3ahRYYtFE", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json index e5a75475c3..bf3942c6c9 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @Elegoo Giga", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "cO87yMETWbUTIweN", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json index 61c21f7d5f..89b17d0d8c 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @Elegoo Giga", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "fkE2LCMu63t1NQtI", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json index 8f90166c6b..633fee4d01 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @Elegoo Giga", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "uGF6puqnX1jW2pmn", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json index 0d280b37cb..085eba8e80 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @Elegoo Giga", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "S4ZpKZDyr5g5HMPi", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json index d49474bcfe..345eb9b131 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "vdtyGUjloveBjsGV", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json index c9ba6949ab..4c6df1a2ac 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "Nq1YaFeJ6Osr7OZ9", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json index 435e05d0ab..a76087fb41 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "6mfjc7t9ntuG1ZKW", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json index 9ab372abee..ebc4a86a33 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "mHbvYB78eds96SH8", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json index 9b11bc2cae..68ad38e31a 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "pgsOuYMxtcm3Fkar", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json index 9dd74672fc..2d3118d9f9 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @Elegoo Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "BI2euv7xwM9F2hKC", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json index b91444664e..41aaa430e8 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PETG @Elegoo Giga", "renamed_from": "Elegoo RAPID PETG @Elegoo Giga;Elegoo Rapid PETG @EOS Giga;Elegoo RAPID PETG @EOS Giga", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "4ut2mjKopnW6tfxj", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json index da6b0baf35..e42850d3e8 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid PLA+ @Elegoo Giga", "renamed_from": "Elegoo RAPID PLA+ @Elegoo Giga;Elegoo Rapid PLA+ @EOS Giga;Elegoo RAPID PLA+ @EOS Giga", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "9I2DPoLgiCzn1S3i", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json index f634875fd5..01ccd899d4 100644 --- a/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json +++ b/resources/profiles/Elegoo/filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Elegoo Rapid TPU 95A @Elegoo Giga", "renamed_from": "Elegoo RAPID TPU 95A @Elegoo Giga;Elegoo Rapid TPU 95A @EOS Giga;Elegoo RAPID TPU 95A @EOS Giga", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "i0PeAUTlls9DGtRK", "instantiation": "true", diff --git a/resources/profiles/Elegoo/filament/Generic/Generic ABS-CF @Elegoo Centauri.json b/resources/profiles/Elegoo/filament/Generic/Generic ABS-CF @Elegoo Centauri.json index 2ebff4843e..4f1fd0d973 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic ABS-CF @Elegoo Centauri.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic ABS-CF @Elegoo Centauri.json @@ -4,6 +4,7 @@ "inherits": "Generic ABS @base", "from": "system", "setting_id": "fRiriEvlcxDDO5tc", + "filament_id": "OFAIBCLJ", "instantiation": "true", "nozzle_temperature": [ "260" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic ASA-CF @Elegoo Centauri.json b/resources/profiles/Elegoo/filament/Generic/Generic ASA-CF @Elegoo Centauri.json index 1fe2791869..b51663338a 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic ASA-CF @Elegoo Centauri.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic ASA-CF @Elegoo Centauri.json @@ -4,6 +4,7 @@ "inherits": "Generic ASA @base", "from": "system", "setting_id": "S5kHIMcORjlPRnVs", + "filament_id": "OF53eLVD", "instantiation": "true", "filament_type": [ "ASA-CF" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PA6-CF @Elegoo.json b/resources/profiles/Elegoo/filament/Generic/Generic PA6-CF @Elegoo.json index 46b8157cf4..a0a9f7705f 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PA6-CF @Elegoo.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PA6-CF @Elegoo.json @@ -4,6 +4,7 @@ "inherits": "Generic PA @base", "from": "system", "setting_id": "TPgpyakWZ7NjVnj5", + "filament_id": "OFhTPf6L", "instantiation": "true", "fan_min_speed": [ "10" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PC-CF @Elegoo.json b/resources/profiles/Elegoo/filament/Generic/Generic PC-CF @Elegoo.json index da160366dd..a06d9fec40 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PC-CF @Elegoo.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PC-CF @Elegoo.json @@ -4,6 +4,7 @@ "inherits": "Generic PC @base", "from": "system", "setting_id": "KMhdBJbiUeXxKgPS", + "filament_id": "OFafO6VM", "instantiation": "true", "filament_type": [ "PC-CF" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PET-CF @Elegoo Centauri.json b/resources/profiles/Elegoo/filament/Generic/Generic PET-CF @Elegoo Centauri.json index 4e9aa92be9..a3b8082643 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PET-CF @Elegoo Centauri.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PET-CF @Elegoo Centauri.json @@ -4,6 +4,7 @@ "inherits": "Generic PET @base", "from": "system", "setting_id": "Q6wiKjigmzkcMxFz", + "filament_id": "OFQdaVZS", "instantiation": "true", "filament_type": [ "PET-CF" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PETG PRO @Elegoo.json b/resources/profiles/Elegoo/filament/Generic/Generic PETG PRO @Elegoo.json index c2ba7dfa97..f122066617 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PETG PRO @Elegoo.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PETG PRO @Elegoo.json @@ -4,6 +4,7 @@ "name": "Generic PETG PRO @Elegoo", "renamed_from": "Elegoo Generic PETG PRO", "from": "system", + "filament_id": "OFllmFhT", "instantiation": "true", "inherits": "Generic PETG @base", "cool_plate_temp": [ diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PETG-CF @Elegoo Centauri.json b/resources/profiles/Elegoo/filament/Generic/Generic PETG-CF @Elegoo Centauri.json index 5e5e84e3dd..a57b29cbb6 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PETG-CF @Elegoo Centauri.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PETG-CF @Elegoo Centauri.json @@ -4,6 +4,7 @@ "inherits": "Generic PETG @base", "from": "system", "setting_id": "bWUrg1tIttzhMYlr", + "filament_id": "OFoYSJKi", "instantiation": "true", "filament_type": [ "PETG-CF" diff --git a/resources/profiles/Elegoo/filament/Generic/Generic PLA Matte @Elegoo.json b/resources/profiles/Elegoo/filament/Generic/Generic PLA Matte @Elegoo.json index db84f78382..33561c23bc 100644 --- a/resources/profiles/Elegoo/filament/Generic/Generic PLA Matte @Elegoo.json +++ b/resources/profiles/Elegoo/filament/Generic/Generic PLA Matte @Elegoo.json @@ -3,6 +3,7 @@ "setting_id": "dH2Yf92iqsOj5XYo", "name": "Generic PLA Matte @Elegoo", "from": "system", + "filament_id": "OFmY0l6t", "instantiation": "true", "inherits": "Generic PLA @base", "cool_plate_temp": [ diff --git a/resources/profiles/Eryone.json b/resources/profiles/Eryone.json index b3bec6e892..488ba18337 100644 --- a/resources/profiles/Eryone.json +++ b/resources/profiles/Eryone.json @@ -1,6 +1,6 @@ { "name": "Eryone", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Eryone configurations", "machine_model_list": [ diff --git a/resources/profiles/Eryone/filament/Eryone ABS-CF.json b/resources/profiles/Eryone/filament/Eryone ABS-CF.json index bb976dcd88..a6cc92c15d 100644 --- a/resources/profiles/Eryone/filament/Eryone ABS-CF.json +++ b/resources/profiles/Eryone/filament/Eryone ABS-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "f4VPJtNcZOIIKyDz", - "filament_id": "EFL81", + "filament_id": "OFQ1zgm3", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone ABS.json b/resources/profiles/Eryone/filament/Eryone ABS.json index c09a35d34e..1d42db775b 100644 --- a/resources/profiles/Eryone/filament/Eryone ABS.json +++ b/resources/profiles/Eryone/filament/Eryone ABS.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "JfQiR5qK9Ue3JDt5", - "filament_id": "EFL91", + "filament_id": "OFOzwywz", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone ASA-CF.json b/resources/profiles/Eryone/filament/Eryone ASA-CF.json index afe2d3b33e..c95302c16a 100644 --- a/resources/profiles/Eryone/filament/Eryone ASA-CF.json +++ b/resources/profiles/Eryone/filament/Eryone ASA-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "wSiMHM1kTIgJ2gCt", - "filament_id": "EFL82", + "filament_id": "OFwyt1xt", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone ASA.json b/resources/profiles/Eryone/filament/Eryone ASA.json index 88afccbe26..7c2b9d9c91 100644 --- a/resources/profiles/Eryone/filament/Eryone ASA.json +++ b/resources/profiles/Eryone/filament/Eryone ASA.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "hu9uQy9zFgemTBjQ", - "filament_id": "EFL92", + "filament_id": "OFVtIasg", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PA-CF.json b/resources/profiles/Eryone/filament/Eryone PA-CF.json index abaf44eb7d..d91ea8a490 100644 --- a/resources/profiles/Eryone/filament/Eryone PA-CF.json +++ b/resources/profiles/Eryone/filament/Eryone PA-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "LIXTvjHAxtaHIO8s", - "filament_id": "EFL72", + "filament_id": "OFp9wdmf", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PA-GF.json b/resources/profiles/Eryone/filament/Eryone PA-GF.json index 15ae055010..657d86b291 100644 --- a/resources/profiles/Eryone/filament/Eryone PA-GF.json +++ b/resources/profiles/Eryone/filament/Eryone PA-GF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "4srMOoPcAlQygIY8", - "filament_id": "EFL73", + "filament_id": "OFkq7rPy", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PA.json b/resources/profiles/Eryone/filament/Eryone PA.json index efcbc94393..b03dccd32f 100644 --- a/resources/profiles/Eryone/filament/Eryone PA.json +++ b/resources/profiles/Eryone/filament/Eryone PA.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "oqzAdvvf6jdQTb4M", - "filament_id": "EFL71", + "filament_id": "OFS4jbj3", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PETG-CF.json b/resources/profiles/Eryone/filament/Eryone PETG-CF.json index 76eca543b5..3dc02ddf00 100644 --- a/resources/profiles/Eryone/filament/Eryone PETG-CF.json +++ b/resources/profiles/Eryone/filament/Eryone PETG-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "Xp95jFFK5QSP3OoR", - "filament_id": "EFL43", + "filament_id": "OFNstOna", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PETG.json b/resources/profiles/Eryone/filament/Eryone PETG.json index 3f0644565a..ee6b20423a 100644 --- a/resources/profiles/Eryone/filament/Eryone PETG.json +++ b/resources/profiles/Eryone/filament/Eryone PETG.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "rJCPgQiIXRsfQwWY", - "filament_id": "EFL93", + "filament_id": "OF8kJys9", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PLA-CF.json b/resources/profiles/Eryone/filament/Eryone PLA-CF.json index 3e7e8fa3d7..a3186cee9f 100644 --- a/resources/profiles/Eryone/filament/Eryone PLA-CF.json +++ b/resources/profiles/Eryone/filament/Eryone PLA-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "t726eLsJ87OjqUYk", - "filament_id": "EFL40", + "filament_id": "OFilAA3b", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PLA.json b/resources/profiles/Eryone/filament/Eryone PLA.json index 6da685ff2f..8e23c19ade 100644 --- a/resources/profiles/Eryone/filament/Eryone PLA.json +++ b/resources/profiles/Eryone/filament/Eryone PLA.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "nTSleDxF7HWxBeK9", - "filament_id": "EFL90", + "filament_id": "OFmKU2Ha", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PP-CF.json b/resources/profiles/Eryone/filament/Eryone PP-CF.json index e2a9c492cf..1f5e155b55 100644 --- a/resources/profiles/Eryone/filament/Eryone PP-CF.json +++ b/resources/profiles/Eryone/filament/Eryone PP-CF.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "GuuXzP9ILCWG5cxt", - "filament_id": "EFL33", + "filament_id": "OFbh7HcA", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone PP.json b/resources/profiles/Eryone/filament/Eryone PP.json index 835f8fc5a0..abd35e11e3 100644 --- a/resources/profiles/Eryone/filament/Eryone PP.json +++ b/resources/profiles/Eryone/filament/Eryone PP.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "sZF6qOPqqu88Yu5e", - "filament_id": "EFL43", + "filament_id": "OF5oNRED", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone Silk PLA.json b/resources/profiles/Eryone/filament/Eryone Silk PLA.json index 2edfd832c1..40a6bd252b 100644 --- a/resources/profiles/Eryone/filament/Eryone Silk PLA.json +++ b/resources/profiles/Eryone/filament/Eryone Silk PLA.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "S3s3NQAoScvfyHh3", - "filament_id": "EFL941", + "filament_id": "OF7nBAd3", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/Eryone/filament/Eryone TPU.json b/resources/profiles/Eryone/filament/Eryone TPU.json index 6bfd555337..c44d357c84 100644 --- a/resources/profiles/Eryone/filament/Eryone TPU.json +++ b/resources/profiles/Eryone/filament/Eryone TPU.json @@ -4,7 +4,7 @@ "inherits": "Eryone Standard PLA", "from": "system", "setting_id": "ci6MWQPZNf09qrOJ", - "filament_id": "EFL95", + "filament_id": "OFhUjPA5", "instantiation": "true", "compatible_printers": [ "Thinker X400 0.4 nozzle" diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 8e234dffca..1e0c76d458 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,6 +1,6 @@ { "name": "FLSun", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "FLSun configurations", "machine_model_list": [ @@ -177,100 +177,100 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "FLSun Generic ABS", - "sub_path": "filament/FLSun Generic ABS.json" + "name": "Generic ABS @FLSun", + "sub_path": "filament/Generic ABS @FLSun.json" }, { - "name": "FLSun Generic ASA", - "sub_path": "filament/FLSun Generic ASA.json" + "name": "Generic ASA @FLSun", + "sub_path": "filament/Generic ASA @FLSun.json" }, { - "name": "FLSun Generic PA", - "sub_path": "filament/FLSun Generic PA.json" + "name": "Generic PA @FLSun", + "sub_path": "filament/Generic PA @FLSun.json" }, { - "name": "FLSun Generic PA-CF", - "sub_path": "filament/FLSun Generic PA-CF.json" + "name": "Generic PA-CF @FLSun", + "sub_path": "filament/Generic PA-CF @FLSun.json" }, { - "name": "FLSun Generic PC", - "sub_path": "filament/FLSun Generic PC.json" + "name": "Generic PC @FLSun", + "sub_path": "filament/Generic PC @FLSun.json" }, { - "name": "FLSun Generic PETG", - "sub_path": "filament/FLSun Generic PETG.json" + "name": "Generic PETG @FLSun", + "sub_path": "filament/Generic PETG @FLSun.json" }, { - "name": "FLSun Generic PLA", - "sub_path": "filament/FLSun Generic PLA.json" + "name": "Generic PLA @FLSun", + "sub_path": "filament/Generic PLA @FLSun.json" }, { - "name": "FLSun Generic PLA-CF", - "sub_path": "filament/FLSun Generic PLA-CF.json" + "name": "Generic PLA-CF @FLSun", + "sub_path": "filament/Generic PLA-CF @FLSun.json" }, { - "name": "FLSun Generic PVA", - "sub_path": "filament/FLSun Generic PVA.json" + "name": "Generic PVA @FLSun", + "sub_path": "filament/Generic PVA @FLSun.json" }, { - "name": "FLSun Generic TPU", - "sub_path": "filament/FLSun Generic TPU.json" + "name": "Generic TPU @FLSun", + "sub_path": "filament/Generic TPU @FLSun.json" }, { - "name": "FLSun S1 ABS", - "sub_path": "filament/FLSun S1 ABS.json" + "name": "Generic ABS @FLSun S1", + "sub_path": "filament/Generic ABS @FLSun S1.json" }, { - "name": "FLSun T1 ABS", - "sub_path": "filament/FLSun T1 ABS.json" + "name": "Generic ABS @FLSun T1", + "sub_path": "filament/Generic ABS @FLSun T1.json" }, { - "name": "FLSun S1 ASA", - "sub_path": "filament/FLSun S1 ASA.json" + "name": "Generic ASA @FLSun S1", + "sub_path": "filament/Generic ASA @FLSun S1.json" }, { - "name": "FLSun T1 ASA", - "sub_path": "filament/FLSun T1 ASA.json" + "name": "Generic ASA @FLSun T1", + "sub_path": "filament/Generic ASA @FLSun T1.json" }, { - "name": "FLSun S1 PETG", - "sub_path": "filament/FLSun S1 PETG.json" + "name": "Generic PETG @FLSun S1", + "sub_path": "filament/Generic PETG @FLSun S1.json" }, { - "name": "FLSun T1 PETG", - "sub_path": "filament/FLSun T1 PETG.json" + "name": "Generic PETG @FLSun T1", + "sub_path": "filament/Generic PETG @FLSun T1.json" }, { - "name": "FLSun S1 PLA Generic", - "sub_path": "filament/FLSun S1 PLA Generic.json" + "name": "Generic PLA @FLSun S1", + "sub_path": "filament/Generic PLA @FLSun S1.json" }, { - "name": "FLSun S1 PLA High Speed", - "sub_path": "filament/FLSun S1 PLA High Speed.json" + "name": "Generic PLA High Speed @FLSun S1", + "sub_path": "filament/Generic PLA High Speed @FLSun S1.json" }, { - "name": "FLSun S1 PLA Silk", - "sub_path": "filament/FLSun S1 PLA Silk.json" + "name": "Generic PLA Silk @FLSun S1", + "sub_path": "filament/Generic PLA Silk @FLSun S1.json" }, { - "name": "FLSun T1 PLA Generic", - "sub_path": "filament/FLSun T1 PLA Generic.json" + "name": "Generic PLA @FLSun T1", + "sub_path": "filament/Generic PLA @FLSun T1.json" }, { - "name": "FLSun T1 PLA High Speed", - "sub_path": "filament/FLSun T1 PLA High Speed.json" + "name": "Generic PLA High Speed @FLSun T1", + "sub_path": "filament/Generic PLA High Speed @FLSun T1.json" }, { - "name": "FLSun T1 PLA Silk", - "sub_path": "filament/FLSun T1 PLA Silk.json" + "name": "Generic PLA Silk @FLSun T1", + "sub_path": "filament/Generic PLA Silk @FLSun T1.json" }, { - "name": "FLSun S1 TPU", - "sub_path": "filament/FLSun S1 TPU.json" + "name": "Generic TPU @FLSun S1", + "sub_path": "filament/Generic TPU @FLSun S1.json" }, { - "name": "FLSun T1 TPU", - "sub_path": "filament/FLSun T1 TPU.json" + "name": "Generic TPU @FLSun T1", + "sub_path": "filament/Generic TPU @FLSun T1.json" } ], "machine_list": [ diff --git a/resources/profiles/FLSun/filament/FLSun S1 ABS.json b/resources/profiles/FLSun/filament/Generic ABS @FLSun S1.json similarity index 87% rename from resources/profiles/FLSun/filament/FLSun S1 ABS.json rename to resources/profiles/FLSun/filament/Generic ABS @FLSun S1.json index d9a3922199..3a57d47404 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 ABS.json +++ b/resources/profiles/FLSun/filament/Generic ABS @FLSun S1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun S1 ABS", - "inherits": "FLSun Generic ABS", + "name": "Generic ABS @FLSun S1", + "inherits": "Generic ABS @FLSun", + "renamed_from": "FLSun S1 ABS", "from": "system", - "setting_id": "tvpZ28Oe4Al7hlgj", - "filament_id": "GFB99", + "setting_id": "a7U3u888FlJ6CSFb", "instantiation": "true", "fan_max_speed": [ "50" diff --git a/resources/profiles/FLSun/filament/FLSun T1 ABS.json b/resources/profiles/FLSun/filament/Generic ABS @FLSun T1.json similarity index 87% rename from resources/profiles/FLSun/filament/FLSun T1 ABS.json rename to resources/profiles/FLSun/filament/Generic ABS @FLSun T1.json index e7d8bea77a..36c684cdc6 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 ABS.json +++ b/resources/profiles/FLSun/filament/Generic ABS @FLSun T1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun T1 ABS", - "inherits": "FLSun Generic ABS", + "name": "Generic ABS @FLSun T1", + "inherits": "Generic ABS @FLSun", + "renamed_from": "FLSun T1 ABS", "from": "system", - "setting_id": "GP8VqRfidKOdj0ZJ", - "filament_id": "GFB99", + "setting_id": "j185WWfVulPxWJvQ", "instantiation": "true", "fan_max_speed": [ "50" diff --git a/resources/profiles/FLSun/filament/FLSun Generic ABS.json b/resources/profiles/FLSun/filament/Generic ABS @FLSun.json similarity index 71% rename from resources/profiles/FLSun/filament/FLSun Generic ABS.json rename to resources/profiles/FLSun/filament/Generic ABS @FLSun.json index 82d91d891c..2daf007fe9 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic ABS.json +++ b/resources/profiles/FLSun/filament/Generic ABS @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic ABS", + "name": "Generic ABS @FLSun", "inherits": "fdm_filament_abs", + "renamed_from": "FLSun Generic ABS", "from": "system", - "setting_id": "2f9nYaR0PUMkGvDD", - "filament_id": "GFB99", + "setting_id": "1lPapSrZbKMLBx6k", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/FLSun/filament/FLSun S1 ASA.json b/resources/profiles/FLSun/filament/Generic ASA @FLSun S1.json similarity index 87% rename from resources/profiles/FLSun/filament/FLSun S1 ASA.json rename to resources/profiles/FLSun/filament/Generic ASA @FLSun S1.json index a82c9179a4..d605ac5519 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 ASA.json +++ b/resources/profiles/FLSun/filament/Generic ASA @FLSun S1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun S1 ASA", - "inherits": "FLSun Generic ASA", + "name": "Generic ASA @FLSun S1", + "inherits": "Generic ASA @FLSun", + "renamed_from": "FLSun S1 ASA", "from": "system", - "setting_id": "C5oyaWw3YVEz0CgE", - "filament_id": "GFB98", + "setting_id": "qJeJII6CgHuaC4Iz", "instantiation": "true", "fan_max_speed": [ "50" diff --git a/resources/profiles/FLSun/filament/FLSun T1 ASA.json b/resources/profiles/FLSun/filament/Generic ASA @FLSun T1.json similarity index 87% rename from resources/profiles/FLSun/filament/FLSun T1 ASA.json rename to resources/profiles/FLSun/filament/Generic ASA @FLSun T1.json index c34c34a213..c27f9e34dd 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 ASA.json +++ b/resources/profiles/FLSun/filament/Generic ASA @FLSun T1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun T1 ASA", - "inherits": "FLSun Generic ASA", + "name": "Generic ASA @FLSun T1", + "inherits": "Generic ASA @FLSun", + "renamed_from": "FLSun T1 ASA", "from": "system", - "setting_id": "YmJbWfCQpNk9nxB7", - "filament_id": "GFB98", + "setting_id": "kj4PPnvuvvGDrDwA", "instantiation": "true", "fan_max_speed": [ "50" diff --git a/resources/profiles/FLSun/filament/FLSun Generic ASA.json b/resources/profiles/FLSun/filament/Generic ASA @FLSun.json similarity index 71% rename from resources/profiles/FLSun/filament/FLSun Generic ASA.json rename to resources/profiles/FLSun/filament/Generic ASA @FLSun.json index 650953c7b0..e86f82f441 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic ASA.json +++ b/resources/profiles/FLSun/filament/Generic ASA @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic ASA", + "name": "Generic ASA @FLSun", "inherits": "fdm_filament_asa", + "renamed_from": "FLSun Generic ASA", "from": "system", - "setting_id": "9GPCRihSQTBRxkm3", - "filament_id": "GFB98", + "setting_id": "22OH64Yfg5sdyEmz", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PA.json b/resources/profiles/FLSun/filament/Generic PA @FLSun.json similarity index 74% rename from resources/profiles/FLSun/filament/FLSun Generic PA.json rename to resources/profiles/FLSun/filament/Generic PA @FLSun.json index e24fbbd966..49fe8c01fc 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PA.json +++ b/resources/profiles/FLSun/filament/Generic PA @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PA", + "name": "Generic PA @FLSun", "inherits": "fdm_filament_pa", + "renamed_from": "FLSun Generic PA", "from": "system", - "setting_id": "ek14AgskfJXeZ84u", - "filament_id": "GFN99", + "setting_id": "hlHGTLqHjaRfMkqC", + "filament_id": "OFg8ndtj", "instantiation": "true", "nozzle_temperature_initial_layer": [ "280" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json b/resources/profiles/FLSun/filament/Generic PA-CF @FLSun.json similarity index 75% rename from resources/profiles/FLSun/filament/FLSun Generic PA-CF.json rename to resources/profiles/FLSun/filament/Generic PA-CF @FLSun.json index 0b3441d866..b6dc311dcf 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json +++ b/resources/profiles/FLSun/filament/Generic PA-CF @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PA-CF", + "name": "Generic PA-CF @FLSun", "inherits": "fdm_filament_pa", + "renamed_from": "FLSun Generic PA-CF", "from": "system", - "setting_id": "2JOA0YeYZHj0lFmA", - "filament_id": "GFN98", + "setting_id": "xiLUY07SM81i1pPs", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PC.json b/resources/profiles/FLSun/filament/Generic PC @FLSun.json similarity index 71% rename from resources/profiles/FLSun/filament/FLSun Generic PC.json rename to resources/profiles/FLSun/filament/Generic PC @FLSun.json index 2d03d67063..e4d81857d3 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PC.json +++ b/resources/profiles/FLSun/filament/Generic PC @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PC", + "name": "Generic PC @FLSun", "inherits": "fdm_filament_pc", + "renamed_from": "FLSun Generic PC", "from": "system", - "setting_id": "wluYSRtaCqajFCYT", - "filament_id": "GFC99", + "setting_id": "Ok08F2LxNjxor6ph", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/FLSun/filament/FLSun S1 PETG.json b/resources/profiles/FLSun/filament/Generic PETG @FLSun S1.json similarity index 86% rename from resources/profiles/FLSun/filament/FLSun S1 PETG.json rename to resources/profiles/FLSun/filament/Generic PETG @FLSun S1.json index 3b477c6335..02506525dd 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PETG.json +++ b/resources/profiles/FLSun/filament/Generic PETG @FLSun S1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun S1 PETG", - "inherits": "FLSun Generic PETG", + "name": "Generic PETG @FLSun S1", + "inherits": "Generic PETG @FLSun", + "renamed_from": "FLSun S1 PETG", "from": "system", - "setting_id": "Ac6q0FtMFMLesFdU", - "filament_id": "GFG99", + "setting_id": "LxDenrdsmz0QjMDE", "instantiation": "true", "fan_max_speed": [ "60" diff --git a/resources/profiles/FLSun/filament/FLSun T1 PETG.json b/resources/profiles/FLSun/filament/Generic PETG @FLSun T1.json similarity index 86% rename from resources/profiles/FLSun/filament/FLSun T1 PETG.json rename to resources/profiles/FLSun/filament/Generic PETG @FLSun T1.json index 9b753af05b..64651bea1d 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PETG.json +++ b/resources/profiles/FLSun/filament/Generic PETG @FLSun T1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun T1 PETG", - "inherits": "FLSun Generic PETG", + "name": "Generic PETG @FLSun T1", + "inherits": "Generic PETG @FLSun", + "renamed_from": "FLSun T1 PETG", "from": "system", - "setting_id": "A2aA7xcmqgz8ERyY", - "filament_id": "GFG99", + "setting_id": "n9wpUe32lTtq2iSS", "instantiation": "true", "fan_max_speed": [ "60" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PETG.json b/resources/profiles/FLSun/filament/Generic PETG @FLSun.json similarity index 84% rename from resources/profiles/FLSun/filament/FLSun Generic PETG.json rename to resources/profiles/FLSun/filament/Generic PETG @FLSun.json index 6b81b49092..84eaee1c7c 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PETG.json +++ b/resources/profiles/FLSun/filament/Generic PETG @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PETG", + "name": "Generic PETG @FLSun", "inherits": "fdm_filament_pet", + "renamed_from": "FLSun Generic PETG", "from": "system", - "setting_id": "FCjlzoLFYn3IVxxD", - "filament_id": "GFG99", + "setting_id": "pWuJLjWhYMutD92n", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json b/resources/profiles/FLSun/filament/Generic PLA @FLSun S1.json similarity index 83% rename from resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json rename to resources/profiles/FLSun/filament/Generic PLA @FLSun S1.json index f6324b0bc3..5674ba8c27 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json +++ b/resources/profiles/FLSun/filament/Generic PLA @FLSun S1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun S1 PLA Generic", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA @FLSun S1", + "inherits": "Generic PLA @FLSun", + "renamed_from": "FLSun S1 PLA Generic", "from": "system", - "setting_id": "z0Y9rQVZairHqwbi", - "filament_id": "GFL99", + "setting_id": "4f9vGTYsHDbZoVjs", + "filament_id": "OFDSrzZ8", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json b/resources/profiles/FLSun/filament/Generic PLA @FLSun T1.json similarity index 83% rename from resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json rename to resources/profiles/FLSun/filament/Generic PLA @FLSun T1.json index e266687037..93b9ac08d4 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json +++ b/resources/profiles/FLSun/filament/Generic PLA @FLSun T1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun T1 PLA Generic", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA @FLSun T1", + "inherits": "Generic PLA @FLSun", + "renamed_from": "FLSun T1 PLA Generic", "from": "system", - "setting_id": "aUMHmlsPMYDicnPp", - "filament_id": "GFL99", + "setting_id": "5aJUZ6r6jtnvck19", + "filament_id": "OFDSrzZ8", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA.json b/resources/profiles/FLSun/filament/Generic PLA @FLSun.json similarity index 73% rename from resources/profiles/FLSun/filament/FLSun Generic PLA.json rename to resources/profiles/FLSun/filament/Generic PLA @FLSun.json index 85233e1285..a4f8655ff9 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA.json +++ b/resources/profiles/FLSun/filament/Generic PLA @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PLA", + "name": "Generic PLA @FLSun", "inherits": "fdm_filament_pla", + "renamed_from": "FLSun Generic PLA", "from": "system", - "setting_id": "ltWBfkc84nszWS19", - "filament_id": "GFL99", + "setting_id": "JcpwaJCVC9MoJrPB", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json b/resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun S1.json similarity index 79% rename from resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json rename to resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun S1.json index 4cb721859e..af00b2272d 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json +++ b/resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun S1.json @@ -1,11 +1,14 @@ { "type": "filament", - "name": "FLSun S1 PLA High Speed", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA High Speed @FLSun S1", + "inherits": "Generic PLA High Speed @System", + "renamed_from": "FLSun S1 PLA High Speed", "from": "system", - "setting_id": "v2clpNXXo8m6dV33", - "filament_id": "GFL99", + "setting_id": "ONz6C8a3AMGWxqdK", "instantiation": "true", + "filament_multitool_ramming_flow": [ + "10" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json b/resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun T1.json similarity index 79% rename from resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json rename to resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun T1.json index 95b2ba75a5..7468aadd31 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json +++ b/resources/profiles/FLSun/filament/Generic PLA High Speed @FLSun T1.json @@ -1,11 +1,14 @@ { "type": "filament", - "name": "FLSun T1 PLA High Speed", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA High Speed @FLSun T1", + "inherits": "Generic PLA High Speed @System", + "renamed_from": "FLSun T1 PLA High Speed", "from": "system", - "setting_id": "E4lpSLLlAxUW04ik", - "filament_id": "GFL99", + "setting_id": "en1l0jgFX97t6qUi", "instantiation": "true", + "filament_multitool_ramming_flow": [ + "10" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json b/resources/profiles/FLSun/filament/Generic PLA Silk @FLSun S1.json similarity index 81% rename from resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json rename to resources/profiles/FLSun/filament/Generic PLA Silk @FLSun S1.json index af4d4b9379..0ec0d28da4 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json +++ b/resources/profiles/FLSun/filament/Generic PLA Silk @FLSun S1.json @@ -1,11 +1,14 @@ { "type": "filament", - "name": "FLSun S1 PLA Silk", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA Silk @FLSun S1", + "inherits": "Generic PLA Silk @System", + "renamed_from": "FLSun S1 PLA Silk", "from": "system", - "setting_id": "164Bn4YchxJAaLsa", - "filament_id": "GFL99", + "setting_id": "NTJw0fbcn3JoOr0R", "instantiation": "true", + "filament_retraction_length": [ + "nil" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json b/resources/profiles/FLSun/filament/Generic PLA Silk @FLSun T1.json similarity index 81% rename from resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json rename to resources/profiles/FLSun/filament/Generic PLA Silk @FLSun T1.json index 04c82ce071..891697aa01 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json +++ b/resources/profiles/FLSun/filament/Generic PLA Silk @FLSun T1.json @@ -1,11 +1,14 @@ { "type": "filament", - "name": "FLSun T1 PLA Silk", - "inherits": "FLSun Generic PLA", + "name": "Generic PLA Silk @FLSun T1", + "inherits": "Generic PLA Silk @System", + "renamed_from": "FLSun T1 PLA Silk", "from": "system", - "setting_id": "gElUb4GnCoEfVlEd", - "filament_id": "GFL99", + "setting_id": "y2p7TTGI8XWIeiQY", "instantiation": "true", + "filament_retraction_length": [ + "nil" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json b/resources/profiles/FLSun/filament/Generic PLA-CF @FLSun.json similarity index 74% rename from resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json rename to resources/profiles/FLSun/filament/Generic PLA-CF @FLSun.json index 690c4427f9..87b301513e 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json +++ b/resources/profiles/FLSun/filament/Generic PLA-CF @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PLA-CF", + "name": "Generic PLA-CF @FLSun", "inherits": "fdm_filament_pla", + "renamed_from": "FLSun Generic PLA-CF", "from": "system", - "setting_id": "FEdplifUKOSUA4XX", - "filament_id": "GFL98", + "setting_id": "teBJEScAMecyn3JU", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/FLSun/filament/FLSun Generic PVA.json b/resources/profiles/FLSun/filament/Generic PVA @FLSun.json similarity index 75% rename from resources/profiles/FLSun/filament/FLSun Generic PVA.json rename to resources/profiles/FLSun/filament/Generic PVA @FLSun.json index 106aa001e0..9279ece682 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PVA.json +++ b/resources/profiles/FLSun/filament/Generic PVA @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic PVA", + "name": "Generic PVA @FLSun", "inherits": "fdm_filament_pva", + "renamed_from": "FLSun Generic PVA", "from": "system", - "setting_id": "IohayLPyRIsZJ0GY", - "filament_id": "GFS99", + "setting_id": "hyVWJBubfQl497iO", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/FLSun/filament/FLSun S1 TPU.json b/resources/profiles/FLSun/filament/Generic TPU @FLSun S1.json similarity index 88% rename from resources/profiles/FLSun/filament/FLSun S1 TPU.json rename to resources/profiles/FLSun/filament/Generic TPU @FLSun S1.json index 7a02ed84cf..76e27d9be3 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 TPU.json +++ b/resources/profiles/FLSun/filament/Generic TPU @FLSun S1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun S1 TPU", - "inherits": "FLSun Generic TPU", + "name": "Generic TPU @FLSun S1", + "inherits": "Generic TPU @FLSun", + "renamed_from": "FLSun S1 TPU", "from": "system", - "setting_id": "yzPvNqIo7mfWAwNS", - "filament_id": "GFU99", + "setting_id": "xDnQih17nXmGPoPc", "instantiation": "true", "fan_max_speed": [ "100" diff --git a/resources/profiles/FLSun/filament/FLSun T1 TPU.json b/resources/profiles/FLSun/filament/Generic TPU @FLSun T1.json similarity index 88% rename from resources/profiles/FLSun/filament/FLSun T1 TPU.json rename to resources/profiles/FLSun/filament/Generic TPU @FLSun T1.json index feb8326a22..25f60f10e1 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 TPU.json +++ b/resources/profiles/FLSun/filament/Generic TPU @FLSun T1.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "FLSun T1 TPU", - "inherits": "FLSun Generic TPU", + "name": "Generic TPU @FLSun T1", + "inherits": "Generic TPU @FLSun", + "renamed_from": "FLSun T1 TPU", "from": "system", - "setting_id": "34Ux18VB4d6R6G40", - "filament_id": "GFU99", + "setting_id": "TEakmydLXxrHti3G", "instantiation": "true", "fan_max_speed": [ "100" diff --git a/resources/profiles/FLSun/filament/FLSun Generic TPU.json b/resources/profiles/FLSun/filament/Generic TPU @FLSun.json similarity index 69% rename from resources/profiles/FLSun/filament/FLSun Generic TPU.json rename to resources/profiles/FLSun/filament/Generic TPU @FLSun.json index 60b05b8134..70d1b8c42a 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic TPU.json +++ b/resources/profiles/FLSun/filament/Generic TPU @FLSun.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FLSun Generic TPU", + "name": "Generic TPU @FLSun", "inherits": "fdm_filament_tpu", + "renamed_from": "FLSun Generic TPU", "from": "system", - "setting_id": "hewisceC8FmSwzF4", - "filament_id": "GFU99", + "setting_id": "gJ3UZr4n4K8DPdBz", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json index 66fb95ccc6..3642cce4fb 100644 --- a/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json @@ -180,7 +180,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M400 U1\n", "default_filament_profile": [ - "FLSun Generic PLA" + "Generic PLA @FLSun" ], "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM107\nG28 ;Home\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\nG92 E0\nG1 X-98 Y0 Z0.2 F4000 ; move to arc start\nG3 X0 Y-98 I98 Z0.2 E40 F400 ; lay arc stripe 90deg\nG0 Z1 \nG92 E0.0\n", "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\n;M84\nM18 S180 ;disable motors after 180s\n", diff --git a/resources/profiles/FLSun/machine/FLSun Q5.json b/resources/profiles/FLSun/machine/FLSun Q5.json index f7825cb4fa..001c4cb149 100644 --- a/resources/profiles/FLSun/machine/FLSun Q5.json +++ b/resources/profiles/FLSun/machine/FLSun Q5.json @@ -8,5 +8,5 @@ "bed_model": "flsun_q5_buildplate_model.stl", "bed_texture": "flsun_q5_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" + "default_materials": "Generic ABS @FLSun;Generic PLA @FLSun;Generic PLA-CF @FLSun;Generic PETG @FLSun;Generic TPU @FLSun;Generic ASA @FLSun;Generic PC @FLSun;Generic PVA @FLSun;Generic PA @FLSun;Generic PA-CF @FLSun" } diff --git a/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json index ef1dd22c15..e2444d404c 100644 --- a/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json @@ -180,7 +180,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M400 U1\n", "default_filament_profile": [ - "FLSun Generic PLA" + "Generic PLA @FLSun" ], "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; Set coordinate modes\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; Reset speed and extrusion rates\nM200 D0 ; disable volumetric E\nM220 S100 ; reset speed\n; Set initial warmup temps\nM117 Nozzle preheat\nM104 S100 ; preheat extruder to no ooze temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S40 P10 ; Bip\n; Home\nM117 Homing\nG28 ; home all with default mesh bed level\n; For ABL users put G29 for a leveling request\n; Final warmup routine\nM117 Final warmup\nM104 S[nozzle_temperature_initial_layer] ; set extruder final temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder final temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S440 P200; 1st beep for printer ready and allow some time to clean nozzle\nM300 S0 P250; wait between dual beep\nM300 S440 P200; 2nd beep for printer ready\nG4 S10; wait to clean the nozzle\nM300 S440 P200; 3rd beep for ready to start printing\n; Prime line routine\nM117 Printing prime line\n;M900 K0; Disable Linear Advance (Marlin) for prime line\nG92 E0.0; reset extrusion distance\nG1 X-54.672 Y-95.203 Z0.3 F4000; go outside print area\nG92 E0.0; reset extrusion distance\nG1 E2 F1000 ; de-retract and push ooze\nG3 X38.904 Y-102.668 I54.672 J95.105 E20.999\nG3 X54.671 Y-95.203 I-38.815 J102.373 E5.45800\nG92 E0.0\nG1 E-5 F3000 ; retract 5mm\nG1 X52.931 Y-96.185 F1000 ; wipe\nG1 X50.985 Y-97.231 F1000 ; wipe\nG1 X49.018 Y-98.238 F1000 ; wipe\nG1 X0 Y-109.798 F1000\nG1 E4.8 F1500; de-retract\nG92 E0.0 ; reset extrusion distance\n; Final print adjustments\nM117 Preparing to print\n;M82 ; extruder absolute mode\nM221 S{if layer_height<0.075}100{else}95{endif}\nM300 S40 P10 ; chirp\nM117 Print [input_filename_base]; Display: Printing started...", "machine_end_gcode": "; printing object ENDGCODE\nG92 E0.0 ; prepare to retract\nG1 E-6 F3000; retract to avoid stringing\n; Anti-stringing end wiggle\n{if layer_z < max_print_height}G1 Z{min(layer_z+100, max_print_height)}{endif} F4000 ; Move print head up\nG1 X0 Y120 F3000 ; present print\n; Reset print setting overrides\nG92 E0\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extruder factor to 100%\n;M900 K0 ; reset linear acceleration(Marlin)\n; Shut down printer\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM18 S180 ;disable motors after 180s\nM300 S40 P10 ; Bip\nM117 Print finish.", diff --git a/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json b/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json index 3b3cf86676..f360405471 100644 --- a/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json +++ b/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json @@ -8,5 +8,5 @@ "bed_model": "flsun_qqspro_buildplate_model.stl", "bed_texture": "flsun_qqspro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" + "default_materials": "Generic ABS @FLSun;Generic PLA @FLSun;Generic PLA-CF @FLSun;Generic PETG @FLSun;Generic TPU @FLSun;Generic ASA @FLSun;Generic PC @FLSun;Generic PVA @FLSun;Generic PA @FLSun;Generic PA-CF @FLSun" } diff --git a/resources/profiles/FLSun/machine/FLSun S1.json b/resources/profiles/FLSun/machine/FLSun S1.json index 5b730f3c3b..eac676cd09 100644 --- a/resources/profiles/FLSun/machine/FLSun S1.json +++ b/resources/profiles/FLSun/machine/FLSun S1.json @@ -8,5 +8,5 @@ "bed_model": "flsun_s1_buildplate_model.stl", "bed_texture": "FLSun_S1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun S1 PLA High Speed;FLSun S1 PLA Silk;FLSun S1 PLA Generic;FLSun S1 PETG;FLSun S1 ASA;FLSun S1 TPU;FLSun S1 ABS" + "default_materials": "Generic PLA High Speed @FLSun S1;Generic PLA Silk @FLSun S1;Generic PLA @FLSun S1;Generic PETG @FLSun S1;Generic ASA @FLSun S1;Generic TPU @FLSun S1;Generic ABS @FLSun S1" } diff --git a/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json index b6fac6caa7..78731a1481 100644 --- a/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json @@ -13,7 +13,7 @@ ], "nozzle_type": "brass", "default_filament_profile": [ - "FLSun Generic PLA" + "Generic PLA @FLSun" ], "bed_exclude_area": [ "0x0" diff --git a/resources/profiles/FLSun/machine/FLSun SR.json b/resources/profiles/FLSun/machine/FLSun SR.json index 54e40302e2..6a26773ece 100644 --- a/resources/profiles/FLSun/machine/FLSun SR.json +++ b/resources/profiles/FLSun/machine/FLSun SR.json @@ -8,5 +8,5 @@ "bed_model": "flsun_SR_buildplate_model.stl", "bed_texture": "flsun_SR_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" + "default_materials": "Generic ABS @FLSun;Generic PLA @FLSun;Generic PLA-CF @FLSun;Generic PETG @FLSun;Generic TPU @FLSun;Generic ASA @FLSun;Generic PC @FLSun;Generic PVA @FLSun;Generic PA @FLSun;Generic PA-CF @FLSun" } diff --git a/resources/profiles/FLSun/machine/FLSun T1.json b/resources/profiles/FLSun/machine/FLSun T1.json index 8fda638772..25a788a60e 100644 --- a/resources/profiles/FLSun/machine/FLSun T1.json +++ b/resources/profiles/FLSun/machine/FLSun T1.json @@ -8,5 +8,5 @@ "bed_model": "flsun_T1_buildplate_model.stl", "bed_texture": "FLSun_T1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun T1 PLA High Speed;FLSun T1 PLA Silk;FLSun T1 PLA Generic;FLSun T1 PETG;FLSun T1 ASA;FLSun T1 TPU;FLSun T1 ABS" + "default_materials": "Generic PLA High Speed @FLSun T1;Generic PLA Silk @FLSun T1;Generic PLA @FLSun T1;Generic PETG @FLSun T1;Generic ASA @FLSun T1;Generic TPU @FLSun T1;Generic ABS @FLSun T1" } diff --git a/resources/profiles/FLSun/machine/FLSun V400.json b/resources/profiles/FLSun/machine/FLSun V400.json index 605e51e229..33fc9981ed 100644 --- a/resources/profiles/FLSun/machine/FLSun V400.json +++ b/resources/profiles/FLSun/machine/FLSun V400.json @@ -8,5 +8,5 @@ "bed_model": "flsun_v400_buildplate_model.stl", "bed_texture": "flsun_v400_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" + "default_materials": "Generic ABS @FLSun;Generic PLA @FLSun;Generic PLA-CF @FLSun;Generic PETG @FLSun;Generic TPU @FLSun;Generic ASA @FLSun;Generic PC @FLSun;Generic PVA @FLSun;Generic PA @FLSun;Generic PA-CF @FLSun" } diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 661d171771..f3923c435a 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ @@ -550,20 +550,20 @@ "sub_path": "filament/Flashforge/Flashforge ABS @FF AD3.json" }, { - "name": "Flashforge Generic ABS", - "sub_path": "filament/Flashforge Generic ABS.json" + "name": "Generic ABS @Flashforge", + "sub_path": "filament/Generic ABS @Flashforge.json" }, { - "name": "Flashforge Generic ASA", - "sub_path": "filament/Flashforge Generic ASA.json" + "name": "Generic ASA @Flashforge", + "sub_path": "filament/Generic ASA @Flashforge.json" }, { - "name": "Flashforge Generic PETG", - "sub_path": "filament/Flashforge Generic PETG.json" + "name": "Generic PETG @Flashforge", + "sub_path": "filament/Generic PETG @Flashforge.json" }, { - "name": "Flashforge Generic PETG-CF10", - "sub_path": "filament/Flashforge Generic PETG-CF10.json" + "name": "Generic PETG-CF10 @Flashforge", + "sub_path": "filament/Generic PETG-CF10 @Flashforge.json" }, { "name": "Flashforge PETG", @@ -578,20 +578,20 @@ "sub_path": "filament/SUNLU/SUNLU PETG @base.json" }, { - "name": "Flashforge Generic HS PLA", - "sub_path": "filament/Flashforge Generic HS PLA.json" + "name": "Generic HS PLA @Flashforge", + "sub_path": "filament/Generic HS PLA @Flashforge.json" }, { - "name": "Flashforge Generic PLA", - "sub_path": "filament/Flashforge Generic PLA.json" + "name": "Generic PLA @Flashforge", + "sub_path": "filament/Generic PLA @Flashforge.json" }, { - "name": "Flashforge Generic PLA-CF10", - "sub_path": "filament/Flashforge Generic PLA-CF10.json" + "name": "Generic PLA-CF10 @Flashforge", + "sub_path": "filament/Generic PLA-CF10 @Flashforge.json" }, { - "name": "Flashforge Generic PLA-Silk", - "sub_path": "filament/Flashforge Generic PLA-Silk.json" + "name": "Generic PLA-Silk @Flashforge", + "sub_path": "filament/Generic PLA-Silk @Flashforge.json" }, { "name": "Flashforge PLA", @@ -622,8 +622,8 @@ "sub_path": "filament/SUNLU/SUNLU Wood PLA @base.json" }, { - "name": "Flashforge Generic TPU", - "sub_path": "filament/Flashforge Generic TPU.json" + "name": "Generic TPU @Flashforge", + "sub_path": "filament/Generic TPU @Flashforge.json" }, { "name": "Flashforge ABS @FF AD5M 0.25 Nozzle", @@ -690,28 +690,28 @@ "sub_path": "filament/Flashforge ASA-CF @FF G4P.json" }, { - "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json" + "name": "Generic ABS @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic ABS @FF AD5M 0.25 Nozzle.json" }, { - "name": "Flashforge Generic ABS @G3U", - "sub_path": "filament/Flashforge Generic ABS @G3U.json" + "name": "Generic ABS @Flashforge G3U", + "sub_path": "filament/Generic ABS @Flashforge G3U.json" }, { - "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" + "name": "Generic ABS @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic ABS @Flashforge G3U 0.6 Nozzle.json" }, { - "name": "Flashforge Generic ASA @G3U", - "sub_path": "filament/Flashforge Generic ASA @G3U.json" + "name": "Generic ASA @Flashforge G3U", + "sub_path": "filament/Generic ASA @Flashforge G3U.json" }, { - "name": "Flashforge Generic HIPS", - "sub_path": "filament/Flashforge Generic HIPS.json" + "name": "Generic HIPS @Flashforge", + "sub_path": "filament/Generic HIPS @Flashforge.json" }, { - "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" + "name": "Generic HIPS @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic HIPS @Flashforge G3U 0.6 Nozzle.json" }, { "name": "Generic ABS @Flashforge AD4", @@ -726,44 +726,44 @@ "sub_path": "filament/Flashforge ASA Basic.json" }, { - "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json" + "name": "Generic ASA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic ASA @FF AD5M 0.25 Nozzle.json" }, { - "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" + "name": "Generic ASA @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json" }, { "name": "Generic ASA @Flashforge AD4", "sub_path": "filament/Generic ASA @Flashforge AD4.json" }, { - "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json" + "name": "Generic PETG @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PETG @FF AD5M 0.25 Nozzle.json" }, { - "name": "Flashforge Generic PETG @G3U", - "sub_path": "filament/Flashforge Generic PETG @G3U.json" + "name": "Generic PETG @Flashforge G3U", + "sub_path": "filament/Generic PETG @Flashforge G3U.json" }, { - "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" + "name": "Generic PETG @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json" }, { - "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" + "name": "Generic PETG @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json" }, { - "name": "Flashforge Generic PETG-CF @G3U", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" + "name": "Generic PETG-CF @Flashforge G3U", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U.json" }, { - "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" + "name": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json" }, { - "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" + "name": "Generic PETG-CF @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json" }, { "name": "Flashforge HS PETG", @@ -854,40 +854,40 @@ "sub_path": "filament/Flashforge PETG-CF @FF G4P.json" }, { - "name": "FusRock Generic NexPA-CF25", - "sub_path": "filament/FusRock/FusRock Generic NexPA-CF25.json" + "name": "FusRock NexPA-CF25", + "sub_path": "filament/FusRock/FusRock NexPA-CF25.json" }, { - "name": "FusRock Generic PAHT-CF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF.json" + "name": "FusRock PAHT-CF", + "sub_path": "filament/FusRock/FusRock PAHT-CF.json" }, { - "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" + "name": "FusRock PAHT-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock PAHT-CF @G3U 0.6 Nozzle.json" }, { - "name": "FusRock Generic PET-CF", - "sub_path": "filament/FusRock/FusRock Generic PET-CF.json" + "name": "FusRock PET-CF", + "sub_path": "filament/FusRock/FusRock PET-CF.json" }, { - "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" + "name": "FusRock PET-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock PET-CF @G3U 0.6 Nozzle.json" }, { - "name": "FusRock Generic S-Multi", - "sub_path": "filament/FusRock/FusRock Generic S-Multi.json" + "name": "FusRock S-Multi", + "sub_path": "filament/FusRock/FusRock S-Multi.json" }, { - "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" + "name": "FusRock S-Multi @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock S-Multi @G3U 0.6 Nozzle.json" }, { - "name": "FusRock Generic S-PAHT", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT.json" + "name": "FusRock S-PAHT", + "sub_path": "filament/FusRock/FusRock S-PAHT.json" }, { - "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", - "sub_path": "filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" + "name": "FusRock S-PAHT @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock/FusRock S-PAHT @G3U 0.6 Nozzle.json" }, { "name": "Generic PETG @Flashforge AD4", @@ -930,8 +930,8 @@ "sub_path": "filament/SUNLU/SUNLU PETG @FF AD5M 0.8 nozzle.json" }, { - "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json" + "name": "Generic HS PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge HIPS @FF G4", @@ -1038,36 +1038,36 @@ "sub_path": "filament/Generic PLA High Speed @Flashforge AD4.json" }, { - "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json" + "name": "Generic PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PLA @FF AD5M 0.25 Nozzle.json" }, { - "name": "Flashforge Generic PLA @G3U", - "sub_path": "filament/Flashforge Generic PLA @G3U.json" + "name": "Generic PLA @Flashforge G3U", + "sub_path": "filament/Generic PLA @Flashforge G3U.json" }, { - "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" + "name": "Generic PLA @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json" }, { - "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" + "name": "Generic PLA @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json" }, { - "name": "Flashforge Generic PLA-CF @G3U", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" + "name": "Generic PLA-CF @Flashforge G3U", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U.json" }, { - "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" + "name": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json" }, { - "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" + "name": "Generic PLA-CF @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json" }, { - "name": "Flashforge Generic PVA", - "sub_path": "filament/Flashforge Generic PVA.json" + "name": "Generic PVA @Flashforge", + "sub_path": "filament/Generic PVA @Flashforge.json" }, { "name": "Flashforge HS PLA", @@ -1222,12 +1222,12 @@ "sub_path": "filament/Generic PLA @Flashforge AD4.json" }, { - "name": "Polymaker Generic CoPA", - "sub_path": "filament/Polymaker/Polymaker Generic CoPA.json" + "name": "Polymaker CoPA", + "sub_path": "filament/Polymaker/Polymaker CoPA.json" }, { - "name": "Polymaker Generic S1", - "sub_path": "filament/Polymaker/Polymaker Generic S1.json" + "name": "Polymaker S1", + "sub_path": "filament/Polymaker/Polymaker S1.json" }, { "name": "Flashforge PA-CF @FF G4", @@ -1237,14 +1237,6 @@ "name": "Flashforge PA-CF @FF G4P", "sub_path": "filament/Flashforge PA-CF @FF G4P.json" }, - { - "name": "Flashforge PAHT-CF @FF G4", - "sub_path": "filament/Flashforge PAHT-CF @FF G4.json" - }, - { - "name": "Flashforge PAHT-CF @FF G4P", - "sub_path": "filament/Flashforge PAHT-CF @FF G4P.json" - }, { "name": "Flashforge PLA-CF", "sub_path": "filament/Flashforge PLA-CF.json" @@ -1290,8 +1282,8 @@ "sub_path": "filament/Generic PLA-CF10 @Flashforge AD4.json" }, { - "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" + "name": "Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" }, { "name": "Flashforge PLA Silk", @@ -1866,8 +1858,8 @@ "sub_path": "filament/Flashforge PPS-CF.json" }, { - "name": "FusRock Generic PAHT-GF", - "sub_path": "filament/FusRock/FusRock Generic PAHT-GF.json" + "name": "FusRock PAHT-GF", + "sub_path": "filament/FusRock/FusRock PAHT-GF.json" }, { "name": "FusRock PAHT-CF @FF G4 0.6 nozzle", @@ -1894,40 +1886,40 @@ "sub_path": "filament/Flashforge PET-CF.json" }, { - "name": "FusRock Generic PET-GF", - "sub_path": "filament/FusRock/FusRock Generic PET-GF.json" + "name": "FusRock PET-GF", + "sub_path": "filament/FusRock/FusRock PET-GF.json" }, { - "name": "FlashForge PPS @FF G4 0.6 HF nozzle", - "sub_path": "filament/FlashForge PPS @FF G4 0.6 HF nozzle.json" + "name": "Flashforge PPS @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge PPS @FF G4 0.6 HF nozzle.json" }, { - "name": "FlashForge PPS @FF G4 0.6 nozzle", - "sub_path": "filament/FlashForge PPS @FF G4 0.6 nozzle.json" + "name": "Flashforge PPS @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PPS @FF G4 0.6 nozzle.json" }, { - "name": "FlashForge PPS @FF G4 0.8 HF nozzle", - "sub_path": "filament/FlashForge PPS @FF G4 0.8 HF nozzle.json" + "name": "Flashforge PPS @FF G4 0.8 HF nozzle", + "sub_path": "filament/Flashforge PPS @FF G4 0.8 HF nozzle.json" }, { - "name": "FlashForge PPS @FF G4P 0.6 HF nozzle", - "sub_path": "filament/FlashForge PPS @FF G4P 0.6 HF nozzle.json" + "name": "Flashforge PPS @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge PPS @FF G4P 0.6 HF nozzle.json" }, { - "name": "FlashForge PPS @FF G4P 0.6 nozzle", - "sub_path": "filament/FlashForge PPS @FF G4P 0.6 nozzle.json" + "name": "Flashforge PPS @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PPS @FF G4P 0.6 nozzle.json" }, { - "name": "FlashForge PPS @FF G4P 0.8 HF nozzle", - "sub_path": "filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json" + "name": "Flashforge PPS @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge PPS @FF G4P 0.8 HF nozzle.json" }, { - "name": "FlashForge PPS-CF @FF G4 0.6 nozzle", - "sub_path": "filament/FlashForge PPS-CF @FF G4 0.6 nozzle.json" + "name": "Flashforge PPS-CF @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PPS-CF @FF G4 0.6 nozzle.json" }, { - "name": "FlashForge PPS-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json" + "name": "Flashforge PPS-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PPS-CF @FF G4P 0.6 nozzle.json" }, { "name": "FusRock PET @FF G4P 0.8 HF nozzle", @@ -1966,28 +1958,28 @@ "sub_path": "filament/Generic PET @FF G4P 0.8 HF nozzle.json" }, { - "name": "FlashForge PC @FF G4 0.6 HF nozzle", - "sub_path": "filament/FlashForge PC @FF G4 0.6 HF nozzle.json" + "name": "Flashforge PC @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge PC @FF G4 0.6 HF nozzle.json" }, { - "name": "FlashForge PC @FF G4 0.6 nozzle", - "sub_path": "filament/FlashForge PC @FF G4 0.6 nozzle.json" + "name": "Flashforge PC @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PC @FF G4 0.6 nozzle.json" }, { - "name": "FlashForge PC @FF G4 0.8 HF nozzle", - "sub_path": "filament/FlashForge PC @FF G4 0.8 HF nozzle.json" + "name": "Flashforge PC @FF G4 0.8 HF nozzle", + "sub_path": "filament/Flashforge PC @FF G4 0.8 HF nozzle.json" }, { - "name": "FlashForge PC @FF G4P 0.6 HF nozzle", - "sub_path": "filament/FlashForge PC @FF G4P 0.6 HF nozzle.json" + "name": "Flashforge PC @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge PC @FF G4P 0.6 HF nozzle.json" }, { - "name": "FlashForge PC @FF G4P 0.6 nozzle", - "sub_path": "filament/FlashForge PC @FF G4P 0.6 nozzle.json" + "name": "Flashforge PC @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PC @FF G4P 0.6 nozzle.json" }, { - "name": "FlashForge PC @FF G4P 0.8 HF nozzle", - "sub_path": "filament/FlashForge PC @FF G4P 0.8 HF nozzle.json" + "name": "Flashforge PC @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge PC @FF G4P 0.8 HF nozzle.json" }, { "name": "FusRock PAHT @FF G4 0.6 HF nozzle", @@ -2117,14 +2109,6 @@ "name": "Flashforge PLA Basic @FF G4P 0.8 HF nozzle", "sub_path": "filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json" }, - { - "name": "Flashforge PLA Buint Ti @FF G4 0.8 nozzle", - "sub_path": "filament/Flashforge PLA Buint Ti @FF G4 0.8 nozzle.json" - }, - { - "name": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle", - "sub_path": "filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json" - }, { "name": "Flashforge PLA Color Change @FF G4 0.6 HF nozzle", "sub_path": "filament/Flashforge PLA Color Change @FF G4 0.6 HF nozzle.json" @@ -2569,14 +2553,6 @@ "name": "Flashforge PA-CF @FF C5P", "sub_path": "filament/Flashforge PA-CF @FF C5P.json" }, - { - "name": "Flashforge PAHT-CF @FF C5", - "sub_path": "filament/Flashforge PAHT-CF @FF C5.json" - }, - { - "name": "Flashforge PAHT-CF @FF C5P", - "sub_path": "filament/Flashforge PAHT-CF @FF C5P.json" - }, { "name": "Flashforge PET-CF @FF C5", "sub_path": "filament/Flashforge PET-CF @FF C5.json" @@ -2610,28 +2586,28 @@ "sub_path": "filament/Flashforge PETG-CF @FF C5P.json" }, { - "name": "Flashforge PLA Matte @FF C5", - "sub_path": "filament/Flashforge PLA Matte @FF C5.json" + "name": "Flashforge PLA Matte @FF C5", + "sub_path": "filament/Flashforge PLA Matte @FF C5.json" }, { - "name": "Flashforge PLA Matte @FF C5P", - "sub_path": "filament/Flashforge PLA Matte @FF C5P.json" + "name": "Flashforge PLA Matte @FF C5P", + "sub_path": "filament/Flashforge PLA Matte @FF C5P.json" }, { - "name": "Flashforge PLA Metal @FF C5", - "sub_path": "filament/Flashforge PLA Metal @FF C5.json" + "name": "Flashforge PLA Metal @FF C5", + "sub_path": "filament/Flashforge PLA Metal @FF C5.json" }, { - "name": "Flashforge PLA Metal @FF C5P", - "sub_path": "filament/Flashforge PLA Metal @FF C5P.json" + "name": "Flashforge PLA Metal @FF C5P", + "sub_path": "filament/Flashforge PLA Metal @FF C5P.json" }, { - "name": "Flashforge PLA Pro @FF C5", - "sub_path": "filament/Flashforge PLA Pro @FF C5.json" + "name": "Flashforge PLA Pro @FF C5", + "sub_path": "filament/Flashforge PLA Pro @FF C5.json" }, { - "name": "Flashforge PLA Pro @FF C5P", - "sub_path": "filament/Flashforge PLA Pro @FF C5P.json" + "name": "Flashforge PLA Pro @FF C5P", + "sub_path": "filament/Flashforge PLA Pro @FF C5P.json" }, { "name": "Flashforge PLA Basic @FF C5", diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json index 97970235e4..faa456baad 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json @@ -1,10 +1,13 @@ { "type": "filament", "name": "Flashforge ABS @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", - "filament_id": "GFB99", + "filament_id": "OF5SJ3jz", "instantiation": "false", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", "Flashforge Adventurer 5M Pro 0.25 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json index dc0989bbc4..93b640c5f2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "SuEfcE6AYK8N1FI4", + "filament_id": "OFibWuBd", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge ABS Basic @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json index 0deb98db56..6245bcf02c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "gmkc6fRLMI73Iut8", + "filament_id": "OFibWuBd", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json index 7f8ec43e72..7ba9ffc527 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "fgEYZ1Mgyp1AvtwU", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json index 0f95b37aad..d797114137 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "cIxbQMVdG5K85rJr", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json index 4b533b00a7..82e08e3f49 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF AD5X", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "9GXBeuCUrScJfmJB", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5.json index d53b5cc2c1..5e5ce18eea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "ds0GgE1jssl4IbF3", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5P.json index eb4ee53f53..9ea370b14b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "UTWbwTYuXYbBx3uw", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.25 nozzle.json index fe13cbb5cb..6be9c9ac5a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "CuckX5MsN69806ow", + "filament_id": "OFibWuBd", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "50" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 HF nozzle.json index 4a3bd054b2..c38639dd89 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "NttDJCrfB01uwMDl", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 nozzle.json index 594f291957..9709d11e22 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "hJd6dG6OdEffEFC7", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.8 HF nozzle.json index 34d1f4e94c..2f3d072baf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "8yFCuCnEuI3dUvQy", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 HF.json index 60847876a0..a6badb7396 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "np4fP5kghRlczOTT", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4.json index f267e9bc74..c70351a9b1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "8o2maTFOXq0XR6Dm", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json index 1ec700928b..ebacfbe35c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "MBo02hFXn0ebDRdb", + "filament_id": "OFibWuBd", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "50" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json index baa7e84ede..d6be224ddc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "vCsjC0UnKenzIR0O", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json index d4b2a75adb..9ff2f3f54a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "xhxVdlmh5r7meoHo", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json index ce8cb40ddc..d2c5c73541 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "6dlQN4Xhd6kGZ0Qn", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json index 9518e3fb1c..c4b58df04c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "r8WVFPozL8f5oLVJ", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json index 80ad9a2da8..ebf003f20d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic @FF G4P", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "xw0pZNmhw1K4tPQ1", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic.json index 3e93a31243..8be3cb0913 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS Basic", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "m6QLC2UaS3fW298i", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge ABS Basic" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4 0.6 nozzle.json index 3b7c0a2db6..398f80f8a5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS-CF @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Nx3Px0Zu356IKShT", + "filament_id": "OFYTIMbj", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4.json index a17e48af0d..3fd0dc97ea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS-CF @FF G4", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "d4EGsmMeEDCOUBF2", + "filament_id": "OFYTIMbj", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "complete_print_exhaust_fan_speed": [ "50" @@ -38,6 +42,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS-CF\n" ], + "filament_type": [ + "ABS-CF" + ], "compatible_printers": [ "Flashforge Guider4 0.4 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json index ed4c177d18..043e0ea208 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS-CF @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "9ziPFKsjESbw1pXL", + "filament_id": "OFYTIMbj", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json index dd952e95a1..77148bf480 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-CF @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ABS-CF @FF G4P", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "NzJJs6yrSik5xuyX", + "filament_id": "OFYTIMbj", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "complete_print_exhaust_fan_speed": [ "50" @@ -38,6 +42,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material: ABS-CF\n" ], + "filament_type": [ + "ABS-CF" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.4 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5.json index 3b1b422c33..8cb591fa47 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "UinlbuXNbad2kN0s", + "filament_id": "OFojbdhR", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5P.json index 72364ebe47..3fefbd7a96 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ABS-GF @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "ycgiXY41kqNgslE3", + "filament_id": "OFojbdhR", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json index 0f80d06af9..f7d1332ec2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json @@ -1,9 +1,12 @@ { "type": "filament", "name": "Flashforge ASA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ASA", + "inherits": "Generic ASA @Flashforge", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFJS560n", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "false", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json index fcdb3faedd..0f99d476fc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5M 0.25 nozzle.json @@ -4,6 +4,10 @@ "inherits": "Flashforge ASA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "kjS4k8nrIdNNNoWw", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge ASA Basic @FF AD5M 0.25 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json index 3294344bd4..9a3aac8573 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json @@ -4,6 +4,10 @@ "inherits": "Flashforge ASA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "Y647IFVkk5JIXzte", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json index 9904aea39c..7a199389af 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "vaOyXUcrJ97KE7ZW", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" @@ -26,6 +30,9 @@ "filament_settings_id": [ "Flashforge ASA Basic @FF AD5X 0.6 nozzle" ], + "filament_type": [ + "ASA" + ], "compatible_printers": [ "Flashforge AD5X 0.6 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json index 4353992934..3c2e7173bf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "iLWq5pJ3ox9EAM1Z", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" @@ -26,6 +30,9 @@ "filament_settings_id": [ "Flashforge ASA Basic @FF AD5X 0.8 nozzle" ], + "filament_type": [ + "ASA" + ], "compatible_printers": [ "Flashforge AD5X 0.8 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json index cb4a543dbd..68f66a1f6b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF AD5X", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "i7PUPYxy0Z9weyyA", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" @@ -26,6 +30,9 @@ "filament_settings_id": [ "Flashforge ASA Basic @FF AD5X" ], + "filament_type": [ + "ASA" + ], "compatible_printers": [ "Flashforge AD5X 0.4 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5.json index 485f06e046..5aec1c1d8b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "UUSDyOetXSOuBIUd", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5P.json index 4af0b8b47c..18ae2c78f1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "2r0kwhklE24Hp94O", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.25 nozzle.json index dae515a9aa..051b069550 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "XWta5jJFsCxBdEPd", + "filament_id": "OFFFg2Pf", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "50" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 HF nozzle.json index 4c35d0a62b..66ae12c06c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "w8O6oenp0NymzCqf", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 nozzle.json index e4435448ae..166d3a01ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "thhmWRzNYLYJOeR2", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.8 HF nozzle.json index 86d4e12b4c..54e47a5e64 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "g5jiz6Q6or23BIo7", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 HF.json index 890dd75f0f..01db10d49d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "7xmWlHHNMvXBKdYS", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4.json index 4826e42eba..9cdc87b1e5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "r0B8KfZ1mNWMvGqE", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json index 76cd89a82a..f989622957 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge ABS @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "quOwRRLcNfOy0sYf", + "filament_id": "OFFFg2Pf", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "50" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json index 324c9eec04..d8801abca8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "CBLZqLhkwf5XKO12", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json index 461aa7bd0a..1cc08eabb3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Df3anJxiRXLVO9hw", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json index 0c0cc1aab1..30787c9de1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Nu4WvBWuEhazZfh5", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json index 9a59d625d2..5b73e31a49 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "hF0h4ye3hMDtEba1", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json index 3a10f337b9..05223314f5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic @FF G4P", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "3isZCWr4CBjFtGDX", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic.json index 7ccef601f3..2500eacd3f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge ASA Basic", - "inherits": "Flashforge Generic ASA", + "inherits": "Generic ASA @Flashforge", "from": "system", "setting_id": "SU6r879TbQMUFCij", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge ASA Basic" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5.json index 9956e193ee..5cd421f15c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "TqU1elqwuVr9EhTA", + "filament_id": "OFq0TY7C", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5P.json index c2a78c9e11..c61eb8159b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "nMczAtoc5W0J2WkS", + "filament_id": "OFq0TY7C", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4.json index 846cf4c76a..fed88f120e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge ASA-CF @FF G4", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "ap7X4nWKfFR53NT0", + "filament_id": "OFq0TY7C", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -36,7 +40,7 @@ "; filament start gcode\n;right_extruder_material: ASA-CF\n" ], "filament_type": [ - "ASA" + "ASA-CF" ], "compatible_printers": [ "Flashforge Guider4 0.4 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4P.json index d0ad27e1cd..ddd4c96ba2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-CF @FF G4P.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge ASA-CF @FF G4P", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "kZXg6odPm5iW79Qn", + "filament_id": "OFq0TY7C", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -36,7 +40,7 @@ "; filament start gcode\n;right_extruder_material: ASA-CF\n" ], "filament_type": [ - "ASA" + "ASA-CF" ], "compatible_printers": [ "Flashforge Guider4 Pro 0.4 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-CF.json b/resources/profiles/Flashforge/filament/Flashforge ASA-CF.json index 02db6bfea9..9a37c4c7d1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge ASA-CF", - "inherits": "FusRock Generic PAHT-CF", + "inherits": "FusRock PAHT-CF", "from": "system", "setting_id": "CI5dvVrCNk2XTU82", + "filament_id": "OFq0TY7C", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_flow_ratio": [ "0.99" ], @@ -15,7 +19,7 @@ "Flashforge ASA-CF" ], "filament_type": [ - "ASA" + "ASA-CF" ], "hot_plate_temp": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5.json index 3a328388df..de98bbdf41 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "941E5MaAyFY3iv4V", + "filament_id": "OFrZDhVt", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5P.json index 46857c2b13..0bff2a9e2c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge ASA-GF @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic ABS @System", "from": "system", "setting_id": "RdmsxyUGUX8Ot4oj", + "filament_id": "OFrZDhVt", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @Flashforge Artemis.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @Flashforge Artemis.json index 20a08fe28e..4c4f2b43cc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @Flashforge Artemis.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @Flashforge Artemis.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "YflkaS7NfBE5XiSH", - "filament_id": "FFF03", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5.json index b9a10c1f18..608d143031 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic HIPS @System", "from": "system", "setting_id": "ckwc7U0Q2eKHmCxY", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5P.json index 8a61df2fe2..14a3d39616 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic HIPS @System", "from": "system", "setting_id": "AEQYrT7e4Q5J2G6C", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 Pro 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 HF nozzle.json index 81c501eee9..bb2f4387b9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "jUNUZhE0BJyB64fC", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 0.6 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 nozzle.json index 34dacd8f8d..597e24ade7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "0qMEqo9YMDLSVafs", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 0.6 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.8 HF nozzle.json index 756f4ddbf2..5b17792267 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "ek749gIdUAPq6WxT", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 0.8 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 HF.json index 9ca5d033bd..b79fa3d0d2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "tEohTtyHofD6l6o3", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "complete_print_exhaust_fan_speed": [ "50" diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4.json index 2e977fd084..96b5849040 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "oLeLrIjFJzoZha3E", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 HF nozzle.json index 6ae4e562a2..cb385fd395 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "HXGUlYY4X5IHhL3R", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.6 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json index 9354f7ede7..a32508d8b0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "g22Cv3zy3h5BhJYK", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.6 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json index 980ab69f11..b2958e0032 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "aDzBXuvN7IuSP5sa", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +66,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:HIPS" ], + "filament_type": [ + "HIPS" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.8 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json index 6f7493a72b..bbbaebe8b8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "CIj24REX7BA8zPHQ", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "complete_print_exhaust_fan_speed": [ "50" diff --git a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json index 7d0d9befb3..bc52c94e5b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HIPS @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HIPS @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "yAGyGjF6uDrjfjLn", + "filament_id": "OFvaLVML", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json index fbb47b2d7f..b9eb0a335b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "1NFhtEvvvgZiHcto", + "filament_id": "OFDxxTpW", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge HS PETG @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json index fc0e4c7cee..fb96e1e846 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "eNOkWn5PT8rDpA0g", + "filament_id": "OFDxxTpW", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json index a6a28ae753..c1dd59623c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "vOqAGzaYLz0XdRvC", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json index 28c7208fad..21198590ac 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "KSuxZ3fpQz0khDSz", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json index 3b495aebe8..23703621f3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF AD5X", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "o4B1kAToVny7jw0M", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5.json index 5c0421a23e..a48606e3c0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG HF @System", "from": "system", "setting_id": "kpRved5M3NktqIYn", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5P.json index ca2dcd370c..9ceca02a50 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG HF @System", "from": "system", "setting_id": "ypxgjHl9uIMyZIce", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.25 nozzle.json index b8f6997d97..5b64fa0f61 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "uXGuyvVxfdQW22vu", + "filament_id": "OFDxxTpW", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json index 785fd2495b..28565a5c3b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "q9UbakUmZPzG3xU0", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 nozzle.json index 57c2e5ca72..592b3fe094 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "IL18Lu0qHx1RVqKD", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json index f8cfba7acd..e4b953f089 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "2FQib7fZjcwfCnm2", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json index 16e88eeb42..955235b442 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "CtwOm90WWD4S7U6j", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4.json index bc806c44d8..5a47b94941 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "kvULpm0WhKiSPj8V", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json index b14a0b44ba..9875a638ff 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "bFVYSPkynBBapFjq", + "filament_id": "OFDxxTpW", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json index dfb79c840d..26df92ae7b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "CUU7knzm4cbe1giE", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json index 6c36ff1fbb..b936141d13 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "gcYvL572cumWZdnl", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json index a58ddca149..f53c9c41e3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "cx99AH0C575XxAj9", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json index 35a01b21ce..82a8dc096a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "RrrKoR7MVD8IFQlq", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json index a30f562b42..ff09b6e445 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG @FF G4P", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "7VEPGuR16wNukAX2", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG.json index 38054ea5ae..3ee8ed9e42 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PETG", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "H9uwlPw6m6Nf7qH5", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge HS PETG" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json index 0ee65ec44f..d511cdafe6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json @@ -1,10 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF AD5M 0.25 nozzle", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "OmDped3weZ4uHAtY", - "filament_id": "GFL99", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json index 266200739a..c7060c9f4e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "bfPaqPGaR5zpTsLk", + "filament_id": "OFIK2H3G", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json index 7169a76fdf..082b03f19b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "oD592bif4ra0ADco", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json index 94da672d0f..6571d871b4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "ldhMY6F7v6nK8wwf", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json index edf25222de..a5b788402d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "5vzOmbjHbkJXrgYM", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5.json index 310fc73a32..85c0b17327 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "xSJk7LFpYKmckPQh", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5P.json index 87c4ffd656..667e4045b9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "xdFZUsj1cNLXdvT6", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.25 nozzle.json index ff783fbf10..15551e3faa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "JCQtuv8Abfz4jVRV", + "filament_id": "OFIK2H3G", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json index 7f4547dc19..ba4f6bc6d9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "hzxRPyH1fqarsMuN", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 nozzle.json index ba5f92ca7c..4e69e17253 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "oJsLlIIpxwGSoJTv", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.8 HF nozzle.json index f0fcb415c6..ad8f07ef26 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "hJbNZ381ERkZ0KUB", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 HF.json index eb253a97db..f202e50f11 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "BqavrNpwhXDXcZ3r", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4.json index a1acf9af42..7472f78b02 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "cgf4Qk4iHZh7zHN5", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json index b399b0cf77..3d97511a29 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "jFUS6233aq4XPgrn", + "filament_id": "OFIK2H3G", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json index 0c14a75478..2bc30165fc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "p31K69Srld6o4sQ2", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json index 5b4e2d04d4..b5308a0f8c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "MwbYvnRIzlNmH81h", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json index 40c2ae337a..2c2ee97348 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "rKhHmkqXYD2xN4K9", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json index 8871c32fc4..88184f5a92 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "Dshsi3O7NvYYjXJt", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json index 82b514d1af..cd59be156d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "mfnL6QEevCmTmOL0", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 0.6 HF nozzle.json index a5326ae2b7..3281932fe8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "AGLHrHKWye0YTtNK", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 HF.json index e7f97301bd..f5de82a8bb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "px8qzmB2yFLoNl83", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json index 9d8e653cec..da6fd90d98 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "mwuIEsBz5bXEV68w", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json index 7b61a8668d..bb2d6256b6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "TielygFT88owWg4J", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.6 nozzle.json index b15214f50b..149406f025 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti@FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "It2NI6OFhNEUvulz", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.8 HF nozzle.json index 4320a3fce3..22b1a35dcb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4 0.8 HF nozzle.json @@ -1,9 +1,14 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti@FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", + "renamed_from": "Flashforge PLA Buint Ti @FF G4 0.8 nozzle;Flashforge PLA Buint Ti FF G4 0.8 nozzle", "from": "system", "setting_id": "Qt3huWxoYpMEqEN6", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +67,12 @@ "nozzle_temperature_initial_layer": [ "205" ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], "overhang_fan_threshold": [ "25%" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json index c5a76c1d85..6fb09f1458 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Y3XuavnnOMoHLGHA", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json index 034a1ee969..dccc672613 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle.json @@ -1,9 +1,14 @@ { "type": "filament", "name": "Flashforge HS PLA Burnt Ti@FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", + "renamed_from": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle;Flashforge PLA Buint Ti FF G4P 0.8 nozzle", "from": "system", "setting_id": "2HUxAWeolJIlxPs1", + "filament_id": "OF8O09RG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -62,6 +67,12 @@ "nozzle_temperature_initial_layer": [ "205" ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], "overhang_fan_threshold": [ "25%" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA.json index 355d9f6d1e..8002ac7ba9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PLA.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge HS PLA", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "vdaZBnDsmUC1fhDp", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge HS PLA" @@ -14,9 +18,6 @@ "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge AD5X 0.4 nozzle", - "Flashforge AD5X 0.6 nozzle", - "Flashforge AD5X 0.8 nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ] } diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 0.6 HF nozzle.json index bf571e2ea3..f5d60553e6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "u7rolQaTQz9U6veH", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 HF.json index 4672cfc77c..8b10616a83 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "qTGTwiliWj3dSo9y", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4.json index 5576d9ff98..ec1ded13ea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "wAkuJRTLWxGyBU0b", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json index c80656c59f..bc05757132 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "dbs29hQSQl9zuWis", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json index ad3daa8504..1e5eb664ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "XGNPvS2ps7Xn2fpx", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json index 8946fa929c..21ee8da2a6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA @FF G4P", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "h33iEGZ7wPeBYKYQ", + "filament_id": "OFEvEfw5", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5.json index 80326684a6..2b4f6fc95a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PA-CF @System", "from": "system", "setting_id": "e58C9MdOWikIbbVR", + "filament_id": "OFGxuI0n", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5P.json index 8134b2b258..b75438e584 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PA-CF @System", "from": "system", "setting_id": "RX2Tg8KpwQpCbkLI", + "filament_id": "OFGxuI0n", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4.json index 952162aaa2..3379bd5c39 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA-CF @FF G4", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "C4DfYuQgDXIgK7mk", + "filament_id": "OFGxuI0n", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json index ae3207a7b1..07653a9002 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA-CF @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PA-CF @FF G4P", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "Yu7hL4izNsgDVqMT", + "filament_id": "OFGxuI0n", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PA12-CF.json b/resources/profiles/Flashforge/filament/Flashforge PA12-CF.json index 8fe4514502..3fe0018654 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA12-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA12-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PA12-CF", - "inherits": "FusRock Generic PET-CF", + "inherits": "FusRock PET-CF", "from": "system", "setting_id": "1CevPV960sQWT3NF", + "filament_id": "OFgeM7nD", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_density": [ "1.1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PA6-CF.json b/resources/profiles/Flashforge/filament/Flashforge PA6-CF.json index 8dbd624a6e..8364fc4f3b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA6-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA6-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PA6-CF", - "inherits": "FusRock Generic PET-CF", + "inherits": "FusRock PET-CF", "from": "system", "setting_id": "NGbZ8pQVTRKw28kp", + "filament_id": "OFZtOQtl", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_density": [ "1.1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PA66-CF.json b/resources/profiles/Flashforge/filament/Flashforge PA66-CF.json index bcaea09005..f3c1a27c16 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PA66-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PA66-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PA66-CF", - "inherits": "FusRock Generic PET-CF", + "inherits": "FusRock PET-CF", "from": "system", "setting_id": "5pVoGBvbiUlrJSwR", + "filament_id": "OFuV79ru", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_density": [ "1.1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5.json deleted file mode 100644 index 7437791891..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PAHT-CF @FF C5", - "inherits": "Generic PA-CF @System", - "from": "system", - "setting_id": "8ZR8o3MKYxXLd70k", - "instantiation": "true", - "compatible_printers": [ - "Flashforge Creator 5 0.4 nozzle", - "Flashforge Creator 5 0.6 nozzle", - "Flashforge Creator 5 0.8 nozzle" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_settings_id": [ - "Flashforge PAHT-CF @FF C5" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PAHT-CF" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "310" - ], - "nozzle_temperature_initial_layer": [ - "310" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "textured_cool_plate_temp": [ - "0" - ], - "textured_cool_plate_temp_initial_layer": [ - "0" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ] -} diff --git a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5P.json deleted file mode 100644 index e83a93e113..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF C5P.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PAHT-CF @FF C5P", - "inherits": "Generic PA-CF @System", - "from": "system", - "setting_id": "FSfGFl7FCutxXN2l", - "instantiation": "true", - "activate_chamber_temp_control": [ - "1" - ], - "chamber_temperature": [ - "60" - ], - "compatible_printers": [ - "Flashforge Creator 5 Pro 0.4 nozzle", - "Flashforge Creator 5 Pro 0.6 nozzle", - "Flashforge Creator 5 Pro 0.8 nozzle" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "enable_pressure_advance": [ - "1" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_settings_id": [ - "Flashforge PAHT-CF @FF C5P" - ], - "filament_start_gcode": [ - "; filament start gcode" - ], - "filament_type": [ - "PAHT-CF" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "310" - ], - "nozzle_temperature_initial_layer": [ - "310" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "textured_cool_plate_temp": [ - "0" - ], - "textured_cool_plate_temp_initial_layer": [ - "0" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ] -} diff --git a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4.json deleted file mode 100644 index 1758aa7657..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PAHT-CF @FF G4", - "inherits": "Flashforge Generic PLA-CF10", - "from": "system", - "setting_id": "ZlpBAM9uaS01sWAJ", - "instantiation": "true", - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_density": [ - "1.06" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PAHT-CF @FF G4" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PA-CF\n" - ], - "filament_type": [ - "PA-CF" - ], - "compatible_printers": [ - "Flashforge Guider4 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "60" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "180" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ] -} diff --git a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json deleted file mode 100644 index c17b5eeed1..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PAHT-CF @FF G4P", - "inherits": "Flashforge Generic PLA-CF10", - "from": "system", - "setting_id": "9DaSYBA2OI7Jj5zS", - "instantiation": "true", - "activate_chamber_temp_control": [ - "1" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "chamber_temperature": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "50" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "100" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "filament_density": [ - "1.06" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_settings_id": [ - "Flashforge PAHT-CF @FF G4P" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PA-CF\n" - ], - "filament_type": [ - "PA-CF" - ], - "compatible_printers": [ - "Flashforge Guider4 Pro 0.4 nozzle" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "overhang_fan_speed": [ - "60" - ], - "pressure_advance": [ - "0.02" - ], - "slow_down_layer_time": [ - "2" - ], - "support_material_interface_fan_speed": [ - "60" - ], - "temperature_vitrification": [ - "180" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ] -} diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 HF nozzle.json similarity index 80% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 HF nozzle.json index 83e1c85730..e88cbb31c3 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4 0.6 HF nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4 0.6 HF nozzle;FlashForge PC FF G4 0.6 HF nozzle", "from": "system", - "setting_id": "M9HM8tihJzV4crs8", + "setting_id": "Tj504IYSj6mUDR6E", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4 0.6 HF nozzle" + "Flashforge PC @FF G4 0.6 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 nozzle.json similarity index 81% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 nozzle.json index f94eafbe9d..6b1decef09 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4 0.6 nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4 0.6 nozzle;FlashForge PC FF G4 0.6 nozzle", "from": "system", - "setting_id": "08VjBSha6gjhJYgk", + "setting_id": "VfhBf8676qCWatKP", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4 0.6 nozzle" + "Flashforge PC @FF G4 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.8 HF nozzle.json similarity index 80% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.8 HF nozzle.json index d5c6c3c33d..e1740fb30d 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4 0.8 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4 0.8 HF nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4 0.8 HF nozzle;FlashForge PC FF G4 0.8 HF nozzle", "from": "system", - "setting_id": "JqgkmxnjlnQ3uw1u", + "setting_id": "ILBm9zXX5U4Oh82h", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4 0.8 HF nozzle" + "Flashforge PC @FF G4 0.8 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 HF nozzle.json similarity index 80% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 HF nozzle.json index 2bf41bc64b..11ec475184 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4P 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4P 0.6 HF nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4P 0.6 HF nozzle;FlashForge PC FF G4P 0.6 HF nozzle", "from": "system", - "setting_id": "vvLLPvSeb5PYbT1R", + "setting_id": "Kj6KWBfSuFALX2sd", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4P 0.6 HF nozzle" + "Flashforge PC @FF G4P 0.6 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 nozzle.json similarity index 81% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 nozzle.json index e8806df046..38ca36a685 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4P 0.6 nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4P 0.6 nozzle;FlashForge PC FF G4P 0.6 nozzle", "from": "system", - "setting_id": "mPJMPfFCyfWdKzMO", + "setting_id": "XjAM4PMXLCBwdgQf", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4P 0.6 nozzle" + "Flashforge PC @FF G4P 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.8 HF nozzle.json similarity index 80% rename from resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.8 HF nozzle.json index 56562e51e7..dfdda7bfe2 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PC @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PC @FF G4P 0.8 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PC @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "name": "Flashforge PC @FF G4P 0.8 HF nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PC @FF G4P 0.8 HF nozzle;FlashForge PC FF G4P 0.8 HF nozzle", "from": "system", - "setting_id": "HTgqTUTznOlfCRAd", + "setting_id": "icAIkgRCZAjz6apM", + "filament_id": "OFWXCbVF", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -39,7 +44,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PC @FF G4P 0.8 HF nozzle" + "Flashforge PC @FF G4P 0.8 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PC" diff --git a/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5.json index 1036a51c4b..7157336d3f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "3bguiaEtUsS8ULHW", + "filament_id": "OFrjacXf", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5P.json index 9b0c2204a3..b550ae743f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PET-CF @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "W6i9E22BVo11TeCm", + "filament_id": "OFrjacXf", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PET-CF.json b/resources/profiles/Flashforge/filament/Flashforge PET-CF.json index eac6f732f4..bc5485875b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PET-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PET-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PET-CF", - "inherits": "FusRock Generic PET-CF", + "inherits": "FusRock PET-CF", "from": "system", "setting_id": "vflpXTS9GwnODQDH", + "filament_id": "OFrjacXf", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_density": [ "1.1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json index 568a8f3adb..978245b58c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json @@ -1,10 +1,13 @@ { "type": "filament", "name": "Flashforge PETG @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFMpxamb", "instantiation": "false", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", "Flashforge Adventurer 5M Pro 0.25 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json index 656e7c3203..5dc78f3cdb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "xOZQvdZa1YCcnjor", + "filament_id": "OFYYeMyQ", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PETG Basic @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic.json b/resources/profiles/Flashforge/filament/Flashforge PETG Basic.json index 9b1e4c0dff..3d5c4f4b0c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Basic.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Basic", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "YLLJ4xZI704GReej", + "filament_id": "OFYYeMyQ", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "60" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json index 712f68eb71..614ac50225 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "8EUg1hTLfsyDPbnG", + "filament_id": "OFXiArjA", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PETG Pro @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json index 8d400e1b23..0ab5b18b04 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "UKhV8A2DBc1xyNWc", + "filament_id": "OFXiArjA", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json index 0d98e07a7a..e15f011f1f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "dFZ1MmHjj1AAIaMm", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json index 0d59fd73fe..a3d431030f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "Ro3rt7IAJrA5aZD6", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json index e48a6c5082..7cc361d89d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF AD5X", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "cTxrnqzr2wVt4Nj7", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5.json index d2f664b108..0a1b47b916 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "QA1KD03F0zj2zsVi", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5P.json index 3c11370099..69cb6ee5e8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "EU8Q0XLjED23MNer", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.25 nozzle.json index 77cbe8d5b5..fcb6cbcaad 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "XFSgx95whLw5FD08", + "filament_id": "OFXiArjA", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json index ea6f2e9f9c..746eb1cc61 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "8x6yU2U8d5f67N73", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json index 78f83738b2..ecafe03349 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "4W0nfaSSZdg2HQkh", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json index e41dd59589..94b757887a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "AJcugKx4qHPJ3JAT", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json index 915bbb6753..d1c404cd19 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "R0nZuLXEo5qA6Mt8", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4.json index 825a5b8fed..8c1de1d947 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "Ql2BBBymzqEG7GKk", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json index 28c0815822..387adc60c7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "8Jc4eedkknqNB87s", + "filament_id": "OFXiArjA", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json index 23bdac347c..60bb0ae243 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "KU5tDHAKja1sCoHm", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json index 54ed2d165a..24ed205273 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "sb6jD3UZmb0DNIsC", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json index 19f6034de1..d993d05592 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "4BB1wJLtsXus5eyY", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json index a2848c8bc6..1385ac8454 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "m7oJx47UMlFctMkX", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json index 0079505531..1bd2c4cdbf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro @FF G4P", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "ozD2wU5UiORTtJsa", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro.json index 13da0b478b..df9948d863 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Pro", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "IQfUoy7gTmVmBDL5", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "60" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json index a199aa5af8..b1352eecc1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "W59yTyPnVv4LYiah", + "filament_id": "OFwjMiKL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PETG Transparent @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json index a623c9288d..697cd7b714 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "NRY4fsPNtnqs0kyH", + "filament_id": "OFwjMiKL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json index 65ff48dac6..2d29ad79b5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "Ht7wzk8l0b1kv5tZ", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json index f3b8f3859b..f1b7a3b4ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "NJFHpa5HFHIyHSWu", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json index 56c3f5e1e5..252e51750d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF AD5X", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "UaObrRNSTwitC6jr", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5.json index 67a5179794..ed8c6fd0bb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "TtXy042wtT6nF3WB", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5P.json index 1d26593dc4..b6395b0325 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "66OWHhGyuaFISu6v", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.25 nozzle.json index e2c1e5a662..3f0f32fc0a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "p5c6XJ1VD8cn2Meh", + "filament_id": "OFwjMiKL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json index 827d4fe8af..2ab27e8567 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "K8WkJmFy2V1zhYQO", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json index a92d725a2b..b3c10e9970 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "LLK1hwKZhDU8SaGJ", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json index 1020d428d7..8c29f5a466 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "LaUF2HJtBnpZF7Cd", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json index 63ba03680d..2736fea042 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "OUToXk8ddS1RPPUK", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4.json index f88a28c989..d907e48ab5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "ywff8rI39XKjcocY", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json index 50e0bb7150..61db117e30 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PETG @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "C0VV5Uzsl4icRgKa", + "filament_id": "OFwjMiKL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_air_filtration": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json index 9d2ad17397..0dfa3dfee2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "kuCvwo6Phr6Ywhm4", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json index 1e1717f741..91c49b1c85 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Z2E69w9AevYg15tl", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json index 0e2202e3dd..0ac80ad83a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "RkQaxwTjhJK0A3zr", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json index 087167a1a3..bc6fbecdb4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "YBQTMes2S9iJjKDf", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json index 938ea5875a..0213d9e14b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent @FF G4P", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "lCngVWG3q0FWsnrG", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json index f06fa5258b..7502aa35b6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG Transparent", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "3Gv6MJ3RRja5pbOM", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "60" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json index e335c18107..a516f371a2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PETG-CF10", + "inherits": "Generic PETG-CF10 @Flashforge", "from": "system", "setting_id": "bcqYod61blJRzhK2", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json index 58c69dbf09..7a51f2615a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PETG-CF10", + "inherits": "Generic PETG-CF10 @Flashforge", "from": "system", "setting_id": "CnFKOi7fFyS8QlKK", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json index 55f8d200b1..e401baa389 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF AD5X", - "inherits": "Flashforge Generic PETG-CF10", + "inherits": "Generic PETG-CF10 @Flashforge", "from": "system", "setting_id": "eKWJW36I5fVHwjWD", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5.json index 2939916d3c..52901dd534 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "RXRERfs2oQKewpPS", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5P.json index cc565d4999..dda9226bcd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "8Ns75F5n2fdQ8sDk", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "compatible_printers": [ "Flashforge Creator 5 Pro 0.4 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json index 514ce0d360..71c68991d0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "inherits": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "4EgMPzlVo1rTeQ1e", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4.json index b44d204d6b..b0b2ec7360 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF G4", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "K9ME1F4oJkPi8jRu", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json index 5a6548fd04..668e1af37a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "inherits": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "9jCp0gTjB3Mt95Mj", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json index 796e883fd8..a0200ebe49 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF @FF G4P", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "d5OleuNNZBJK9vxH", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF.json index 78eef9b46a..57b297768c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PETG-CF", - "inherits": "Flashforge Generic PETG-CF10", + "inherits": "Generic PETG-CF10 @Flashforge", "from": "system", "setting_id": "MpG61mwVUtJ7t602", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PETG-CF" @@ -14,9 +18,6 @@ "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge AD5X 0.4 nozzle", - "Flashforge AD5X 0.6 nozzle", - "Flashforge AD5X 0.8 nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ] } diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json index f799be321a..2db42a7b5a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json @@ -1,9 +1,12 @@ { "type": "filament", "name": "Flashforge PLA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "instantiation": "false", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", "Flashforge Adventurer 5M Pro 0.25 Nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json index 15aa47eada..9a4844d6ea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "3fuVuyVcn8U0bRJQ", + "filament_id": "OFJ3F2jm", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Basic @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json index 7632049ce6..1a56e9f162 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "FrRRUl5OT773uCju", + "filament_id": "OFJ3F2jm", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json index 8b80f0ab26..7c929b1363 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "gMmhMDqjmJfAYcbV", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json index ce1a822ce3..7f66423bbe 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "0OsrtqfIxrEJMwac", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json index 70f3451691..f698b05b32 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "fuzWVrfZqekMETLK", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5.json index 4596bb8286..6893946556 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "FmUnckQofjunAtwr", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5P.json index b4ee22beee..9a7c7080a0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "Q0RsVOPLuMByur9c", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json index 02897b8eec..bd42e42f74 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "QXJgY8OPyaoYUI1D", + "filament_id": "OFJ3F2jm", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 HF nozzle.json index cc6a2a104e..4ed8203529 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "R54l7TcwsjdPHvNB", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 nozzle.json index 036357790a..731b59748d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "MELEwYupDkT2DPxL", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.8 HF nozzle.json index 5612c00943..24eb70b646 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "uGLvOoPAfksLO43M", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 HF.json index 3a96df6696..b9ab2a97ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "gGpKvk3rnLuTjOwo", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4.json index 690066aefa..2d81ff10df 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "Yopqnj4b5ZVwigGx", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json index f1b070e45e..eedd218625 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "GrwiA2dArUGV9x2g", + "filament_id": "OFJ3F2jm", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json index 094f397950..9c6d20e0e0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "QEfQrqMwApuSMqih", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json index fdf52ed1e2..1285b05257 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "BAPIn3eJAPGpscRJ", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json index e4e1359133..784f6dfd17 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "44BmRNRb6vlPq8qe", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json index 24871a3b60..4fdcf94869 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "ltJbhoAeAec9gxrS", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json index 3d09c85a7d..57305d4cc5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "GxdZiXdqns72ibQl", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic.json index df86f44ed6..12a8f6cd79 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Basic.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Basic", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "5XKGaHUjxHECbnHO", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Basic" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4 0.8 nozzle.json deleted file mode 100644 index ba9fa780ed..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4 0.8 nozzle.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PLA Buint Ti @FF G4 0.8 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "from": "system", - "setting_id": "H8IStdO8zEfSLYVE", - "instantiation": "true", - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "30" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Buint Ti @FF G4 0.8 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PLA\n\n" - ], - "compatible_printers": [ - "Flashforge Guider4 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ] -} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json deleted file mode 100644 index 281d88bca0..0000000000 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Buint Ti @FF G4P 0.8 nozzle.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "type": "filament", - "name": "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "from": "system", - "setting_id": "4wlkoKnU2bA7xhYO", - "instantiation": "true", - "activate_air_filtration": [ - "1" - ], - "additional_cooling_fan_speed": [ - "40" - ], - "complete_print_exhaust_fan_speed": [ - "40" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "40" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_max_volumetric_speed": [ - "30" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_settings_id": [ - "Flashforge PLA Buint Ti @FF G4P 0.8 nozzle" - ], - "filament_start_gcode": [ - "; filament start gcode\n;right_extruder_material:PLA\n\n" - ], - "compatible_printers": [ - "Flashforge Guider4 Pro 0.8 HF nozzle" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "200" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "25%" - ], - "pressure_advance": [ - "0.025" - ], - "slow_down_layer_time": [ - "9" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "45" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ] -} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json index 82f569aaf8..6947f2afbf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "KXy0WyQp06VC2ICh", + "filament_id": "OFMkAW6r", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Color Change @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json index a9b9532a59..9e644f1006 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "9cGw7tXD8YJHEi1H", + "filament_id": "OFMkAW6r", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json index deb0deaa91..4f5eca6889 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "TF6BeOl0patjpPaa", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json index a46c00c184..950effa7cd 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "nkYeEBo8NdkJulAP", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json index 2e019a2a16..bf6dfb230f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "yEDfsOsogfZbNBVX", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5.json index 1c348e66cd..23bfa9be0c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "xZmQdh487UMtvBRu", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5P.json index 378c5fce63..6f5e1afb0e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "rc00SOyIg30uE3Da", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json index 1de1fa9904..a465a78ea6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "k1OiugasUs7baG1f", + "filament_id": "OFMkAW6r", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 HF nozzle.json index c31f2c817e..31a99ea10e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "G2Et7kPHptMESzQ0", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 nozzle.json index 0b16a42ba2..07fe12f973 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "zsOdmFGBSF9UySMN", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.8 HF nozzle.json index b7801aaf6b..3a778e5472 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "oxRMuvBMu9qdQWUQ", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 HF.json index 45edb3fe4c..8657a4010e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "5hwNJvvLtb75XBBg", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4.json index 90a0c47630..c185b26f3d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "mGj8VEyOnnogpkmF", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json index 09f4c73aaf..0709fa3e08 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "HXVX4mDeUSfW2RgL", + "filament_id": "OFMkAW6r", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json index 8a51ee4c0f..9742b8aefc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "JDcRA6apekWLXPvH", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 nozzle.json index 6ba6fb73f3..4d3681736e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "b5GJpvKYktP4vZpj", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.8 HF nozzle.json index 4962ce6694..6eb75a8f52 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "RjUpQV6iQxTircwj", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json index f48156cb07..26609fd995 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "9DEZ6SmFdgfluhsR", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json index fecaa9f06e..e660d0f569 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "girTMkusNTfY04rz", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json index 552c55d640..29f68b0f62 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Color Change", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "pCQ2qmeXUyJzP7kS", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Color Change" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json index 79ae2f6c94..b0f7d6bf89 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "a1jTbQsflD7SDFih", + "filament_id": "OFJJ0Ar3", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json index 95f1514864..df9cc2d3e6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "zyCRsy0mHRgyuQqt", + "filament_id": "OFJJ0Ar3", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json index d6cd08474c..d66bf2b24c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "y8TNaRebTrmFem10", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json index 2df9a04c0a..65dffd3601 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "qju0AMvvq0B5Glny", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json index ed84105332..1067b50067 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "o8gGBOEcNvlbZxGW", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5.json index 798abe1a32..2ce8486cb0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "0RkkIcIUFgwOFTBY", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5P.json index 904ceb7fc0..373a81bcdc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "9qVabnSl8xfKSIYX", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json index e18d7b94f3..e44bbe16e5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "DL7lxDI35YErCTWX", + "filament_id": "OFJJ0Ar3", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 HF nozzle.json index da3b64cd0f..efb7dad130 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "koEC7DteUoXHUd2z", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 nozzle.json index 88ccddeb08..64b442938c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "D69fWcXioFcpoUjC", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.8 HF nozzle.json index ca7ba95268..d20dc55d41 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "rfiQUncdSExEaK0U", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 HF.json index 1783f4d0f8..346dfad0a0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "WX8lK8efXIVcpjFf", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4.json index fdf44498b8..3b999c0734 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "Tzvo3oILQJc4SQko", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json index 6115ca4780..b29877be60 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "ZQYrljZtu3es26hB", + "filament_id": "OFJJ0Ar3", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json index f62409f28a..1b8e75eb32 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Y5gm20O4yCCDIoC0", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json index a91a4252cf..d39114697f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "80vSQxnHfd5ZUy5h", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json index da7d433275..185440fba4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "UZi7T5VoasmXWyH5", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json index b915367cb3..ec0581df11 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "6UlSb4fqHIMdMxkO", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json index c77a90240b..c1818186cb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "H2Cr4B5VUaxyYsN0", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json index 45ca21acee..785e26ace5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Galaxy", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "NJrc0UZ54Fq8MaqF", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Galaxy" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json index 7116bb03b2..5702843039 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "k8iibCO2EnlTSRyi", + "filament_id": "OFdqkWtz", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Luminous @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json index acda8964fa..44a6f663ef 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "pACct3L7duMh3hfx", + "filament_id": "OFdqkWtz", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json index dcc6311055..3e106a6eda 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "GdvXL8SrKrYHxSgZ", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json index 23d5a93a94..446137267f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "SLYD2YcQTQgbSjIF", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json index 32a027e5f2..d605b1e444 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "kOobFSlqEG9Qe0d1", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5.json index 43a46d9f06..5efeada6af 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "4sE1LTVVuRglRbpD", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5P.json index 9fb04c73d9..485a3b51a2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "jEUZyaEIBf2eXXeh", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json index fa64b028ed..3019fb194c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "qZ6kKjRCMfe4Ql3F", + "filament_id": "OFdqkWtz", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.6 HF nozzle.json index 7b6a3404bc..0b58399215 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "xPPSRmadqfqCtRF2", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.8 HF nozzle.json index 773aa67d02..792049300a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "aWVXIk1xVa9URR1D", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 HF.json index 042492ab8f..a218752f68 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "KhBF7hHHVPzqiAca", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4.json index baeabf324a..615e05d2e6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "sTplnj3gMAzwtLWE", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json index be4f7f3ed7..cc630d58ab 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "zJFUJKDJRYi1pRL7", + "filament_id": "OFdqkWtz", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json index 8a7622fb59..65e6995584 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "vXPXOKD8vNJlujM1", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.8 HF nozzle.json index b544994aeb..7704d5f2b8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "purqxjmWiflDrnik", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json index e9a26e8c2a..b9f94e604e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "qraQ97uusigB63hv", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json index 0fae0389cc..5ce6582146 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "Z1NCX8XMyIVlOlWn", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json index 4393acab05..46151a4496 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Luminous", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "s620OFLTgFT4Ds2A", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Luminous" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json index 252743e5f2..30c0a43a1e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "DcbISTLvKNMZRzKx", + "filament_id": "OF6qAuyi", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Matte @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json index e302c58bfe..98964015a5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "4fwlIrzy6O2EsyBZ", + "filament_id": "OF6qAuyi", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json index b461ab7c4d..2774450e57 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "BVmVfNCuy8HDhcEI", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json index b70192398e..f03dc70fd1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "WRMePGzDGdEGiqNv", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json index 0648d80a38..f009759cad 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "thnbuaLDDlGrkrdY", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json similarity index 82% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json index 7a0caeba59..230a723624 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Matte @FF C5", + "name": "Flashforge PLA Matte @FF C5", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Matte @FF C5;Flashforge PLA Matte FF C5", "from": "system", - "setting_id": "UQF0kAaXnZgJGK4o", + "setting_id": "ct3nO6w9j58gqDI0", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" @@ -44,7 +49,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Matte @FF C5" + "Flashforge PLA Matte @FF C5" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json similarity index 80% rename from resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json index 36782a176c..0d7543cc09 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF C5P.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Matte @FF C5P", + "name": "Flashforge PLA Matte @FF C5P", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Matte @FF C5P;Flashforge PLA Matte FF C5P", "from": "system", - "setting_id": "FpLoe6QrPXnrH019", + "setting_id": "Bn2BaG7f1tkvlyYI", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -47,7 +52,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Matte @FF C5P" + "Flashforge PLA Matte @FF C5P" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json index 67b9a2c858..4898587111 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "cnPwhLyBq6JL8gEA", + "filament_id": "OF6qAuyi", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 HF nozzle.json index 6f03f6b8cb..2ff2a07363 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "8b9q1FfVljPmKoEt", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 nozzle.json index fe1ca45413..f49e19c292 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "o9dOrLgL6efF19O1", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.8 HF nozzle.json index 45fe70381f..98e44f21f4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "QoRmDvhoeGi6Z2xv", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 HF.json index d1e83cd7b3..7eda7a4b62 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "dHyuoORAUGLtlGkJ", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4.json index 9090bf2287..698511967d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "OgqVyIHfy3U8Dc6d", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json index 682ba2be12..c9a63d60cb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "g1gnICJ3u6hpGazQ", + "filament_id": "OF6qAuyi", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json index cf6436ad19..c868aa0137 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "feXpVbDM5ON5mwg0", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json index ef02344293..fc205bb684 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "XMnZQ1AxXPJqpqRX", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json index d9fcfcc693..42dc4c9c15 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Ke0bRKPNKSsVMO1Y", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json index 57ac007de8..1d76131870 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "IRC2n4GaofxvvyTt", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json index 185d66e796..63d6f372e3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "RN4wdTL0qccM4huZ", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte.json index b6a9949867..781357b1a1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Matte.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Matte", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "ipMevDMORKqZYdvD", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_max_volumetric_speed": [ "22" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json index 758de4bbdc..1adef03eef 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "vwwb5nfO63U1ErCn", + "filament_id": "OFAebKg8", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Metal @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json index 7685f4ea90..e786ecd378 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "ekq4MRPyzlYxRhbX", + "filament_id": "OFAebKg8", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json index bb880ea106..27caf06739 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "uusF7Vz94HOwoQF0", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json index e34f8d298e..4f01562a04 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "sHZWzrZO8PP0QYZR", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json index 5d6a2fe948..f85391cb2b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "bxwjEFI8HmNY8JI6", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json similarity index 81% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json index 632ffa476f..d382637556 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Metal @FF C5", + "name": "Flashforge PLA Metal @FF C5", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Metal @FF C5;Flashforge PLA Metal FF C5", "from": "system", - "setting_id": "YFbZ472BRNga6OpQ", + "setting_id": "AdjRSTc9RZG6mJ1e", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" @@ -44,7 +49,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Metal @FF C5" + "Flashforge PLA Metal @FF C5" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json similarity index 80% rename from resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json index 01c9b77fe3..965b6fe595 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF C5P.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Metal @FF C5P", + "name": "Flashforge PLA Metal @FF C5P", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Metal @FF C5P;Flashforge PLA Metal FF C5P", "from": "system", - "setting_id": "AtVxriSKOrFZzUun", + "setting_id": "k0AQO2dGbk0qvxzO", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -47,7 +52,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Metal @FF C5P" + "Flashforge PLA Metal @FF C5P" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json index 89436d242d..bf884cf46e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "VvMaIJwFk4Q6KX4p", + "filament_id": "OFAebKg8", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 HF nozzle.json index 6239ad2bad..8fcf56e6b6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "5xqdqoj2l50FegPF", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 nozzle.json index 5f91a2f652..352adaa681 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "R79SbWA9i2OAu2ee", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.8 HF nozzle.json index 8c25b77b20..8d78236629 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "zjIN4KzIOwI1VwOc", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 HF.json index add7f82214..aaabcaac60 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "UxMNNil2KnWvAJ4q", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4.json index f972d75cae..b1035a4629 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "57i6iKrVYUS5UiBT", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json index 9563f42a78..d7697ccb8e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "vVKalJViJuBvlHkK", + "filament_id": "OFAebKg8", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json index ae0bb23e05..bf06971c23 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "IYPw8a9tkpuf95uH", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json index d33ab097f3..7d85d6e56f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "I0bULoVAbtVfQoCy", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json index 97b47d1fc6..9c6e1b92b0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "DbPo3ay2e4a002AB", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json index eb7cdfc00b..a79ce03a5b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "uztv4hhm2O3T93zZ", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json index 627883c18c..82bf12c247 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "UFWWrhfgS7N36Y8W", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal.json index fc1ca9b02d..90d419bfa5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Metal.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Metal", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "UD5i0ijsirfieUvb", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Metal" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json index 04aeb1f095..c956e6a5ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "DIMoIGOGedN17WbO", + "filament_id": "OFm4SivL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Pro @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json index 7101090b3f..eda5f5745f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "SC5LJcecBaEG5by3", + "filament_id": "OFm4SivL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json index fcbcbdf68b..d56ed06c1e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "t9lPSFnwLDk0ARIp", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json index 890831fd51..423b8743a7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "SBSlOEwZSvZHeX4r", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json index 425052368c..0ab1f650f2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "DbWTm2H71izMWmpx", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json similarity index 82% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json index b5fddb2af6..e02f21dbd3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Pro @FF C5", + "name": "Flashforge PLA Pro @FF C5", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Pro @FF C5;Flashforge PLA Pro FF C5", "from": "system", - "setting_id": "47Q7YXoJ7rD7Vu21", + "setting_id": "30eBjTZFg6vDZkc0", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" @@ -44,7 +49,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Pro @FF C5" + "Flashforge PLA Pro @FF C5" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json similarity index 81% rename from resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json rename to resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json index 913081a778..fedd74b2c5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF C5P.json @@ -1,9 +1,14 @@ { "type": "filament", - "name": "Flashforge PLA Pro @FF C5P", + "name": "Flashforge PLA Pro @FF C5P", "inherits": "Generic PLA @System", + "renamed_from": "Flashforge PLA Pro @FF C5P;Flashforge PLA Pro FF C5P", "from": "system", - "setting_id": "v7vYsiPVka4c1CUW", + "setting_id": "xOvxorpWP37CQCfi", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -47,7 +52,7 @@ "18" ], "filament_settings_id": [ - "Flashforge PLA Pro @FF C5P" + "Flashforge PLA Pro @FF C5P" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json index 4cd37e4758..a2ea5e43ee 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "ZENqqRqvEOeloAgs", + "filament_id": "OFm4SivL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 HF nozzle.json index 72234ddfd2..f3dd8e04cf 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "YcXuvz3qYHtVoWxv", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 nozzle.json index b8ad354879..7dc8528606 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "prItyXNphhuPCAce", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.8 HF nozzle.json index 6bfe5cb3cd..57e815ab25 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "83zDmjaAgxxIt7KU", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 HF.json index 5a9918addf..35bce9d866 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "px3O28Olb9LExqfT", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4.json index ed66794aab..b04f49d81b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "QYgsCCHP3Khqrzh3", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json index cbc1d80955..4e1e4c5ac7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "wV01bqvZ6MRaEibZ", + "filament_id": "OFm4SivL", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json index 549f5a1562..07b82edf7f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "1ro9wHPYhuMHNiYe", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json index 856389e1e2..433318fc86 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "4W4a7c9ugUVwvvmn", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json index 6da7732f58..87031ba66b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "CloRo3qxvzxHZuIP", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json index dd788c5a94..281a34a2c5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "QgUbP07tIXmFysEb", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json index 61522df2c7..8d29d1823c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "6mvGOtkPZT6ROboo", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro.json index 2cb335b80e..e70b87f9a9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Pro.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Pro", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "vI875WYbMyQeMwlh", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Pro" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json index b028494888..b232f00632 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json @@ -4,6 +4,10 @@ "inherits": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "gxl3i7jTwkzrKxF4", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Silk @FF AD5M 0.25 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json index a2fae947b8..1a604e9250 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "mx6NWRkqyo2U12XQ", + "filament_id": "OFgjgN35", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], @@ -30,7 +34,7 @@ "Flashforge PLA Silk @FF AD5X 0.25 nozzle" ], "filament_type": [ - "SILK" + "PLA" ], "compatible_printers": [ "Flashforge AD5X 0.25 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json index 645ecbc0c0..3bbc1afcb1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", "setting_id": "YH9IHXOFMKwcTLyA", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" @@ -21,7 +25,7 @@ "Flashforge PLA Silk @FF AD5X 0.6 nozzle" ], "filament_type": [ - "SILK" + "PLA" ], "compatible_printers": [ "Flashforge AD5X 0.6 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json index 4f7e3d3014..36a3c15a4f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", "setting_id": "IfAieG0OAG807xlu", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" @@ -21,7 +25,7 @@ "Flashforge PLA Silk @FF AD5X 0.8 nozzle" ], "filament_type": [ - "SILK" + "PLA" ], "compatible_printers": [ "Flashforge AD5X 0.8 nozzle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json index 4e74bdb6cc..ce5ecdb2aa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF AD5X", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", "setting_id": "N6J7QqQ7TIgM3MyW", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "50" @@ -21,7 +25,7 @@ "Flashforge PLA Silk @FF AD5X" ], "filament_type": [ - "SILK" + "PLA" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5.json index 9c0eec6844..de9c9be46a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA Silk @System", "from": "system", "setting_id": "OIsfpi49wEoF0ekO", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" @@ -53,7 +57,7 @@ "; filament start gcode" ], "filament_type": [ - "SILK" + "PLA" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5P.json index 405b1c46c0..f82bc5efc4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA Silk @System", "from": "system", "setting_id": "xxeZ6VPjRFevxDnK", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" @@ -56,7 +60,7 @@ "; filament start gcode" ], "filament_type": [ - "SILK" + "PLA" ], "nozzle_temperature": [ "230" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json index a8bbced435..84ee8494b5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "x5m17Z5UpqpTtwgF", + "filament_id": "OFgjgN35", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 HF nozzle.json index a3475428a1..ec7a71f35f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "2GZp8yjrY1OioFDi", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 nozzle.json index 19a2957ccc..36090afaf7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "U0XtCVUhIMnidhbR", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.8 HF nozzle.json index 7cb6dc67bd..558015cb87 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "8j9kaYy3ghkF81Cu", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 HF.json index a838f359d4..c37e0f6341 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "E0LeJwSxaniDkB0b", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4.json index 718ad9c32c..b7f4f619ec 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "8rggqgJ9kg9yLE28", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json index fb38d8488a..7e2cbef575 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "hnWRLUwnfXiwnqBM", + "filament_id": "OFgjgN35", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json index 4bccc9c4ac..047cdcf879 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "uY4OWhIytHMz4rWq", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json index 4906f57d2c..b5f36b7483 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "YSkkXd9EhhEHvGpf", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json index 135192e979..a41d10e40a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "XlxXZj9Wi1D6IwCE", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json index f05f9f8e57..e95f7ad1de 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "IPyXBSnMCAikjI9V", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json index 240fae4d59..df4894cdb1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "f3gJsovSmDKoA7BP", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk.json index 205dc244a6..15239129d4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Silk.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Silk", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", "setting_id": "vZb7BvbyVWkZv3rR", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Silk" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json index 16dfdcf81c..c6e10f3502 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "ojYsAanAPqYhgFoe", + "filament_id": "OFV5c8hG", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_settings_id": [ "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json index 29b57abe19..e90f5c1545 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "xVYaNvQwM2chTkPe", + "filament_id": "OFV5c8hG", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "complete_print_exhaust_fan_speed": [ "80" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json index 3cf5581d40..3786cf7abb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "o8lsEnMIiHHorJhb", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json index 09bf6a4f97..c7fb93bca2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "oXlxQJY0K6Dnri7e", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json index 303ab7f286..b6802db1b4 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF AD5X", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "XKpFulrvvrfE56va", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json index 3bfa2b7a10..3d35049e4e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "jmVmKMUCcowszvVp", + "filament_id": "OFV5c8hG", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 HF nozzle.json index c8810e8348..5cf32f2c38 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "yeh5cd0tAHtHzdoQ", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 nozzle.json index a00dcdc264..27380eb9e7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "q2Zi0YluaYpG3Ktf", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 HF.json index 8f226d79ad..42df4a0ea9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4 HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4 HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "1qXV6AJqPpAwX1YK", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4.json index 43fff03323..7a11476c06 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "YsyGGOGqUVkEqkIr", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json index c53e5bc830..013e84740b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json @@ -4,7 +4,11 @@ "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", "from": "system", "setting_id": "4L3Zm1YIxs8J8dp9", + "filament_id": "OFV5c8hG", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json index 7027ffab33..4a975e6f20 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "UVvd018dTbygqTgy", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 nozzle.json index 64ffa609af..0781dd641f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "F0k8kkgWM5FkLAzo", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json index f61281e75d..9b4065c982 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P HF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4P HF", - "inherits": "Flashforge Generic ABS @G3U", + "inherits": "Generic ABS @Flashforge G3U", "from": "system", "setting_id": "Oapl8InwbkwNSIDl", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json index b887d42ff2..35ccf42632 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "NiB6Yb4b0auyn9KQ", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json index c000cb76e4..4be3dba6ea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA Sparkle", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "LYtdPgec1hBLhoQA", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA Sparkle" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json index a9527280aa..245e401283 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "QRyISvTy06kCwxKo", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json index 6e4cbcfdfe..f456d8c7db 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "rmnF24E3SuwzRscH", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json index 23b1230036..a39646f621 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF AD5X", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "BXPI5Pkp7a6pLrCh", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5.json index de99144bf5..a1b271569e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA-CF @System", "from": "system", "setting_id": "rBm25DRY1PAkEJ4r", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5P.json index 896f61dd93..189dba715a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PLA-CF @System", "from": "system", "setting_id": "xReo12oteZ4ECNJN", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4 0.6 nozzle.json index 42ddb83ec2..292cf5972c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "inherits": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "9PgjgxU7pLl2Dfpe", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4.json index 74d834e078..0faba78623 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF G4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "RuNKzuIsw7F1ogmG", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json index e588dbdf2c..77a590f1d6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "inherits": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "YPuMCHNGDWh0FpIB", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json index 9a8e75a439..3bd2e72000 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF @FF G4P", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "3uC056Y171ZjnQE6", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF.json index 391c0e86ec..10f87a860a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PLA-CF", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "JxNlb64lTODaaQhU", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge PLA-CF" @@ -14,9 +18,6 @@ "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge AD5X 0.4 nozzle", - "Flashforge AD5X 0.6 nozzle", - "Flashforge AD5X 0.8 nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ] } diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json index 48ba8894c7..4242f0f8a5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json @@ -1,9 +1,12 @@ { "type": "filament", "name": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFV8Mxqx", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "false", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5.json index 2e049a81f2..e559b22a88 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic PPA-GF @System", "from": "system", "setting_id": "DhC7iFgNKCAq4Zkt", + "filament_id": "OFLC1oRH", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5P.json index d55cb8d4b3..96fa32ad12 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPA-CF @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic PPA-GF @System", "from": "system", "setting_id": "Jws2AaLWaNyZhqX4", + "filament_id": "OFLC1oRH", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-CF.json b/resources/profiles/Flashforge/filament/Flashforge PPA-CF.json index 1808ab60c8..51578f824a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPA-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPA-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PPA-CF", - "inherits": "FusRock Generic PAHT-CF", + "inherits": "FusRock PAHT-CF", "from": "system", "setting_id": "MFItX51zZO0KYjdk", + "filament_id": "OFLC1oRH", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_flow_ratio": [ "0.99" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PPA-GF.json b/resources/profiles/Flashforge/filament/Flashforge PPA-GF.json index b7cb615d2a..e6f3519e1e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPA-GF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPA-GF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PPA-GF", - "inherits": "FusRock Generic PAHT-CF", + "inherits": "FusRock PAHT-CF", "from": "system", "setting_id": "KITjZXcyM4N8cVyu", + "filament_id": "OF5BN24W", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "fan_max_speed": [ "40" ], diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 HF nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 HF nozzle.json index e5b251acab..3df5398f11 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4 0.6 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4 0.6 HF nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4 0.6 HF nozzle;FlashForge PPS FF G4 0.6 HF nozzle", "from": "system", - "setting_id": "3w8fnDjkoFaJ6Nhw", + "setting_id": "5x1ye2DAm3GvzmZJ", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4 0.6 HF nozzle" + "Flashforge PPS @FF G4 0.6 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 nozzle.json index 7394511a16..1de4d51745 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4 0.6 nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4 0.6 nozzle;FlashForge PPS FF G4 0.6 nozzle", "from": "system", - "setting_id": "owHbDqY55rFtSegz", + "setting_id": "yZoLC24CeKEyvkgA", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4 0.6 nozzle" + "Flashforge PPS @FF G4 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.8 HF nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.8 HF nozzle.json index 87e74372e5..e8014ddfec 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4 0.8 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4 0.8 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4 0.8 HF nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4 0.8 HF nozzle;FlashForge PPS FF G4 0.8 HF nozzle", "from": "system", - "setting_id": "eFK1zzT1JY9ZnEl9", + "setting_id": "EsrSpDB3Kx35qb76", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4 0.8 HF nozzle" + "Flashforge PPS @FF G4 0.8 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4.json index 4cc5686f67..fd2f854067 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PPS @FF G4", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "6NjEQ6RJKUAOrSLw", + "filament_id": "OFlgMgNM", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 HF nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 HF nozzle.json index 7d6d3c1a95..f731181d65 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4P 0.6 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4P 0.6 HF nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4P 0.6 HF nozzle;FlashForge PPS FF G4P 0.6 HF nozzle", "from": "system", - "setting_id": "E8CcstoHzax78ZJY", + "setting_id": "Uu82gm86ESeidnRT", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4P 0.6 HF nozzle" + "Flashforge PPS @FF G4P 0.6 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 nozzle.json index 01672b8f65..3eab34befc 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4P 0.6 nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4P 0.6 nozzle;FlashForge PPS FF G4P 0.6 nozzle", "from": "system", - "setting_id": "xa22FD8bRVGsLiPJ", + "setting_id": "G6pIMZA5RC15kJoC", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4P 0.6 nozzle" + "Flashforge PPS @FF G4P 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.8 HF nozzle.json similarity index 83% rename from resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.8 HF nozzle.json index ff77d7095a..a2662d8cc9 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P 0.8 HF nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS @FF G4P 0.8 HF nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS @FF G4P 0.8 HF nozzle;FlashForge PPS FF G4P 0.8 HF nozzle", "from": "system", - "setting_id": "bZ9dbA8dIu9mjWyN", + "setting_id": "SsK15iSJxrQWI5wy", + "filament_id": "OFlgMgNM", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], @@ -57,7 +62,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS @FF G4P 0.8 HF nozzle" + "Flashforge PPS @FF G4P 0.8 HF nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json index 940f6e85f8..b841f62e6c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge PPS @FF G4P", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "vFMKqNjQjlNxwvDI", + "filament_id": "OFlgMgNM", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_chamber_temp_control": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5.json index 0492ebe524..58b2d242a8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic PPA-GF @System", "from": "system", "setting_id": "ihXPnFERMjbBgrP5", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5P.json index e11ff56c17..5f261953b3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic PPA-GF @System", "from": "system", "setting_id": "UWFjBmSpUkZLBvoO", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "activate_chamber_temp_control": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4 0.6 nozzle.json similarity index 81% rename from resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4 0.6 nozzle.json index b1cb0787b5..b33fcb95c9 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS-CF @FF G4 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS-CF @FF G4 0.6 nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS-CF @FF G4 0.6 nozzle;FlashForge PPS-CF FF G4 0.6 nozzle", "from": "system", - "setting_id": "4w0oK3F50O1DUqsu", + "setting_id": "mMTi9QaW5xVch3an", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "2" ], @@ -45,7 +50,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS-CF @FF G4 0.6 nozzle" + "Flashforge PPS-CF @FF G4 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4.json index 374063554b..e4ee9e483e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PPS-CF @FF G4", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "oSGlx5mtGh07BnOz", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P 0.6 nozzle.json similarity index 81% rename from resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json rename to resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P 0.6 nozzle.json index fc6f6e975a..48edb216c5 100644 --- a/resources/profiles/Flashforge/filament/FlashForge PPS-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P 0.6 nozzle.json @@ -1,10 +1,15 @@ { "type": "filament", - "name": "FlashForge PPS-CF @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "name": "Flashforge PPS-CF @FF G4P 0.6 nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", + "renamed_from": "FlashForge PPS-CF @FF G4P 0.6 nozzle;FlashForge PPS-CF FF G4P 0.6 nozzle", "from": "system", - "setting_id": "94vPnztRcpnbfAKx", + "setting_id": "dSI79hoaa9jLGvhz", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "close_fan_the_first_x_layers": [ "2" ], @@ -45,7 +50,7 @@ "15" ], "filament_settings_id": [ - "FlashForge PPS-CF @FF G4P 0.6 nozzle" + "Flashforge PPS-CF @FF G4P 0.6 nozzle" ], "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PPS" diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json index fe1b4c1f6b..dce01c64a7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF @FF G4P.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PPS-CF @FF G4P", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "i5DllSvYjVPO04Su", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "additional_cooling_fan_speed": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PPS-CF.json b/resources/profiles/Flashforge/filament/Flashforge PPS-CF.json index c46bfe3da4..ba10c3fadc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PPS-CF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PPS-CF.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Flashforge PPS-CF", - "inherits": "FusRock Generic PAHT-CF", + "inherits": "FusRock PAHT-CF", "from": "system", "setting_id": "l3dYtVM52X0UMRix", + "filament_id": "OFTSXxzE", "instantiation": "true", + "filament_vendor": [ + "Flashforge" + ], "filament_flow_ratio": [ "0.99" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5.json index a913609484..90d94b9c29 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic PVA @System", "from": "system", "setting_id": "rSYGG2ni41NDVw6l", + "filament_id": "OFaaddbQ", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5P.json index c40ba42a92..03fdb6117e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge PVA @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic PVA @System", "from": "system", "setting_id": "nwgbMjLRJLtJ04ri", + "filament_id": "OFaaddbQ", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json index 528998a24c..1514862e44 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "f75oElm4zB0hukIj", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 nozzle.json index 0e23841975..d6fda96505 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "o4KYTpJF6KksX2mg", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.8 HF nozzle.json index 749a00856c..27d6515ccb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "HUSkDZL6rCpz0lRk", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json index 085cf59c5b..7db519170a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "8xgu0AnMuKbPWyVd", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 nozzle.json index a5b488fc99..2123c33993 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "Rgqt3MjxOye5EaFt", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.8 HF nozzle.json index 3f901a03a4..a5ce644702 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 65D @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 65D @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "PBFsW5qhVbQteYh5", + "filament_id": "OFSDfduA", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json index 489c5fb15f..897054d8ee 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "TPbHmcFyPyjvoERv", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json index a959585cd8..adb4820faa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "zLMgsyDmdoXHhqFv", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json index 33834e19e3..5c5f690cd2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF AD5X.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF AD5X", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "ThakVhjfpgnAlEVH", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "cool_plate_temp": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json index 4aad5af360..b67887cc8b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "M0ozqaD3jSKoD6fm", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 nozzle.json index 0fd54408ca..ae6049673b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "ob8IkvzNt9CWCzbk", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.8 HF nozzle.json index 31b83ce172..37bef9c3f6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "NzxX1lyRJ7wLUihV", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4.json index 430ac28bd4..c5b24e9e04 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "4FIGiheSGvSJPw3s", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json index f5bff06851..23cd8d6326 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", - "inherits": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "1GNqSBaQitzhYSx7", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json index cb901a9bcc..eb2a423bca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.6 nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4P 0.6 nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "eOhMygyxaccdov7o", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json index f5c8f2c553..f4b91222e7 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4P 0.8 HF nozzle", - "inherits": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge G3U 0.6 Nozzle", "from": "system", "setting_id": "LxooKiOkRncktNLf", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json index e4f518e648..9e675ccd52 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF G4P.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A @FF G4P", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "HdoJfbQr0uwQ6Vwb", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A.json index d9f7ec4840..aa2f6251dc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU 95A.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A.json @@ -1,9 +1,13 @@ { "type": "filament", "name": "Flashforge TPU 95A", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "J4EaFhnpkLDcl5wH", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "filament_settings_id": [ "Flashforge TPU 95A" @@ -14,9 +18,6 @@ "Flashforge Adventurer 5M 0.8 Nozzle", "Flashforge Adventurer 5M Pro 0.4 Nozzle", "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge AD5X 0.4 nozzle", - "Flashforge AD5X 0.6 nozzle", - "Flashforge AD5X 0.8 nozzle" + "Flashforge Adventurer 5M Pro 0.8 Nozzle" ] } diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5.json index b7cd53996e..5a4e304862 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "fd5bACFa33J7aTdp", + "filament_id": "OF8GtyKJ", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5P.json index 14bf91e144..428afe7f1c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-64D @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "hrcELA2qEMkZ6Wvj", + "filament_id": "OF8GtyKJ", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5.json index 30a92209c4..407e92aed8 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "Lis7BZ3lMkoX5KQt", + "filament_id": "OFwlZ7gH", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5P.json index dd8ddf201b..611724b460 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-90A @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "xY03Hiidu5YNSUyZ", + "filament_id": "OFwlZ7gH", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5.json b/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5.json index 6d5d7a0455..0c27bb94c6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "AHu6wNV3zcPBusOF", + "filament_id": "OFx0WlzS", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5P.json b/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5P.json index f52588da65..e3b05721e6 100644 --- a/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Flashforge TPU-95A @FF C5P.json @@ -4,6 +4,10 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "8MBRqfLIRdhxk1dF", + "filament_id": "OFx0WlzS", + "filament_vendor": [ + "Flashforge" + ], "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json index c4ebf2a360..0ac23a453d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge ABS @FF AD3.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "9pxqGyfi52tuVmZ1", - "filament_id": "FFF02", + "filament_id": "OF5SJ3jz", "instantiation": "true", "filament_vendor": [ "Flashforge" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json index ca504e0e95..7576c467af 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PETG @FF AD3.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "tYidxo83oreZoecT", - "filament_id": "FFF03", + "filament_id": "OFMpxamb", "instantiation": "true", "filament_vendor": [ "Flashforge" diff --git a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json index 8234e6f07a..8f3483dce2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json +++ b/resources/profiles/Flashforge/filament/Flashforge/Flashforge PLA @FF AD3.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "qnKvMRUvJ7tRJ4dX", - "filament_id": "FFF01", + "filament_id": "OFDKgoqx", "instantiation": "true", "filament_vendor": [ "Flashforge" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 HF nozzle.json index 163a76b62f..8aadbbd478 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 HF nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "2JQjReK012FHpHIt", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" @@ -35,6 +36,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], + "filament_type": [ + "PAHT" + ], "compatible_printers": [ "Flashforge Guider4 0.6 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 nozzle.json index 539b153d74..08fd04115d 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "3SCkpXXK8VcQBMQn", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.8 HF nozzle.json index 70ed04fc55..093175981e 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4 0.8 HF nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "dgpcOrf7282LTh1d", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" @@ -35,6 +36,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], + "filament_type": [ + "PAHT" + ], "compatible_printers": [ "Flashforge Guider4 0.8 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 HF nozzle.json index d5ce57aeee..0fd54aa769 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 HF nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4P 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "e85SCr6SV9kQD2hm", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" @@ -35,6 +36,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], + "filament_type": [ + "PAHT" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.6 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json index 85a4492107..b3f46d40f3 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "eGXsHN5B9BZViVNe", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json index c7c38d13bb..1b4848c0d8 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "8JSb4JqZ7zLi8uPI", + "filament_id": "OF7pjCsO", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" @@ -35,6 +36,9 @@ "filament_start_gcode": [ "; filament start gcode\n;right_extruder_material:PA" ], + "filament_type": [ + "PAHT" + ], "compatible_printers": [ "Flashforge Guider4 Pro 0.8 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5.json index a81bd9fe8c..5ad0cca8f6 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5.json @@ -2,9 +2,14 @@ "type": "filament", "name": "FusRock PAHT-CF @FF C5", "inherits": "Generic PA-CF @System", + "renamed_from": "Flashforge PAHT-CF @FF C5;Flashforge PAHT-CF FF C5", "from": "system", "setting_id": "gZqAGVOlWR79n7hN", + "filament_id": "OFKW5hEW", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5P.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5P.json index 542cced451..b23f871add 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5P.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF C5P.json @@ -2,9 +2,14 @@ "type": "filament", "name": "FusRock PAHT-CF @FF C5P", "inherits": "Generic PA-CF @System", + "renamed_from": "Flashforge PAHT-CF @FF C5P;Flashforge PAHT-CF FF C5P", "from": "system", "setting_id": "nJF1lCOavNNh4yHs", + "filament_id": "OFKW5hEW", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "activate_chamber_temp_control": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4 0.6 nozzle.json index 37dcd0816f..5e18b7b64c 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT-CF @FF G4 0.6 nozzle", - "inherits": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PAHT-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "TZ0nKqxoIYk2mPh8", + "filament_id": "OFKW5hEW", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4.json index 75094206d5..2fb2e00e21 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4.json @@ -1,13 +1,24 @@ { "type": "filament", "name": "FusRock PAHT-CF @FF G4", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", + "renamed_from": "Flashforge PAHT-CF @FF G4;Flashforge PAHT-CF FF G4", "from": "system", "setting_id": "nH6pwFYsPyBzL1EB", + "filament_id": "OFKW5hEW", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], + "activate_chamber_temp_control": [ + "1" + ], "additional_cooling_fan_speed": [ "0" ], + "chamber_temperature": [ + "60" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -54,7 +65,7 @@ "; filament start gcode\n;right_extruder_material:PA-CF\n" ], "filament_type": [ - "PA-CF" + "PAHT-CF" ], "compatible_printers": [ "Flashforge Guider4 0.4 nozzle" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json index 6dee0fbd50..adc2063edd 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PAHT-CF @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PAHT-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "yok12IOGZzGot5Ll", + "filament_id": "OFKW5hEW", "instantiation": "true", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P.json b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P.json index 9beb4e6e38..263323a60a 100644 --- a/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/FusRock PAHT-CF @FF G4P.json @@ -1,13 +1,24 @@ { "type": "filament", "name": "FusRock PAHT-CF @FF G4P", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", + "renamed_from": "Flashforge PAHT-CF @FF G4P;Flashforge PAHT-CF FF G4P", "from": "system", "setting_id": "wmWMf3MfmbfZx2o8", + "filament_id": "OFKW5hEW", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], + "activate_chamber_temp_control": [ + "1" + ], "additional_cooling_fan_speed": [ "0" ], + "chamber_temperature": [ + "60" + ], "close_fan_the_first_x_layers": [ "3" ], @@ -54,7 +65,7 @@ "; filament start gcode\n;right_extruder_material:PA-CF\n" ], "filament_type": [ - "PA-CF" + "PAHT-CF" ], "compatible_printers": [ "Flashforge Guider4 Pro 0.4 nozzle" diff --git a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json index de609cdc0b..c1d48bf1ff 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PET @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "Xqb0GQluin2jUQyL", + "filament_id": "OFKTGKJU", "instantiation": "true", "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4 0.6 nozzle.json index c20763c836..97aaccc69f 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PET-CF @FF G4 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "A8PDgw1jZE2m3bem", + "filament_id": "OFDu1qE7", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4.json b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4.json index 3c7f3b0e91..3e7c8023ad 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4.json +++ b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "FusRock PET-CF @FF G4", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "Iy5lHY4ihEKPgJ5x", + "filament_id": "OFDu1qE7", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "additional_cooling_fan_speed": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json index a727da25ee..c88a329872 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "FusRock PET-CF @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "Kdeg55RzLMYhqYMC", + "filament_id": "OFDu1qE7", "instantiation": "true", "complete_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P.json b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P.json index 62279c4084..d2e10d6c41 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P.json +++ b/resources/profiles/Flashforge/filament/FusRock PET-CF @FF G4P.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "FusRock PET-CF @FF G4P", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "JXf7KCy4KY65xuzO", + "filament_id": "OFDu1qE7", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "additional_cooling_fan_speed": [ "0" ], diff --git a/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5.json b/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5.json index 4502c8e0d8..c5d429456d 100644 --- a/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5.json +++ b/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "O3tz36NNMoagELL0", + "filament_id": "OF0AquDh", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", @@ -56,7 +60,7 @@ "; filament start gcode" ], "filament_type": [ - "S-Multi" + "PA" ], "nozzle_temperature": [ "280" diff --git a/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5P.json b/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5P.json index df0f4c4cc6..bb1ccc7292 100644 --- a/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5P.json +++ b/resources/profiles/Flashforge/filament/FusRock S-Multi @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic PETG-CF @System", "from": "system", "setting_id": "Gg9H6I32fOqoLSqE", + "filament_id": "OF0AquDh", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "activate_chamber_temp_control": [ "1" ], @@ -62,7 +66,7 @@ "; filament start gcode" ], "filament_type": [ - "S-Multi" + "PA" ], "nozzle_temperature": [ "280" diff --git a/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5.json b/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5.json index 9ab78ced38..b895fd4370 100644 --- a/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5.json +++ b/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5.json @@ -4,7 +4,11 @@ "inherits": "Generic PA-CF @System", "from": "system", "setting_id": "pV5QERvRuROIZTOa", + "filament_id": "OFCn83wF", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Creator 5 0.4 nozzle", "Flashforge Creator 5 0.6 nozzle", @@ -50,7 +54,7 @@ "; filament start gcode" ], "filament_type": [ - "S-PAHT" + "PAHT" ], "hot_plate_temp": [ "80" diff --git a/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5P.json b/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5P.json index 521a764406..6845961090 100644 --- a/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5P.json +++ b/resources/profiles/Flashforge/filament/FusRock S-PAHT @FF C5P.json @@ -4,7 +4,11 @@ "inherits": "Generic PA-CF @System", "from": "system", "setting_id": "0i7VkquM4n0uFaXH", + "filament_id": "OFCn83wF", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "activate_chamber_temp_control": [ "1" ], @@ -56,7 +60,7 @@ "; filament start gcode" ], "filament_type": [ - "S-PAHT" + "PAHT" ], "hot_plate_temp": [ "80" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json b/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json similarity index 94% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json index 1675096c7e..249060ab5c 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic NexPA-CF25.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FusRock Generic NexPA-CF25", - "inherits": "Flashforge Generic PETG", + "name": "FusRock NexPA-CF25", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic NexPA-CF25", "from": "system", - "setting_id": "TZDKsooodaGVkM4m", - "filament_id": "GFB99", + "setting_id": "sVoga8454H2oKuKI", + "filament_id": "OFjt8dDO", "instantiation": "true", "activate_air_filtration": [ "0" @@ -152,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "FusRock Generic NexPA-CF25" + "FusRock NexPA-CF25" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @G3U 0.6 Nozzle.json similarity index 78% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @G3U 0.6 Nozzle.json index 37dc9b7723..b1112d508d 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF @G3U 0.6 Nozzle.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "FusRock PAHT-CF @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle;FusRock Generic PAHT-CF G3U 0.6 Nozzle", "from": "system", - "setting_id": "NdNRNhmsHgHRnz1Z", - "filament_id": "GFB99", + "setting_id": "axB3SEA3AC7rmxiZ", + "filament_id": "OFKW5hEW", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" ], @@ -37,7 +41,7 @@ "5" ], "filament_settings_id": [ - "FusRock Generic PAHT-CF @G3U 0.6 Nozzle" + "FusRock PAHT-CF @G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json similarity index 94% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json index 953b71d9e3..d47b7f865c 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FusRock Generic PAHT-CF", - "inherits": "Flashforge Generic PETG", + "name": "FusRock PAHT-CF", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic PAHT-CF", "from": "system", - "setting_id": "fR7maJwWmteJ7bWY", - "filament_id": "GFB99", + "setting_id": "OGhhxVvR4O4VYuCK", + "filament_id": "OFKW5hEW", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,7 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], @@ -154,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "FusRock Generic PAHT-CF" + "FusRock PAHT-CF" ], "filament_shrink": [ "100%" @@ -169,7 +169,7 @@ "0" ], "filament_type": [ - "PA-CF" + "PAHT-CF" ], "filament_unload_time": [ "0" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-GF.json similarity index 72% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-GF.json index 7241cf2afd..0e29324831 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PAHT-GF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-GF.json @@ -1,16 +1,17 @@ { "type": "filament", - "name": "FusRock Generic PAHT-GF", - "inherits": "FusRock Generic PAHT-CF", + "name": "FusRock PAHT-GF", + "inherits": "FusRock PAHT-CF", + "renamed_from": "FusRock Generic PAHT-GF", "from": "system", - "setting_id": "gLG1R5gtdliSlnZJ", - "filament_id": "GFB99", + "setting_id": "yJJEULB0ra4GAS8Q", + "filament_id": "OFcVLpNA", "instantiation": "true", "filament_max_volumetric_speed": [ "15" ], "filament_settings_id": [ - "FusRock Generic PAHT-GF" + "FusRock PAHT-GF" ], "filament_type": [ "PAHT-GF" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @G3U 0.6 Nozzle.json similarity index 78% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @G3U 0.6 Nozzle.json index d6de1c2af8..b82f7ef4a9 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF @G3U 0.6 Nozzle.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "FusRock PET-CF @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic PET-CF @G3U 0.6 Nozzle;FusRock Generic PET-CF G3U 0.6 Nozzle", "from": "system", - "setting_id": "AaGdNgYaIIZyZBiW", - "filament_id": "GFB99", + "setting_id": "Gyw0XH6UtYQqtgx9", + "filament_id": "OFDu1qE7", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" ], @@ -37,7 +41,7 @@ "5" ], "filament_settings_id": [ - "FusRock Generic PET-CF @G3U 0.6 Nozzle" + "FusRock PET-CF @G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json similarity index 94% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json index 95995868fb..4dee20a476 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FusRock Generic PET-CF", - "inherits": "Flashforge Generic PETG", + "name": "FusRock PET-CF", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic PET-CF", "from": "system", - "setting_id": "jJVDAlGTt1QJlbn8", - "filament_id": "GFB99", + "setting_id": "nGtsrswmS2Fj4Uev", + "filament_id": "OFDu1qE7", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,7 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], @@ -154,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "FusRock Generic PET-CF" + "FusRock PET-CF" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-GF.json similarity index 69% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock PET-GF.json index 8fb6eb9b70..6a224aded2 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic PET-GF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-GF.json @@ -1,16 +1,17 @@ { "type": "filament", - "name": "FusRock Generic PET-GF", - "inherits": "FusRock Generic PET-CF", + "name": "FusRock PET-GF", + "inherits": "FusRock PET-CF", + "renamed_from": "FusRock Generic PET-GF", "from": "system", - "setting_id": "IEpmsltdjoCu2txJ", - "filament_id": "GFB99", + "setting_id": "ZFIkUVZOklX8jUrT", + "filament_id": "OFzwA5Z9", "instantiation": "true", "filament_max_volumetric_speed": [ "15" ], "filament_settings_id": [ - "FusRock Generic PET-GF" + "FusRock PET-GF" ], "filament_type": [ "PET-GF" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi @G3U 0.6 Nozzle.json similarity index 76% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi @G3U 0.6 Nozzle.json index d09c7dd01f..80f5577529 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi @G3U 0.6 Nozzle.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "FusRock S-Multi @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic S-Multi @G3U 0.6 Nozzle;FusRock Generic S-Multi G3U 0.6 Nozzle", "from": "system", - "setting_id": "foH2sa61cDy12TzH", - "filament_id": "GFB99", + "setting_id": "HvimUHzfNcDRrUBq", + "filament_id": "OF0AquDh", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" ], @@ -31,13 +35,13 @@ "5" ], "filament_settings_id": [ - "FusRock Generic S-Multi @G3U 0.6 Nozzle" + "FusRock S-Multi @G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" ], "filament_type": [ - "PET-CF" + "PA" ], "filament_unloading_speed": [ "35" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json similarity index 94% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json index 789b77ea27..895d10aa12 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-Multi.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FusRock Generic S-Multi", - "inherits": "Flashforge Generic PETG", + "name": "FusRock S-Multi", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic S-Multi", "from": "system", - "setting_id": "gQLoSJ7xGEdOd8kr", - "filament_id": "GFB99", + "setting_id": "zAqGdmTsz4Z0qbaa", + "filament_id": "OF0AquDh", "instantiation": "true", "activate_air_filtration": [ "0" @@ -152,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "FusRock Generic S-Multi" + "FusRock S-Multi" ], "filament_shrink": [ "100%" @@ -167,7 +168,7 @@ "0" ], "filament_type": [ - "S-Multi" + "PA" ], "filament_unload_time": [ "0" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT @G3U 0.6 Nozzle.json similarity index 76% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT @G3U 0.6 Nozzle.json index 3f42fa9f24..858da9c1bb 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT @G3U 0.6 Nozzle.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "FusRock S-PAHT @G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic S-PAHT @G3U 0.6 Nozzle;FusRock Generic S-PAHT G3U 0.6 Nozzle", "from": "system", - "setting_id": "6Z5vce5YKlCGox8v", - "filament_id": "GFB99", + "setting_id": "JUiz70mbp7RRSPia", + "filament_id": "OFCn83wF", "instantiation": "true", + "filament_vendor": [ + "FusRock" + ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" ], @@ -31,13 +35,13 @@ "5" ], "filament_settings_id": [ - "FusRock Generic S-PAHT @G3U 0.6 Nozzle" + "FusRock S-PAHT @G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" ], "filament_type": [ - "PA-CF" + "PAHT" ], "filament_unloading_speed": [ "35" diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json similarity index 94% rename from resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json rename to resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json index 9e2336a574..792b12c949 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock Generic S-PAHT.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "FusRock Generic S-PAHT", - "inherits": "Flashforge Generic PETG", + "name": "FusRock S-PAHT", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "FusRock Generic S-PAHT", "from": "system", - "setting_id": "kMYDFSwivzTjFo2L", - "filament_id": "GFB99", + "setting_id": "mBQzgKKsV8Qo3gAr", + "filament_id": "OFCn83wF", "instantiation": "true", "activate_air_filtration": [ "0" @@ -152,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "FusRock Generic S-PAHT" + "FusRock S-PAHT" ], "filament_shrink": [ "100%" @@ -167,7 +168,7 @@ "0" ], "filament_type": [ - "S-PAHT" + "PAHT" ], "filament_unload_time": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic ABS @FF AD5M 0.25 Nozzle.json similarity index 60% rename from resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic ABS @FF AD5M 0.25 Nozzle.json index 0504844ed6..cae13c67c1 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @FF AD5M 0.25 Nozzle.json @@ -1,11 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ABS @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge ABS @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ABS", + "name": "Generic ABS @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge ABS @FF AD5M 0.25 Nozzle;Flashforge Generic ABS @FF AD5M 0.25 Nozzle", + "inherits": "Generic ABS @Flashforge", "from": "system", - "setting_id": "NWEY6ZxkUS8jqNU2", - "filament_id": "GFB99", + "setting_id": "1ourI1GmgyKWFsnl", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", @@ -13,7 +13,7 @@ "Flashforge AD5X 0.25 nozzle" ], "filament_settings_id": [ - "Flashforge Generic ABS @FF AD5M 0.25 Nozzle" + "Generic ABS @FF AD5M 0.25 Nozzle" ], "fan_max_speed": [ "50" diff --git a/resources/profiles/Flashforge/filament/Generic ABS @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge AD4.json index a526cc23ff..3af6c25d2b 100644 --- a/resources/profiles/Flashforge/filament/Generic ABS @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic ABS @Flashforge AD4", - "inherits": "Flashforge Generic ABS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "lS237JRDRMQgJFzd", - "filament_id": "GFB99", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "1.093" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U 0.6 Nozzle.json similarity index 73% rename from resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U 0.6 Nozzle.json index ada3f13582..0176ef471f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic ABS", + "name": "Generic ABS @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge", + "renamed_from": "Flashforge Generic ABS @G3U 0.6 Nozzle;Flashforge Generic ABS G3U 0.6 Nozzle", "from": "system", - "setting_id": "OaXiy7DI5bOAiaYb", - "filament_id": "GFB99", + "setting_id": "tzuKCtXYbGw6WB2c", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -25,7 +26,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic ABS @G3U 0.6 Nozzle" + "Generic ABS @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json rename to resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json index 1f6b35db19..8422875984 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ABS @G3U", - "inherits": "Flashforge Generic ABS", + "name": "Generic ABS @Flashforge G3U", + "inherits": "Generic ABS @Flashforge", + "renamed_from": "Flashforge Generic ABS @G3U;Flashforge Generic ABS G3U", "from": "system", - "setting_id": "Cfd7Q1nGwqxI5Ngh", - "filament_id": "GFB99", + "setting_id": "dxCNYDhcaJqAfDpR", + "filament_id": "OFY9muEs", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,7 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], @@ -154,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic ABS @G3U" + "Generic ABS @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge.json similarity index 88% rename from resources/profiles/Flashforge/filament/Flashforge Generic ABS.json rename to resources/profiles/Flashforge/filament/Generic ABS @Flashforge.json index 38d58ba346..a7cfc16967 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ABS", + "name": "Generic ABS @Flashforge", "inherits": "fdm_filament_abs", + "renamed_from": "Flashforge Generic ABS", "from": "system", - "setting_id": "uygAzLWRQiCIJ8jh", - "filament_id": "GFB99", + "setting_id": "CJXM3PoVEjf4kYnz", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic ASA @FF AD5M 0.25 Nozzle.json similarity index 64% rename from resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic ASA @FF AD5M 0.25 Nozzle.json index d5b0d17c25..863936bc35 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @FF AD5M 0.25 Nozzle.json @@ -1,11 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ASA @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge ASA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic ASA", + "name": "Generic ASA @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge ASA @FF AD5M 0.25 Nozzle;Flashforge Generic ASA @FF AD5M 0.25 Nozzle", + "inherits": "Generic ASA @Flashforge", "from": "system", - "setting_id": "spSRbidSN2yeZLhD", - "filament_id": "GFL99", + "setting_id": "aVpIQgRllsYZKRg0", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", @@ -13,7 +13,7 @@ "Flashforge AD5X 0.25 nozzle" ], "filament_settings_id": [ - "Flashforge Generic ASA @FF AD5M 0.25 Nozzle" + "Generic ASA @FF AD5M 0.25 Nozzle" ], "fan_max_speed": [ "50" diff --git a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json index 12d944617f..42f9b00a60 100644 --- a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json @@ -2,10 +2,10 @@ "type": "filament", "name": "Generic ASA @Flashforge AD4", "renamed_from": "Generic ASA @AD4", - "inherits": "Flashforge Generic ASA", + "inherits": "Generic ASA @Flashforge", "from": "system", "setting_id": "tq7YmJohYaNiPplE", - "filament_id": "GFL99", + "filament_id": "OFLPAxz3", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json similarity index 76% rename from resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json index c0819fa0b1..3ecb1b1c67 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic ASA", + "name": "Generic ASA @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic ASA @Flashforge", + "renamed_from": "Flashforge Generic ASA @G3U 0.6 Nozzle;Flashforge Generic ASA G3U 0.6 Nozzle", "from": "system", - "setting_id": "gVLGkoCoyrWL4DQr", - "filament_id": "GFB99", + "setting_id": "9wfcw1ifKVGOXx5G", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -31,7 +32,7 @@ "10" ], "filament_settings_id": [ - "Flashforge Generic ASA @G3U 0.6 Nozzle" + "Generic ASA @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json rename to resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json index fcce2738f5..20a3e61da2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ASA @G3U", - "inherits": "Flashforge Generic ABS", + "name": "Generic ASA @Flashforge G3U", + "inherits": "Generic ABS @Flashforge", + "renamed_from": "Flashforge Generic ASA @G3U;Flashforge Generic ASA G3U", "from": "system", - "setting_id": "c6IMgUyqOeS2HFWw", - "filament_id": "GFB99", + "setting_id": "N1vm5hhMHdSNvUwk", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,7 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], @@ -154,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic ASA @G3U" + "Generic ASA @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json similarity index 95% rename from resources/profiles/Flashforge/filament/Flashforge Generic ASA.json rename to resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json index d7b6844c78..b80ad322c3 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic ASA", + "name": "Generic ASA @Flashforge", "inherits": "fdm_filament_asa", + "renamed_from": "Flashforge Generic ASA", "from": "system", - "setting_id": "jMCunppmYOH5QIra", - "filament_id": "GFL99", + "setting_id": "tzs0HcyEZow99A2J", + "filament_id": "OFLPAxz3", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge G3U 0.6 Nozzle.json similarity index 75% rename from resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic HIPS @Flashforge G3U 0.6 Nozzle.json index baf6514cd9..84c43def44 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic ABS", + "name": "Generic HIPS @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic ABS @Flashforge", + "renamed_from": "Flashforge Generic HIPS @G3U 0.6 Nozzle;Flashforge Generic HIPS G3U 0.6 Nozzle", "from": "system", - "setting_id": "b3CFhGGnZLzpyAWa", - "filament_id": "GFB99", + "setting_id": "wsAmSziSQ4UEHucg", + "filament_id": "OFsFon5l", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -31,7 +32,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic HIPS @G3U 0.6 Nozzle" + "Generic HIPS @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json similarity index 94% rename from resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json rename to resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json index 18f52c4f1f..3012161923 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json +++ b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic HIPS", - "inherits": "Flashforge Generic ABS", + "name": "Generic HIPS @Flashforge", + "inherits": "Generic ABS @Flashforge", + "renamed_from": "Flashforge Generic HIPS", "from": "system", - "setting_id": "n68nw5tzKZ0rq43O", - "filament_id": "GFB99", + "setting_id": "zMQa7Squ3p3jKYwB", + "filament_id": "OFsFon5l", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,7 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], @@ -154,7 +154,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic HIPS" + "Generic HIPS @Flashforge" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json similarity index 71% rename from resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json index 93ee8f80cb..558a420640 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json @@ -1,11 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge HS PLA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic HS PLA", + "name": "Generic HS PLA @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge HS PLA @FF AD5M 0.25 Nozzle;Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle", + "inherits": "Generic HS PLA @Flashforge", "from": "system", - "setting_id": "1cvcaoBFNbg2GucE", - "filament_id": "GFL99", + "setting_id": "DWsED5ish5gru5mt", + "filament_id": "OFvxghTE", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", @@ -13,7 +13,7 @@ "Flashforge AD5X 0.25 nozzle" ], "filament_settings_id": [ - "Flashforge Generic HS PLA @FF AD5M 0.25 Nozzle" + "Generic HS PLA @FF AD5M 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json b/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json similarity index 96% rename from resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json rename to resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json index c67de4ecd3..b6b4f26221 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HS PLA.json +++ b/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic HS PLA", + "name": "Generic HS PLA @Flashforge", "inherits": "fdm_filament_pla", + "renamed_from": "Flashforge Generic HS PLA", "from": "system", - "setting_id": "foG37d7HZKgt6l43", - "filament_id": "GFL99", + "setting_id": "GTqLzBcGP2Rmmc9X", + "filament_id": "OFvxghTE", "instantiation": "true", "bed_temperature_difference": [ "10" diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 HF nozzle.json index ed788fa452..366dd8ec5a 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4 0.6 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "cvJIaPzb0uJLipX1", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 nozzle.json index bd6fbfb0e1..7e4f3adacc 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.6 nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "wguPruY9M7GcMt6q", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.8 HF nozzle.json index 1b8c0864fb..33a832c216 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4 0.8 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4 0.8 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "EhobwmFIEg5Cs5Ki", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4.json index f7bdfc0830..82ddf2067c 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Generic PET @FF G4", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "JvdxJyy7xCm3F0xH", + "filament_id": "OF6MOPWx", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 HF nozzle.json index 7bf0850fe8..6075390527 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4P 0.6 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "FtwGLcPMQqKw5uKW", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 nozzle.json index a95278c719..c26ba6d204 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.6 nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "lrnsjoh8DtnTcT7g", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.8 HF nozzle.json index ca22248030..731a8b0a27 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4P 0.8 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Generic PET @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "FusRock PET-CF @G3U 0.6 Nozzle", "from": "system", "setting_id": "Th8rzyWoINHBwgcw", + "filament_id": "OF6MOPWx", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Flashforge/filament/Generic PET @FF G4P.json b/resources/profiles/Flashforge/filament/Generic PET @FF G4P.json index 45eb6c20a5..f1d33a0d09 100644 --- a/resources/profiles/Flashforge/filament/Generic PET @FF G4P.json +++ b/resources/profiles/Flashforge/filament/Generic PET @FF G4P.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Generic PET @FF G4P", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "1Lyq9gOfcZ5hPIdW", + "filament_id": "OF6MOPWx", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG @FF AD5M 0.25 Nozzle.json similarity index 58% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PETG @FF AD5M 0.25 Nozzle.json index 4d02d458d0..0a54e7aeff 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @FF AD5M 0.25 Nozzle.json @@ -1,11 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge PETG @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge PETG @FF AD5M 0.25 Nozzle;Flashforge Generic PETG @FF AD5M 0.25 Nozzle", + "inherits": "Generic PETG @Flashforge", "from": "system", - "setting_id": "KerUxwPsSEKDO6jL", - "filament_id": "GFG99", + "setting_id": "RyssSqtvE99XGdpZ", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", @@ -13,7 +13,7 @@ "Flashforge AD5X 0.25 nozzle" ], "filament_settings_id": [ - "Flashforge Generic PETG @FF AD5M 0.25 Nozzle" + "Generic PETG @FF AD5M 0.25 Nozzle" ], "fan_max_speed": [ "80" diff --git a/resources/profiles/Flashforge/filament/Generic PETG @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge AD4.json index 8122a7e3b5..3308abfa38 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic PETG @Flashforge AD4", - "inherits": "Flashforge Generic PETG", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "6vtyYCWYY10OPMbz", - "filament_id": "GFG99", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "1.09" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json similarity index 72% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json index 2183965821..77095049c2 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG @G3U 0.6 Nozzle;Flashforge Generic PETG G3U 0.6 Nozzle", "from": "system", - "setting_id": "W7pWKQ2EWAB5viV1", - "filament_id": "GFB99", + "setting_id": "ptfqxSWRVMFXRqzD", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -25,7 +26,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PETG @G3U 0.6 Nozzle" + "Generic PETG @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json similarity index 73% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json index 3e61f73029..f0ebbde186 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG @Flashforge G3U 0.8 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG @G3U 0.8 Nozzle;Flashforge Generic PETG G3U 0.8 Nozzle", "from": "system", - "setting_id": "eDQb2WfDsUTvj2Nf", - "filament_id": "GFB99", + "setting_id": "UhrHMgzzppLirT8M", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.8 Nozzle" @@ -28,7 +29,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PETG @G3U 0.8 Nozzle" + "Generic PETG @Flashforge G3U 0.8 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json rename to resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json index 075e2e4923..119b9e3349 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG @G3U", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG @Flashforge G3U", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG @G3U;Flashforge Generic PETG G3U", "from": "system", - "setting_id": "yo4uc7TxQbqnlRUY", - "filament_id": "GFB99", + "setting_id": "umrO2bL7ihLROx0B", + "filament_id": "OFYPdQJh", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,8 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", - "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", @@ -154,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic PETG @G3U" + "Generic PETG @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge.json similarity index 91% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG.json rename to resources/profiles/Flashforge/filament/Generic PETG @Flashforge.json index 28ed60ccf7..b53946e06c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG", + "name": "Generic PETG @Flashforge", "inherits": "fdm_filament_pet", + "renamed_from": "Flashforge Generic PETG", "from": "system", - "setting_id": "YqiSgA018CdflfT9", - "filament_id": "GFG99", + "setting_id": "pd9YWgt8IGXdiiUV", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json similarity index 74% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json index 385ec94b64..a44330253e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle;Flashforge Generic PETG-CF G3U 0.6 Nozzle", "from": "system", - "setting_id": "u2OzNKIQIKUrOT9k", - "filament_id": "GFB99", + "setting_id": "xYtwo7Ddkfh5PLIz", + "filament_id": "OFoYSJKi", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -25,7 +26,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U 0.6 Nozzle" + "Generic PETG-CF @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json similarity index 74% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json index 4efa8a0a0f..3f5f92e8bc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG-CF @Flashforge G3U 0.8 Nozzle", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle;Flashforge Generic PETG-CF G3U 0.8 Nozzle", "from": "system", - "setting_id": "7Qq8eY1kcFHTgzW3", - "filament_id": "GFB99", + "setting_id": "v3HCxK10mQARiRTZ", + "filament_id": "OFoYSJKi", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.8 Nozzle" @@ -28,7 +29,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U 0.8 Nozzle" + "Generic PETG-CF @Flashforge G3U 0.8 Nozzle" ], "filament_start_gcode": [ "; filament start gcode" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json rename to resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json index d3fb0d6590..d298fa5b12 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG-CF @G3U", - "inherits": "Flashforge Generic PETG", + "name": "Generic PETG-CF @Flashforge G3U", + "inherits": "Generic PETG @Flashforge", + "renamed_from": "Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG-CF G3U", "from": "system", - "setting_id": "gLrecba33jDI9PeI", - "filament_id": "GFB99", + "setting_id": "XXoNSerT8aqG5dlL", + "filament_id": "OFoYSJKi", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,8 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", - "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", @@ -154,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic PETG-CF @G3U" + "Generic PETG-CF @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json index ff84af740f..bcf3f0926c 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic PETG-CF10 @Flashforge AD4", - "inherits": "Flashforge Generic PETG-CF10", + "inherits": "Generic PETG-CF10 @Flashforge", "from": "system", "setting_id": "fWM9WLGV9mUQOtHh", - "filament_id": "GFG99", + "filament_id": "OFO5djrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json similarity index 95% rename from resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json rename to resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json index 934ba831ef..ca45c4fe25 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PETG-CF10", + "name": "Generic PETG-CF10 @Flashforge", "inherits": "fdm_filament_pet", + "renamed_from": "Flashforge Generic PETG-CF10", "from": "system", - "setting_id": "PlC4Ek7d09ytYZqJ", - "filament_id": "GFG99", + "setting_id": "0oCfWHsyqpBCbD62", + "filament_id": "OFO5djrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @FF AD5M 0.25 Nozzle.json similarity index 73% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA @FF AD5M 0.25 Nozzle.json index 769d2f16d5..d0cf9d305f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @FF AD5M 0.25 Nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Flashforge Generic PLA @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge PLA @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge PLA @FF AD5M 0.25 Nozzle;Flashforge Generic PLA @FF AD5M 0.25 Nozzle", + "inherits": "Generic PLA @Flashforge", "from": "system", - "setting_id": "o1CHzasJ7x3CKjue", + "setting_id": "tPulq0o2HEsicj3g", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", @@ -12,7 +12,7 @@ "Flashforge AD5X 0.25 nozzle" ], "filament_settings_id": [ - "Flashforge Generic PLA @FF AD5M 0.25 Nozzle" + "Generic PLA @FF AD5M 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge AD4.json index 39afe0a2c2..5de4a77e3c 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic PLA @Flashforge AD4", - "inherits": "Flashforge Generic PLA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "48NJ34G6Uo7VgzD4", - "filament_id": "GFL99", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "1.07" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json similarity index 84% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json index 72add60440..b0c0ce9597 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", - "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge", "from": "system", "instantiation": "false", "compatible_printers": [ @@ -23,7 +23,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n\n\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json similarity index 86% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json index ccc07ccec3..49aa73c7eb 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json @@ -1,7 +1,7 @@ { "type": "filament", - "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA @Flashforge G3U 0.8 Nozzle", + "inherits": "Generic PLA @Flashforge", "from": "system", "instantiation": "false", "compatible_printers": [ @@ -23,7 +23,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PLA @G3U 0.8 Nozzle" + "Generic PLA @Flashforge G3U 0.8 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n\n\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json rename to resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json index 4154eed45e..48b66814ca 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA @G3U", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA @Flashforge G3U", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Flashforge Generic PLA @G3U;Flashforge Generic PLA G3U", "from": "system", - "setting_id": "gjIdhPTLOr17mz5B", - "filament_id": "FFG01", + "setting_id": "8ZlELnZzCa3UsztB", + "filament_id": "OFDSrzZ8", "instantiation": "true", "activate_air_filtration": [ "0" @@ -154,7 +155,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic PLA @G3U" + "Generic PLA @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge.json similarity index 89% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA.json rename to resources/profiles/Flashforge/filament/Generic PLA @Flashforge.json index 61b5276051..2a7b642470 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA", + "name": "Generic PLA @Flashforge", "inherits": "fdm_filament_pla", + "renamed_from": "Flashforge Generic PLA", "from": "system", - "setting_id": "DwAgYHepesazDUjN", - "filament_id": "FFG01", + "setting_id": "keWbSonGBWos68ag", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json index 77e0ed35fd..85741e007d 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic PLA High Speed @Flashforge AD4", - "inherits": "Flashforge Generic HS PLA", + "inherits": "Generic HS PLA @Flashforge", "from": "system", "setting_id": "B4EWBUa9G36lZUd7", - "filament_id": "GFL99", + "filament_id": "OFmpMwxS", "instantiation": "true", "bed_temperature_difference": [ "10" diff --git a/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5.json b/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5.json index 16e1f0d278..2087257bcb 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5.json +++ b/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5.json @@ -53,7 +53,7 @@ "; filament start gcode" ], "filament_type": [ - "SILK" + "PLA" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5P.json b/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5P.json index eb0aa584da..a5de4c8f4a 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Generic PLA Silk @FF C5P.json @@ -56,7 +56,7 @@ "; filament start gcode" ], "filament_type": [ - "SILK" + "PLA" ], "nozzle_temperature": [ "230" diff --git a/resources/profiles/Flashforge/filament/Generic PLA Silk @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA Silk @Flashforge AD4.json index 199e64cc2b..39a2a4cfe8 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA Silk @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA Silk @Flashforge AD4.json @@ -2,10 +2,10 @@ "type": "filament", "name": "Generic PLA Silk @Flashforge AD4", "renamed_from": "PLA Silk @Flashforge AD4", - "inherits": "Flashforge Generic PLA-Silk", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", "setting_id": "9FrKIXABj3yedXri", - "filament_id": "GFL99", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_flow_ratio": [ "1.07" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json similarity index 73% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json index 57b925762b..af864f7f8e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle;Flashforge Generic PLA-CF G3U 0.6 Nozzle", "from": "system", - "setting_id": "KR0LUSD7wd55oNI6", - "filament_id": "GFB99", + "setting_id": "3vXm1hn43igE1xww", + "filament_id": "OFWbdGsC", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" @@ -28,7 +29,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U 0.6 Nozzle" + "Generic PLA-CF @Flashforge G3U 0.6 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json similarity index 73% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json index 7300eb4bf4..798dff9458 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA-CF @Flashforge G3U 0.8 Nozzle", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle;Flashforge Generic PLA-CF G3U 0.8 Nozzle", "from": "system", - "setting_id": "rQSFNxuuqUVzsSV2", - "filament_id": "GFB99", + "setting_id": "f1rqvqunGS94fw7q", + "filament_id": "OFWbdGsC", "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.8 Nozzle" @@ -28,7 +29,7 @@ "5" ], "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U 0.8 Nozzle" + "Generic PLA-CF @Flashforge G3U 0.8 Nozzle" ], "filament_start_gcode": [ "; filament start gcode\n" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json similarity index 93% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json rename to resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json index f236a9a83b..7f79c0753e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA-CF @G3U", - "inherits": "Flashforge Generic PLA", + "name": "Generic PLA-CF @Flashforge G3U", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA-CF G3U", "from": "system", - "setting_id": "S1UTm2oMRoQ4yM4R", - "filament_id": "GFB99", + "setting_id": "J2zu45Q3zu7Tor3W", + "filament_id": "OFWbdGsC", "instantiation": "true", "activate_air_filtration": [ "0" @@ -23,8 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", - "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", @@ -154,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic PLA-CF @G3U" + "Generic PLA-CF @Flashforge G3U" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json index 39a1a6d188..c03c616a0e 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic PLA-CF10 @Flashforge AD4", - "inherits": "Flashforge Generic PLA-CF10", + "inherits": "Generic PLA-CF10 @Flashforge", "from": "system", "setting_id": "F8r0b3G228QEK53U", - "filament_id": "GFL99", + "filament_id": "OFX2zcrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json similarity index 96% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json rename to resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json index 29b86ed5b1..8b2e1efb14 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF10.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA-CF10", + "name": "Generic PLA-CF10 @Flashforge", "inherits": "fdm_filament_pla", + "renamed_from": "Flashforge Generic PLA-CF10", "from": "system", - "setting_id": "qH3l3p0yvZHqHnwG", - "filament_id": "GFL99", + "setting_id": "cckB4CXjFwZKC0l0", + "filament_id": "OFX2zcrM", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json similarity index 71% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json rename to resources/profiles/Flashforge/filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json index d04d5eb4cf..c2e5210f3a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json @@ -1,18 +1,18 @@ { "type": "filament", - "name": "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "renamed_from": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", - "inherits": "Flashforge Generic PLA-Silk", + "name": "Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "renamed_from": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle;Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "inherits": "Generic PLA-Silk @Flashforge", "from": "system", - "setting_id": "WOl0JsKxAQFo2WnW", - "filament_id": "GFL99", + "setting_id": "gsOqWqaxtcrTm9JE", + "filament_id": "OFkf1HHw", "instantiation": "true", "compatible_printers": [ "Flashforge Adventurer 5M 0.25 Nozzle", "Flashforge Adventurer 5M Pro 0.25 Nozzle" ], "filament_settings_id": [ - "Flashforge Generic PLA-SILK @FF AD5M 0.25 Nozzle" + "Generic PLA-SILK @FF AD5M 0.25 Nozzle" ], "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json b/resources/profiles/Flashforge/filament/Generic PLA-Silk @Flashforge.json similarity index 89% rename from resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json rename to resources/profiles/Flashforge/filament/Generic PLA-Silk @Flashforge.json index bb3acc4145..d8eabacaa0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-Silk.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-Silk @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PLA-Silk", + "name": "Generic PLA-Silk @Flashforge", "inherits": "fdm_filament_pla", + "renamed_from": "Flashforge Generic PLA-Silk", "from": "system", - "setting_id": "NryK9oIg8wMDKVHW", - "filament_id": "GFL99", + "setting_id": "TPRkxgDXxVhPC1ws", + "filament_id": "OFi6PfUM", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json b/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json similarity index 94% rename from resources/profiles/Flashforge/filament/Flashforge Generic PVA.json rename to resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json index 6adaf46d6e..6c76493158 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json +++ b/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic PVA", - "inherits": "Flashforge Generic PLA", + "name": "Generic PVA @Flashforge", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Flashforge Generic PVA", "from": "system", - "setting_id": "NA0PhaTNDvEH38lF", - "filament_id": "GFB99", + "setting_id": "yiCXuEb87vNMhytL", + "filament_id": "OFDvXujf", "instantiation": "true", "activate_air_filtration": [ "0" @@ -154,7 +155,7 @@ "nil" ], "filament_settings_id": [ - "Flashforge Generic PVA" + "Generic PVA @Flashforge" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.6 nozzle.json index 9d91f3746b..320aa2ad8d 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Generic TPU 85A @FF AD5X 0.6 nozzle", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "WQyJHZpkl9Dz6Yo3", + "filament_id": "OFulOdT2", "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.8 nozzle.json index d109f87d0e..0731ca82a6 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X 0.8 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Generic TPU 85A @FF AD5X 0.8 nozzle", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "qRqhbOYn5TMfccem", + "filament_id": "OFulOdT2", "instantiation": "true", "cool_plate_temp": [ "45" diff --git a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X.json b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X.json index 3f79dcf3a5..a93bdb8c2e 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X.json +++ b/resources/profiles/Flashforge/filament/Generic TPU 85A @FF AD5X.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "Generic TPU 85A @FF AD5X", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "LTZCFxkzkGCnUMAR", + "filament_id": "OFulOdT2", "instantiation": "true", "cool_plate_temp": [ "40" diff --git a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json index a5bfa9cdd5..610777d347 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "Generic TPU @Flashforge AD4", - "inherits": "Flashforge Generic TPU", + "inherits": "Generic TPU @Flashforge", "from": "system", "setting_id": "DW9Ck6xMK00Ry2iE", - "filament_id": "GFG99", + "filament_id": "OFgbpcy9", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json similarity index 95% rename from resources/profiles/Flashforge/filament/Flashforge Generic TPU.json rename to resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json index 473ba6ac33..45a6b2e6f9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json +++ b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Flashforge Generic TPU", + "name": "Generic TPU @Flashforge", "inherits": "fdm_filament_tpu", + "renamed_from": "Flashforge Generic TPU", "from": "system", - "setting_id": "zQEeIIKWSgsDqlpI", - "filament_id": "GFG99", + "setting_id": "luh9xN4STlD0sTyt", + "filament_id": "OFgbpcy9", "instantiation": "true", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5.json b/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5.json index 659d896a04..d34dc09ee4 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "i59KgPtnplOJ8ZBh", + "filament_id": "OF5c6nq3", "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5P.json b/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5P.json index 76399618fc..7b90c39711 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-64D @FF C5P.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "ERMhwufaef91KJ1d", + "filament_id": "OF5c6nq3", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5.json b/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5.json index 43b69e32e3..de84158ff1 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "ZGmi7NF6Rn4idKjT", + "filament_id": "OFJYpVAQ", "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5P.json b/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5P.json index 5b11df4081..dae60389c1 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-90A @FF C5P.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "3SRFjKR5ezAukLYW", + "filament_id": "OFJYpVAQ", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5.json b/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5.json index ddfcc5c1af..66f0535b0b 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "ULqB7JfqebS8d00l", + "filament_id": "OFy48TOp", "instantiation": "true", "additional_cooling_fan_speed": [ "40" diff --git a/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5P.json b/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5P.json index 1eb7a0bf80..f44c131661 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5P.json +++ b/resources/profiles/Flashforge/filament/Generic TPU-95A @FF C5P.json @@ -4,6 +4,7 @@ "inherits": "Generic TPU @System", "from": "system", "setting_id": "EQzyVOtOJjpKyRMM", + "filament_id": "OFy48TOp", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 HF nozzle.json index e0e410486c..73d0c5de35 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "lALS0WwvUo5AYOq3", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 nozzle.json index b005039c27..3f1f866e13 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.6 nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "tgRrYwnp5nr1yr9w", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.8 HF nozzle.json index eb7577cfe5..58a29d1466 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4 0.8 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "yom6iIUUwU1MsZwF", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json index 933d1ff7d3..9d896b6896 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4P 0.6 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "ysj5nD1op08U8rUT", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json index 34959d59ec..153456f8da 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.6 nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4P 0.6 nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "HBtkC3BfEpBGEWc5", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json index d4285329e3..cd5d838b69 100644 --- a/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json @@ -1,10 +1,14 @@ { "type": "filament", "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", - "inherits": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "FusRock S-PAHT @G3U 0.6 Nozzle", "from": "system", "setting_id": "zsW4MCpeL5qfzNfg", + "filament_id": "OFQyyO0l", "instantiation": "true", + "filament_vendor": [ + "Polymaker" + ], "close_fan_the_first_x_layers": [ "2" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json similarity index 95% rename from resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json index 49196701fa..533af6688b 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic CoPA.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Polymaker Generic CoPA", - "inherits": "Flashforge Generic PLA", + "name": "Polymaker CoPA", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Polymaker Generic CoPA", "from": "system", - "setting_id": "t6CWYU3ZSddIjwhS", - "filament_id": "GFB99", + "setting_id": "5Dt1APJ8qd5pzmzK", + "filament_id": "OFQyyO0l", "instantiation": "true", "activate_air_filtration": [ "0" @@ -152,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "Polymaker Generic CoPA" + "Polymaker CoPA" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json similarity index 95% rename from resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json rename to resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json index 8a8b8fe94b..c7eb2fb58c 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker Generic S1.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Polymaker Generic S1", - "inherits": "Flashforge Generic PLA", + "name": "Polymaker S1", + "inherits": "Generic PLA @Flashforge", + "renamed_from": "Polymaker Generic S1", "from": "system", - "setting_id": "NXQtHvtO4tyQ1ueu", - "filament_id": "GFB99", + "setting_id": "auChFegT1xViXxGe", + "filament_id": "OFaDsTE0", "instantiation": "true", "activate_air_filtration": [ "0" @@ -152,7 +153,7 @@ "nil" ], "filament_settings_id": [ - "Polymaker Generic S1" + "Polymaker S1" ], "filament_shrink": [ "100%" diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PETG @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PETG @base.json index a29d5448ae..7e75980d63 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PETG @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PETG @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFSNL08", + "filament_id": "OF2GCW1l", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Marble @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Marble @base.json index 84d20b77c5..c74353803b 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Marble @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Marble @base.json @@ -1,10 +1,9 @@ { "type": "filament", "name": "SUNLU PLA Marble @base", - "renamed_from": "SUNLU Marble PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL06", + "filament_id": "OFxUwUeW", "instantiation": "false", "filament_cost": [ "31.99" diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Matte @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Matte @base.json index 542dda9c1f..4445f8007a 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Matte @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL02", + "filament_id": "OFpW4gdi", "instantiation": "false", "filament_cost": [ "25.99" diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ 2.0 @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ 2.0 @base.json index c631debf6c..f343841042 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ 2.0 @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ 2.0 @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ 2.0 @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL04", + "filament_id": "OFHmPYRy", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ @base.json index f9eb2fe68d..98a628daeb 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL03", + "filament_id": "OFMUWNkp", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU Silk PLA+ @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU Silk PLA+ @base.json index d4d6e8d0cb..60fa90f91a 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU Silk PLA+ @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU Silk PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Silk PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL05", + "filament_id": "OFpPGSKG", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/Flashforge/filament/SUNLU/SUNLU Wood PLA @base.json b/resources/profiles/Flashforge/filament/SUNLU/SUNLU Wood PLA @base.json index f81d0dfdfb..5617754e9e 100644 --- a/resources/profiles/Flashforge/filament/SUNLU/SUNLU Wood PLA @base.json +++ b/resources/profiles/Flashforge/filament/SUNLU/SUNLU Wood PLA @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Wood PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFSNL07", + "filament_id": "OFLJ8S6I", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json index ba5fc5f554..50a7d88ff5 100644 --- a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json index 8db76b0cd5..9dcd0f86dd 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json index 4955930d7c..a88cbb9e80 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json index ef7b50bbdb..47ac21c2ec 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X.json b/resources/profiles/Flashforge/machine/Flashforge AD5X.json index 3ed31ba385..42cfac7967 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_ad5x_buildplate_texture.svg", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", "url": "", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json index fbc164e0e0..476d036a95 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_adventurer5m_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json index c0822d3d73..b69dc12126 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_adventurer5m_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Flashforge Generic ABS;Flashforge Generic PETG;Flashforge Generic PLA" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Artemis.json b/resources/profiles/Flashforge/machine/Flashforge Artemis.json index 7bab45b82a..22e9963a24 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Artemis.json +++ b/resources/profiles/Flashforge/machine/Flashforge Artemis.json @@ -9,5 +9,5 @@ "bed_model": "flashforge_artemis_buildplate_model.stl", "bed_texture": "flashforge_artemis_buildplate_texture.svg", "hotend_model": "", - "default_filament_profile": "Flashforge Generic PETG; Flashforge Generic PLA" + "default_filament_profile": "Generic PETG @Flashforge; Generic PLA @Flashforge" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json index 59c227c431..5ffbd6a7fc 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json index 9af2bb705b..ce7727209f 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json index e25ed9f229..e747961d1e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json index fb960b8d27..620fb3dec3 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json index b9343cf430..43c07989c6 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json index 7111452aa9..71d101c355 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json index 4456789cce..54e03d72fe 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json @@ -117,7 +117,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M25", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "machine_start_gcode": "M118 X10 Y10 Z10\nM140 S[bed_temperature_initial_layer_single]; set initial bed temp\nM104 S[nozzle_temperature_initial_layer] T0; set initial extruder temp\nM107; disable cooling fan\nG90; set to absolute positioning\nG28; home axes\nM132 X Y A B; recall home offsets from EPROM\nG1 Z50.0 F420; adjust Z\nG161 X Y F3300\nM7; wait for bed to stabilize\nM6 T0; wait for extruder to stabilize\nM651 S255; start case fan\nG1 Z0.3 F3600; move down to purge\nG92 E0; zero extruders\nG1 X120 Y-125 E20 F2000; extrude a line of filament across the front edge of the bed\nG1 X130 Y-125 F180; wait for ooze\nG1 X140 Y-125 F5000; fast wipe\nG1 Z1 F100; lift\nG92 E0; zero extruders again\nG1 E-1.0000 F1800", "machine_end_gcode": "M104 S0 T0; cool down extruder\nM140 S0 T0; cool down bed\nG162 Z F1800\nG28 X Y; home axes\nM132 X Y A B; recall home offsets from EPROM\nM652; turn off rear fan\nG91; set to relative positioning\nM18; disable stepper motors", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 2s.json b/resources/profiles/Flashforge/machine/Flashforge Guider 2s.json index 38c0f3c667..4c99585c03 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 2s.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 2s.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g2s_buildplate_model.stl", "bed_texture": "flashforge_g2s_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" + "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json index b8388ba7c4..dcde8504e9 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json @@ -18,7 +18,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U" + "Generic PLA @Flashforge G3U" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json index f2b89e3585..2736b59737 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json @@ -12,7 +12,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json index 1076239de4..684474af9d 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json @@ -12,7 +12,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.8 Nozzle" + "Generic PLA @Flashforge G3U 0.8 Nozzle" ], "default_print_profile": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json index a3bc7d0b68..a830f2db98 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g3u_buildplate_model.stl", "bed_texture": "flashforge_g3u_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" + "default_materials": "FusRock NexPA-CF25;FusRock PAHT-CF;FusRock PAHT-CF @G3U 0.6 Nozzle;FusRock PET-CF;FusRock PET-CF @G3U 0.6 Nozzle;FusRock S-Multi;FusRock S-PAHT;Generic ABS @Flashforge G3U;Generic ABS @Flashforge G3U 0.6 Nozzle;Generic ASA @Flashforge G3U;Generic ASA @Flashforge G3U 0.6 Nozzle;Generic HIPS @Flashforge;Generic HIPS @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U;Generic PETG @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U 0.8 Nozzle;Generic PETG-CF @Flashforge G3U;Generic PETG-CF @Flashforge G3U 0.6 Nozzle;Generic PETG-CF @Flashforge G3U 0.8 Nozzle;Generic PLA @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA-CF @Flashforge G3U 0.6 Nozzle;Generic PLA-CF @Flashforge G3U 0.8 Nozzle;Generic PVA @Flashforge;Polymaker CoPA;Polymaker S1" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json index 2ee3538c7a..b7a7d5f6ba 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json index b20d6ce763..f13d0aa125 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U" + "Generic PLA @Flashforge G3U" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json index 452673eb55..22148f62db 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json index 92bee1b7dc..4eb27093aa 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json index 3570045562..56a63623fd 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json index f61d3d7e77..64853e95fa 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json index 3eee06cb24..4fbf0d684e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json index 35e7f5b067..9c0b57c05c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U" + "Generic PLA @Flashforge G3U" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json index e355db941c..58daabb444 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json index 5ea36cfca8..49756682ba 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json index 21ae8e77fa..8c1a60781b 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json index 660d3c342b..1140b773e3 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Flashforge Generic PLA @G3U 0.6 Nozzle" + "Generic PLA @Flashforge G3U 0.6 Nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json index 14ce7cead3..4bcdc78d4a 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g4pro_buildplate_model.stl", "bed_texture": "flashforge_g4pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" + "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4.json b/resources/profiles/Flashforge/machine/Flashforge Guider4.json index 7b5248e14b..0cd89727d1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g4pro_buildplate_model.stl", "bed_texture": "flashforge_g4pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Flashforge Generic PVA;Flashforge Generic HIPS;Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG @G3U;Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA @G3U;Flashforge Generic ASA @G3U;Flashforge Generic ABS @G3U;FusRock Generic PET-CF;FusRock Generic PAHT-CF;FusRock Generic NexPA-CF25;FusRock Generic S-Multi;FusRock Generic S-PAHT;Polymaker Generic CoPA;Polymaker Generic S1" + "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1" } diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json index 6002dfb72e..2808e866e3 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer5m_common.json @@ -94,7 +94,7 @@ "machine_pause_gcode": "M25", "support_multi_bed_types": "1", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", diff --git a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json index ea865c4387..7e2e700885 100644 --- a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json +++ b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json @@ -124,7 +124,7 @@ "1" ], "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M", "bed_exclude_area": [ diff --git a/resources/profiles/Flashforge/machine/fdm_klipper_common.json b/resources/profiles/Flashforge/machine/fdm_klipper_common.json index 237f4b54c7..3126f70c76 100644 --- a/resources/profiles/Flashforge/machine/fdm_klipper_common.json +++ b/resources/profiles/Flashforge/machine/fdm_klipper_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "Flashforge Generic ABS" + "Generic ABS @Flashforge" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M", "bed_exclude_area": [ diff --git a/resources/profiles/FlyingBear.json b/resources/profiles/FlyingBear.json index d93bc00e57..5be5a8d4a3 100644 --- a/resources/profiles/FlyingBear.json +++ b/resources/profiles/FlyingBear.json @@ -1,6 +1,6 @@ { "name": "FlyingBear", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "1", "description": "FlyingBear configurations", "machine_model_list": [ @@ -245,32 +245,32 @@ "sub_path": "filament/S1/fdm_filament_tpu_other @S1.json" }, { - "name": "FlyingBear Generic ABS", - "sub_path": "filament/FlyingBear Generic ABS.json" + "name": "Generic ABS @FlyingBear", + "sub_path": "filament/Generic ABS @FlyingBear.json" }, { - "name": "FlyingBear Generic PA-CF", - "sub_path": "filament/FlyingBear Generic PA-CF.json" + "name": "Generic PA-CF @FlyingBear", + "sub_path": "filament/Generic PA-CF @FlyingBear.json" }, { - "name": "FlyingBear Generic PC", - "sub_path": "filament/FlyingBear Generic PC.json" + "name": "Generic PC @FlyingBear", + "sub_path": "filament/Generic PC @FlyingBear.json" }, { - "name": "FlyingBear Generic PETG", - "sub_path": "filament/FlyingBear Generic PETG.json" + "name": "Generic PETG @FlyingBear", + "sub_path": "filament/Generic PETG @FlyingBear.json" }, { - "name": "FlyingBear Generic PLA", - "sub_path": "filament/FlyingBear Generic PLA.json" + "name": "Generic PLA @FlyingBear", + "sub_path": "filament/Generic PLA @FlyingBear.json" }, { "name": "FlyingBear PLA Hyper", "sub_path": "filament/FlyingBear PLA Hyper.json" }, { - "name": "FlyingBear Generic TPU", - "sub_path": "filament/FlyingBear Generic TPU.json" + "name": "Generic TPU @FlyingBear", + "sub_path": "filament/Generic TPU @FlyingBear.json" }, { "name": "FlyingBear ABS @Ghost7", diff --git a/resources/profiles/FlyingBear/filament/FlyingBear PLA Hyper.json b/resources/profiles/FlyingBear/filament/FlyingBear PLA Hyper.json index 6d3f9019b2..a125ff3ad2 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear PLA Hyper.json +++ b/resources/profiles/FlyingBear/filament/FlyingBear PLA Hyper.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper", "from": "system", "setting_id": "72RZHGo7eACm2tN5", - "filament_id": "GFL99", + "filament_id": "OFD9taow", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic ABS.json b/resources/profiles/FlyingBear/filament/Generic ABS @FlyingBear.json similarity index 69% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic ABS.json rename to resources/profiles/FlyingBear/filament/Generic ABS @FlyingBear.json index 7a296fea35..b0de37a64b 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic ABS.json +++ b/resources/profiles/FlyingBear/filament/Generic ABS @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic ABS", + "name": "Generic ABS @FlyingBear", "inherits": "fdm_filament_abs", + "renamed_from": "FlyingBear Generic ABS", "from": "system", - "setting_id": "TDBNmmGSexhJjBVm", - "filament_id": "GFB99", + "setting_id": "2aW5bka7pvQhHGqF", + "filament_id": "OFY9muEs", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_flow_ratio": [ "0.94" ], diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic PA-CF.json b/resources/profiles/FlyingBear/filament/Generic PA-CF @FlyingBear.json similarity index 72% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic PA-CF.json rename to resources/profiles/FlyingBear/filament/Generic PA-CF @FlyingBear.json index 4fe521fcce..37448910ed 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic PA-CF.json +++ b/resources/profiles/FlyingBear/filament/Generic PA-CF @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic PA-CF", + "name": "Generic PA-CF @FlyingBear", "inherits": "fdm_filament_pa", + "renamed_from": "FlyingBear Generic PA-CF", "from": "system", - "setting_id": "lpa58hsu9IB697v8", - "filament_id": "GFN98", + "setting_id": "5hw49IVGTMbie2Zr", + "filament_id": "OFQLcbps", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_type": [ "PA-CF" ], diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic PC.json b/resources/profiles/FlyingBear/filament/Generic PC @FlyingBear.json similarity index 67% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic PC.json rename to resources/profiles/FlyingBear/filament/Generic PC @FlyingBear.json index 92227f4254..926494718b 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic PC.json +++ b/resources/profiles/FlyingBear/filament/Generic PC @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic PC", + "name": "Generic PC @FlyingBear", "inherits": "fdm_filament_pc", + "renamed_from": "FlyingBear Generic PC", "from": "system", - "setting_id": "MkIN95sonzI0vNXT", - "filament_id": "GFC99", + "setting_id": "HU6kkNtEXGubYV0U", + "filament_id": "OFLakOUI", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_max_volumetric_speed": [ "12" ], diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic PETG.json b/resources/profiles/FlyingBear/filament/Generic PETG @FlyingBear.json similarity index 80% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic PETG.json rename to resources/profiles/FlyingBear/filament/Generic PETG @FlyingBear.json index 2bd49d16a1..77079afc33 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic PETG.json +++ b/resources/profiles/FlyingBear/filament/Generic PETG @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic PETG", + "name": "Generic PETG @FlyingBear", "inherits": "fdm_filament_pet", + "renamed_from": "FlyingBear Generic PETG", "from": "system", - "setting_id": "id0y4kfJciWjOwh6", - "filament_id": "GFG99", + "setting_id": "D5Zk6ykY8TX3gs0Z", + "filament_id": "OFYPdQJh", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "reduce_fan_stop_start_freq": [ "1" ], diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json b/resources/profiles/FlyingBear/filament/Generic PLA @FlyingBear.json similarity index 69% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json rename to resources/profiles/FlyingBear/filament/Generic PLA @FlyingBear.json index d41a0cdaa6..159f3da22b 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json +++ b/resources/profiles/FlyingBear/filament/Generic PLA @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic PLA", + "name": "Generic PLA @FlyingBear", "inherits": "fdm_filament_pla", + "renamed_from": "FlyingBear Generic PLA", "from": "system", - "setting_id": "yCGisctQQwASw8kc", - "filament_id": "GFL99", + "setting_id": "g7zPgD6P3bbwm5gv", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_flow_ratio": [ "0.94" ], diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic TPU.json b/resources/profiles/FlyingBear/filament/Generic TPU @FlyingBear.json similarity index 66% rename from resources/profiles/FlyingBear/filament/FlyingBear Generic TPU.json rename to resources/profiles/FlyingBear/filament/Generic TPU @FlyingBear.json index 1ae309f9e9..c33b3757be 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic TPU.json +++ b/resources/profiles/FlyingBear/filament/Generic TPU @FlyingBear.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "FlyingBear Generic TPU", + "name": "Generic TPU @FlyingBear", "inherits": "fdm_filament_tpu", + "renamed_from": "FlyingBear Generic TPU", "from": "system", - "setting_id": "84YwyW2C94NdN1zl", - "filament_id": "GFU99", + "setting_id": "Xdx2FIIQiqSz7DpN", + "filament_id": "OFgbpcy9", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_max_volumetric_speed": [ "3" ], diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear ABS @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear ABS @Ghost7.json index 814a100880..bfb316494f 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear ABS @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear ABS @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs @Ghost7", "from": "system", "setting_id": "UyTzid0zVMCxSrgx", - "filament_id": "GFB99", + "filament_id": "OFm4ysMO", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PA-CF @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PA-CF @Ghost7.json index ecbff8839e..f8c0bcde19 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PA-CF @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PA-CF @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa @Ghost7", "from": "system", "setting_id": "NZwDOWmMdBYEejNQ", - "filament_id": "GFN98", + "filament_id": "OFQEGL7z", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PC @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PC @Ghost7.json index 5a72ae3680..6dd9a695bf 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PC @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PC @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc @Ghost7", "from": "system", "setting_id": "QYOEUrnmNMUcVOVF", - "filament_id": "GFC99", + "filament_id": "OFFX1DRD", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PETG Basic @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PETG Basic @Ghost7.json index 6c727db151..c03f7a09ee 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PETG Basic @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PETG Basic @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet @Ghost7", "from": "system", "setting_id": "k2os2FPNl8K7vTZN", - "filament_id": "GFG99", + "filament_id": "OFf6ynfH", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Basic @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Basic @Ghost7.json index 41f16faf65..85a926f7e9 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Basic @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Basic @Ghost7.json @@ -5,7 +5,7 @@ "renamed_from": "FlyingBear PLA @Ghost7", "from": "system", "setting_id": "3JBTG6IDrBCnvIhf", - "filament_id": "GFL99", + "filament_id": "OF3fwO8b", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Hyper @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Hyper @Ghost7.json index 488cda963c..eb744fd971 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Hyper @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear PLA Hyper @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper @Ghost7", "from": "system", "setting_id": "qQZUolZHgJxgLo17", - "filament_id": "GFL99", + "filament_id": "OFD9taow", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear TPU Basic @Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear TPU Basic @Ghost7.json index 8b66f6d1ca..6c7ebbab2e 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear TPU Basic @Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/FlyingBear TPU Basic @Ghost7.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu @Ghost7", "from": "system", "setting_id": "wQQncT0OCAktGyHr", - "filament_id": "GFU99", + "filament_id": "OFHf2lKK", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear ABS @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear ABS @S1.json index a04e655f4b..7c2a4dc745 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear ABS @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear ABS @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs @S1", "from": "system", "setting_id": "7dtepGnoDDAdPtUh", - "filament_id": "GFB99", + "filament_id": "OFm4ysMO", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PA-CF @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PA-CF @S1.json index f24c0d882e..852af29fdd 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PA-CF @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PA-CF @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa @S1", "from": "system", "setting_id": "CLggyaDcebZSbqIH", - "filament_id": "GFN98", + "filament_id": "OFQEGL7z", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PC @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PC @S1.json index 54fb8a7ca1..a546a5ed5b 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PC @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PC @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc @S1", "from": "system", "setting_id": "bPeSARy9AGqM8Y32", - "filament_id": "GFC99", + "filament_id": "OFFX1DRD", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PETG @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PETG @S1.json index 77bc4b151f..206929433a 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PETG @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PETG @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet @S1", "from": "system", "setting_id": "yKU5mMW0nKvNH98B", - "filament_id": "GFG99", + "filament_id": "OFDgQaca", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json index 3c3fbd5af8..4f8637c29d 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla @S1", "from": "system", "setting_id": "k58jL17n8cOla3Gd", - "filament_id": "GFL99", + "filament_id": "OFilD4bP", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA Hyper @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA Hyper @S1.json index 06148f4f70..82978a61be 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA Hyper @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA Hyper @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper @S1", "from": "system", "setting_id": "h8XGgMBjEwxNkldf", - "filament_id": "GFL99", + "filament_id": "OFD9taow", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear TPU @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear TPU @S1.json index 2cd4a9e943..27bc1a6ba5 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear TPU @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear TPU @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu @S1", "from": "system", "setting_id": "IVFpAlGo8KButueJ", - "filament_id": "GFU99", + "filament_id": "OFYezc6s", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/FlyingBear/filament/S1/Other ABS @S1.json b/resources/profiles/FlyingBear/filament/S1/Other ABS @S1.json index 7e37ab1996..7dedb1f5cf 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other ABS @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other ABS @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs_other @S1", "from": "system", "setting_id": "Nadd5NX7eDvEnlKO", - "filament_id": "GFB99", + "filament_id": "OFYuowge", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PA-CF @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PA-CF @S1.json index 8eff7046ea..0e4cace2f1 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PA-CF @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PA-CF @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa_other @S1", "from": "system", "setting_id": "sSKkzXv1cn33fF7p", - "filament_id": "GFN98", + "filament_id": "OFkAltI8", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PC @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PC @S1.json index 9a09e1c0d5..a2dfa6158b 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PC @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PC @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc_other @S1", "from": "system", "setting_id": "mHuxaHppNFZbldHD", - "filament_id": "GFC99", + "filament_id": "OFyRCIMh", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PETG @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PETG @S1.json index b610388077..f2e5665dc4 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PETG @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PETG @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet_other @S1", "from": "system", "setting_id": "Ko5q6BgADth36RJC", - "filament_id": "GFG99", + "filament_id": "OFDRpXLZ", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json index 1df8312686..7b767cf298 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_other @S1", "from": "system", "setting_id": "sayo3sMQKH4ZdhEk", - "filament_id": "GFL99", + "filament_id": "OFGJ1nxs", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PLA Hyper @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PLA Hyper @S1.json index b9913afec4..1104767ce9 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PLA Hyper @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PLA Hyper @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper_other @S1", "from": "system", "setting_id": "2QHCKH0yDmBzpQnY", - "filament_id": "GFL99", + "filament_id": "OFklJcWK", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/FlyingBear/filament/S1/Other TPU @S1.json b/resources/profiles/FlyingBear/filament/S1/Other TPU @S1.json index aa56b7f0f7..4202a54091 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other TPU @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other TPU @S1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu_other @S1", "from": "system", "setting_id": "wh8PHrEbFYKsQxo0", - "filament_id": "GFU99", + "filament_id": "OFwVVKEV", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json index 633e17dd93..c5ac0140a5 100644 --- a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6 0.4 nozzle.json @@ -122,7 +122,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ - "FlyingBear Generic PLA" + "Generic PLA @FlyingBear" ], "machine_start_gcode": "M220 S100 ;reset feedrate\nM221 S100 ;reset flowrate\nG21 ;set units to millimeters\nG90 ;use absolute coordinates\nM82 ;absolute extrusion mode\nM107 ;turn off colling fan\n\nM140 S[bed_temperature_initial_layer] ;set bed temperature continue without waiting\nM104 S[nozzle_temperature_initial_layer] ;set hotend temperature continue without waiting\n\nG28 ;home\nG1 Z2 F1500 ;raise z\nG92 E0 ;reset extruder\n\nM190 S[bed_temperature_initial_layer] ;wait for bed temperature\nM109 S[nozzle_temperature_initial_layer] ;wait for hotend temperature\n\nG1 X20 Y20 F5000 ;start position \nG1 Z0.28 F1500 ;lower z\nG1 E4 F500 ;prime the filament\n\nG1 X20 Y20.0 Z0.28 F3000.0 ;start position \nG1 X20 Y170.0 Z0.28 F1500.0 E12 ;1st line\nG1 X20.3 F1500\nG1 X20.3 Y20.0 Z0.28 F1500.0 E18 ;2nd line\n\nG92 E0 ;reset extruder\nG1 Z2 F1500 ;raise z\nG92 E0 ;reset extruder\n", "machine_end_gcode": "G91 ;use relative coordinates\nG1 E-4 F1500 ;retract the filament\nG1 X5 Y5 Z0.2 F5000 ;wipe\nG1 Z5 F1500 ;raise z\nG90 ;use absolute coordinates\nG1 X10 Y210 F5000 ;park print head\n\nM107 ;turn off fan\nM104 S0 ;turn off hotend\nM140 S0 ;turn off heatbed\nM84 ;disable motors", diff --git a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6.json b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6.json index 3b1968c724..18a5c27f14 100644 --- a/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6.json +++ b/resources/profiles/FlyingBear/machine/FlyingBear Ghost 6.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear Ghost 6-bed.stl", "bed_texture": "FlyingBear Ghost 6-texture.png", "hotend_model": "", - "default_materials": "FlyingBear Generic ABS;FlyingBear Generic PA-CF;FlyingBear Generic PC;FlyingBear Generic PETG;FlyingBear Generic PLA;FlyingBear Generic TPU" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" } diff --git a/resources/profiles/FlyingBear/machine/FlyingBear Reborn3.json b/resources/profiles/FlyingBear/machine/FlyingBear Reborn3.json index e75b8d0697..43dd2de3d4 100644 --- a/resources/profiles/FlyingBear/machine/FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/machine/FlyingBear Reborn3.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear Reborn3-bed.stl", "bed_texture": "FlyingBear Reborn3-texture.png", "hotend_model": "", - "default_materials": "FlyingBear Generic ABS;FlyingBear Generic PA-CF;FlyingBear Generic PC;FlyingBear Generic PETG;FlyingBear Generic PLA;FlyingBear Generic TPU" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" } diff --git a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json index 959a8f1193..795743dc1f 100644 --- a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json +++ b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear Ghost7-bed.stl", "bed_texture": "FlyingBear Ghost7-texture.png", "hotend_model": "", - "default_materials": "FlyingBear Generic ABS;FlyingBear Generic PA-CF;FlyingBear Generic PC;FlyingBear Generic PETG;FlyingBear Generic PLA;FlyingBear Generic TPU" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" } diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json index 2063aab681..53ca3accb9 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear S1-bed.stl", "bed_texture": "FlyingBear S1-texture.png", "hotend_model": "", - "default_materials": "FlyingBear Generic ABS;FlyingBear Generic PA-CF;FlyingBear Generic PC;FlyingBear Generic PETG;FlyingBear Generic PLA;FlyingBear Generic TPU" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" } diff --git a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json index 8053ff22d0..d9170b7fec 100644 --- a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "FlyingBear Generic PLA" + "Generic PLA @FlyingBear" ], "default_print_profile": "0.20mm Standard @FlyingBear Reborn3", "deretraction_speed": [ diff --git a/resources/profiles/FlyingBear/machine/fdm_machine_common.json b/resources/profiles/FlyingBear/machine/fdm_machine_common.json index 28e9665346..9b3574e7de 100644 --- a/resources/profiles/FlyingBear/machine/fdm_machine_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_machine_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "FlyingBear Generic PLA" + "Generic PLA @FlyingBear" ], "default_print_profile": "0.20mm Standard @FlyingBear Reborn3", "deretraction_speed": [ diff --git a/resources/profiles/Folgertech.json b/resources/profiles/Folgertech.json index 125cba3d46..a20dc8992e 100644 --- a/resources/profiles/Folgertech.json +++ b/resources/profiles/Folgertech.json @@ -1,6 +1,6 @@ { "name": "Folgertech", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Folgertech configurations", "machine_model_list": [ diff --git a/resources/profiles/Folgertech/machine/Folgertech i3 0.6 nozzle.json b/resources/profiles/Folgertech/machine/Folgertech i3 0.6 nozzle.json index 40cf5fbf82..59fb023448 100644 --- a/resources/profiles/Folgertech/machine/Folgertech i3 0.6 nozzle.json +++ b/resources/profiles/Folgertech/machine/Folgertech i3 0.6 nozzle.json @@ -12,7 +12,7 @@ "printer_variant": "0.6", "printable_area": [ "0x0", - "20x0", + "200x0", "200x200", "0x200" ], diff --git a/resources/profiles/Ginger Additive.json b/resources/profiles/Ginger Additive.json index ff4c3bec09..249c3e9906 100644 --- a/resources/profiles/Ginger Additive.json +++ b/resources/profiles/Ginger Additive.json @@ -1,6 +1,6 @@ { "name": "Ginger Additive", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "1", "description": "Ginger configuration", "machine_model_list": [ @@ -67,12 +67,12 @@ "sub_path": "filament/fdm_filament_common.json" }, { - "name": "Ginger Generic PETG", - "sub_path": "filament/Ginger Generic PETG.json" + "name": "Generic PETG @Ginger", + "sub_path": "filament/Generic PETG @Ginger.json" }, { - "name": "Ginger Generic PLA", - "sub_path": "filament/Ginger Generic PLA.json" + "name": "Generic PLA @Ginger", + "sub_path": "filament/Generic PLA @Ginger.json" } ] } diff --git a/resources/profiles/Ginger Additive/filament/Ginger Generic PETG.json b/resources/profiles/Ginger Additive/filament/Generic PETG @Ginger.json similarity index 92% rename from resources/profiles/Ginger Additive/filament/Ginger Generic PETG.json rename to resources/profiles/Ginger Additive/filament/Generic PETG @Ginger.json index a84183df4d..b9e6ce122c 100644 --- a/resources/profiles/Ginger Additive/filament/Ginger Generic PETG.json +++ b/resources/profiles/Ginger Additive/filament/Generic PETG @Ginger.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Ginger Generic PETG", - "renamed_from": "Ginger Generic rPETG", + "name": "Generic PETG @Ginger", + "renamed_from": "Ginger Generic rPETG;Ginger Generic PETG", "inherits": "fdm_filament_common", "from": "system", - "setting_id": "ue95N2e65rdp5K6c", + "setting_id": "rogjLzHbtvooz2lw", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_vendor": [ "Generic" diff --git a/resources/profiles/Ginger Additive/filament/Ginger Generic PLA.json b/resources/profiles/Ginger Additive/filament/Generic PLA @Ginger.json similarity index 92% rename from resources/profiles/Ginger Additive/filament/Ginger Generic PLA.json rename to resources/profiles/Ginger Additive/filament/Generic PLA @Ginger.json index 1aaacd7e1e..61e91d1f1e 100644 --- a/resources/profiles/Ginger Additive/filament/Ginger Generic PLA.json +++ b/resources/profiles/Ginger Additive/filament/Generic PLA @Ginger.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Ginger Generic PLA", - "renamed_from": "Ginger Generic rPLA", + "name": "Generic PLA @Ginger", + "renamed_from": "Ginger Generic rPLA;Ginger Generic PLA", "inherits": "fdm_filament_common", "from": "system", - "setting_id": "Z1scjKDBFoDaTa2C", + "setting_id": "tu6pOYYSBlZCvmbH", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_vendor": [ "Generic" diff --git a/resources/profiles/Ginger Additive/filament/fdm_filament_common.json b/resources/profiles/Ginger Additive/filament/fdm_filament_common.json index 8c906528a0..71e447d01e 100644 --- a/resources/profiles/Ginger Additive/filament/fdm_filament_common.json +++ b/resources/profiles/Ginger Additive/filament/fdm_filament_common.json @@ -2,7 +2,6 @@ "type": "filament", "name": "fdm_filament_common", "from": "system", - "filament_id": "P510eff9", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Ginger Additive/machine/Ginger G1.json b/resources/profiles/Ginger Additive/machine/Ginger G1.json index 54756fd549..e379f536e4 100644 --- a/resources/profiles/Ginger Additive/machine/Ginger G1.json +++ b/resources/profiles/Ginger Additive/machine/Ginger G1.json @@ -8,5 +8,5 @@ "family": "Ginger", "bed_model": "Ginger_G1.stl", "bed_texture": "Ginger_One_texture.svg", - "default_materials": "Ginger Generic PETG;Ginger Generic PLA" + "default_materials": "Generic PETG @Ginger;Generic PLA @Ginger" } diff --git a/resources/profiles/Ginger Additive/machine/Ginger_G1_common.json b/resources/profiles/Ginger Additive/machine/Ginger_G1_common.json index 8b218915d1..a6fcccb284 100644 --- a/resources/profiles/Ginger Additive/machine/Ginger_G1_common.json +++ b/resources/profiles/Ginger Additive/machine/Ginger_G1_common.json @@ -1,13 +1,12 @@ { "type": "machine", "name": "Ginger_G1_common", - "renamed_from": "ginger_one_common", "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", "printer_settings_id": "Ginger_G1_common", "default_filament_profile": [ - "Ginger Generic PLA" + "Generic PLA @Ginger" ], "default_print_profile": "1.50mm Standard @Ginger G1", "deretraction_speed": [ diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index 7ae4c46fb4..06d0629ffc 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -1,6 +1,6 @@ { "name": "InfiMech", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "1", "description": "InfiMech configurations", "machine_model_list": [ @@ -305,40 +305,40 @@ "sub_path": "filament/HSN/fdm_filament_tpu_other @HSN.json" }, { - "name": "InfiMech Generic ABS", - "sub_path": "filament/InfiMech Generic ABS.json" + "name": "Generic ABS @InfiMech", + "sub_path": "filament/Generic ABS @InfiMech.json" }, { "name": "Other ABS", "sub_path": "filament/Other ABS.json" }, { - "name": "InfiMech Generic PA-CF", - "sub_path": "filament/InfiMech Generic PA-CF.json" + "name": "Generic PA-CF @InfiMech", + "sub_path": "filament/Generic PA-CF @InfiMech.json" }, { "name": "Other PA-CF", "sub_path": "filament/Other PA-CF.json" }, { - "name": "InfiMech Generic PC", - "sub_path": "filament/InfiMech Generic PC.json" + "name": "Generic PC @InfiMech", + "sub_path": "filament/Generic PC @InfiMech.json" }, { "name": "Other PC", "sub_path": "filament/Other PC.json" }, { - "name": "InfiMech Generic PETG", - "sub_path": "filament/InfiMech Generic PETG.json" + "name": "Generic PETG @InfiMech", + "sub_path": "filament/Generic PETG @InfiMech.json" }, { "name": "Other PETG", "sub_path": "filament/Other PETG.json" }, { - "name": "InfiMech Generic PLA", - "sub_path": "filament/InfiMech Generic PLA.json" + "name": "Generic PLA @InfiMech", + "sub_path": "filament/Generic PLA @InfiMech.json" }, { "name": "InfiMech PLA Hyper", @@ -353,8 +353,8 @@ "sub_path": "filament/Other PLA.json" }, { - "name": "InfiMech Generic TPU", - "sub_path": "filament/InfiMech Generic TPU.json" + "name": "Generic TPU @InfiMech", + "sub_path": "filament/Generic TPU @InfiMech.json" }, { "name": "Other TPU", diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech ABS @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech ABS @EX+APS.json index ab07650434..715649fabd 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech ABS @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech ABS @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs @EX+APS", "from": "system", "setting_id": "3EdHfL9KE4oRVHB7", - "filament_id": "GFB99", + "filament_id": "OF0c7mnL", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PA-CF @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PA-CF @EX+APS.json index 0173f7ee05..677e39587e 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PA-CF @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PA-CF @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa @EX+APS", "from": "system", "setting_id": "6YMXdKicP2hGUUJn", - "filament_id": "GFN98", + "filament_id": "OFnXrkhA", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PC @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PC @EX+APS.json index c68955287b..3ce073a006 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PC @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PC @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc @EX+APS", "from": "system", "setting_id": "GsYpyooWb6ymAb36", - "filament_id": "GFC99", + "filament_id": "OFf6ZEvu", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PETG @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PETG @EX+APS.json index 39d510f085..993574d86c 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PETG @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PETG @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet @EX+APS", "from": "system", "setting_id": "sNsRp3vHhcWAxp7d", - "filament_id": "GFG99", + "filament_id": "OFrLiqiM", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Basic @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Basic @EX+APS.json index 8d715771b9..12b79b7722 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Basic @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Basic @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla @EX+APS", "from": "system", "setting_id": "UTrjyqqetOSYNZxJ", - "filament_id": "GFL99", + "filament_id": "OFObG16Q", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Hyper @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Hyper @EX+APS.json index cbc94ccedd..b857cabc2b 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Hyper @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech PLA Hyper @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper @EX+APS", "from": "system", "setting_id": "p08bW50lbzMjwL5B", - "filament_id": "GFL99", + "filament_id": "OF3ydJTT", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/EX+APS/InfiMech TPU Basic @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/InfiMech TPU Basic @EX+APS.json index 9632d002fb..1396c07546 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/InfiMech TPU Basic @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/InfiMech TPU Basic @EX+APS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu @EX+APS", "from": "system", "setting_id": "fy9sPlaVkaXHBxbH", - "filament_id": "GFU99", + "filament_id": "OFbSZBOi", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_pet @EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_pet @EX+APS.json index 396373accc..0d8b7f36ef 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_pet @EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_pet @EX+APS.json @@ -44,7 +44,7 @@ "12" ], "filament_type": [ - "PETG Basic" + "PETG" ], "filament_density": [ "1.27" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech ABS @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech ABS @EX.json index 05b1f4e017..4aa2e82fd8 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech ABS @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech ABS @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs @EX", "from": "system", "setting_id": "e6st01mMFr98LVEH", - "filament_id": "GFB99", + "filament_id": "OF0c7mnL", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech PA-CF @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech PA-CF @EX.json index 3042fe20f8..e328da4f73 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech PA-CF @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech PA-CF @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa @EX", "from": "system", "setting_id": "qPCd5oTrCmZi63Ng", - "filament_id": "GFN98", + "filament_id": "OFnXrkhA", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech PC @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech PC @EX.json index b1c46585e0..438743bac4 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech PC @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech PC @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc @EX", "from": "system", "setting_id": "Uc2o223YSyShp7EI", - "filament_id": "GFC99", + "filament_id": "OFf6ZEvu", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech PETG @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech PETG @EX.json index 47172fa13a..30c38c5a07 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech PETG @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech PETG @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet @EX", "from": "system", "setting_id": "5vqLJrKLKv40sT7y", - "filament_id": "GFG99", + "filament_id": "OFrLiqiM", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech PLA Basic @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech PLA Basic @EX.json index 071d0eb53c..f0ab2e094d 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech PLA Basic @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech PLA Basic @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla @EX", "from": "system", "setting_id": "bGOpriWvEFZOmqR4", - "filament_id": "GFL99", + "filament_id": "OFObG16Q", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech PLA Hyper @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech PLA Hyper @EX.json index 1fab11094e..3c88c1af03 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech PLA Hyper @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech PLA Hyper @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper @EX", "from": "system", "setting_id": "y8A92Dw8EMplnZAM", - "filament_id": "GFL99", + "filament_id": "OF3ydJTT", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/EX/InfiMech TPU Basic @EX.json b/resources/profiles/InfiMech/filament/EX/InfiMech TPU Basic @EX.json index b72767fc58..fc78851c8b 100644 --- a/resources/profiles/InfiMech/filament/EX/InfiMech TPU Basic @EX.json +++ b/resources/profiles/InfiMech/filament/EX/InfiMech TPU Basic @EX.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu @EX", "from": "system", "setting_id": "vAMeXNwHNVMKYWz3", - "filament_id": "GFU99", + "filament_id": "OFbSZBOi", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/InfiMech/filament/EX/fdm_filament_pet @EX.json b/resources/profiles/InfiMech/filament/EX/fdm_filament_pet @EX.json index c718df9d89..0213942153 100644 --- a/resources/profiles/InfiMech/filament/EX/fdm_filament_pet @EX.json +++ b/resources/profiles/InfiMech/filament/EX/fdm_filament_pet @EX.json @@ -44,7 +44,7 @@ "12" ], "filament_type": [ - "PETG Basic" + "PETG" ], "filament_density": [ "1.27" diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic ABS.json b/resources/profiles/InfiMech/filament/Generic ABS @InfiMech.json similarity index 67% rename from resources/profiles/InfiMech/filament/InfiMech Generic ABS.json rename to resources/profiles/InfiMech/filament/Generic ABS @InfiMech.json index 688f43673d..80b479de75 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic ABS.json +++ b/resources/profiles/InfiMech/filament/Generic ABS @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic ABS", + "name": "Generic ABS @InfiMech", "inherits": "fdm_filament_abs", + "renamed_from": "InfiMech Generic ABS", "from": "system", - "setting_id": "gtJ2ZoV8fxqqOXuv", - "filament_id": "GFB99", + "setting_id": "HRLECASD9Ko4Xxof", + "filament_id": "OFY9muEs", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_flow_ratio": [ "0.94" ], diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic PA-CF.json b/resources/profiles/InfiMech/filament/Generic PA-CF @InfiMech.json similarity index 70% rename from resources/profiles/InfiMech/filament/InfiMech Generic PA-CF.json rename to resources/profiles/InfiMech/filament/Generic PA-CF @InfiMech.json index 74be583957..0c202c609c 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic PA-CF.json +++ b/resources/profiles/InfiMech/filament/Generic PA-CF @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic PA-CF", + "name": "Generic PA-CF @InfiMech", "inherits": "fdm_filament_pa", + "renamed_from": "InfiMech Generic PA-CF", "from": "system", - "setting_id": "k2NSIB3vVUoXGW9F", - "filament_id": "GFN98", + "setting_id": "IRYJpvGGjpF4ofY1", + "filament_id": "OFQLcbps", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_type": [ "PA-CF" ], diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic PC.json b/resources/profiles/InfiMech/filament/Generic PC @InfiMech.json similarity index 64% rename from resources/profiles/InfiMech/filament/InfiMech Generic PC.json rename to resources/profiles/InfiMech/filament/Generic PC @InfiMech.json index 2d2223271c..a37d5db2b7 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic PC.json +++ b/resources/profiles/InfiMech/filament/Generic PC @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic PC", + "name": "Generic PC @InfiMech", "inherits": "fdm_filament_pc", + "renamed_from": "InfiMech Generic PC", "from": "system", - "setting_id": "emj9YLXtmKmeoYJa", - "filament_id": "GFC99", + "setting_id": "W0oujcCps06G6yNB", + "filament_id": "OFLakOUI", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_max_volumetric_speed": [ "12" ], diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic PETG.json b/resources/profiles/InfiMech/filament/Generic PETG @InfiMech.json similarity index 80% rename from resources/profiles/InfiMech/filament/InfiMech Generic PETG.json rename to resources/profiles/InfiMech/filament/Generic PETG @InfiMech.json index 4837c0eb9e..55162d9852 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic PETG.json +++ b/resources/profiles/InfiMech/filament/Generic PETG @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic PETG", + "name": "Generic PETG @InfiMech", "inherits": "fdm_filament_pet", + "renamed_from": "InfiMech Generic PETG", "from": "system", - "setting_id": "rhXq50q3u2YxNRcE", - "filament_id": "GFG99", + "setting_id": "sAi8oKez7NGKo1wy", + "filament_id": "OFYPdQJh", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "reduce_fan_stop_start_freq": [ "1" ], diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json b/resources/profiles/InfiMech/filament/Generic PLA @InfiMech.json similarity index 67% rename from resources/profiles/InfiMech/filament/InfiMech Generic PLA.json rename to resources/profiles/InfiMech/filament/Generic PLA @InfiMech.json index 0fa96a3fca..4d2d7dc402 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json +++ b/resources/profiles/InfiMech/filament/Generic PLA @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic PLA", + "name": "Generic PLA @InfiMech", "inherits": "fdm_filament_pla", + "renamed_from": "InfiMech Generic PLA", "from": "system", - "setting_id": "BHNIPk7Nbl7hXZY1", - "filament_id": "GFL99", + "setting_id": "tdnlzJyNB6zpQS8w", + "filament_id": "OFDSrzZ8", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_flow_ratio": [ "0.94" ], diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic TPU.json b/resources/profiles/InfiMech/filament/Generic TPU @InfiMech.json similarity index 64% rename from resources/profiles/InfiMech/filament/InfiMech Generic TPU.json rename to resources/profiles/InfiMech/filament/Generic TPU @InfiMech.json index f942042dfd..bc2b0c37a8 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic TPU.json +++ b/resources/profiles/InfiMech/filament/Generic TPU @InfiMech.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "InfiMech Generic TPU", + "name": "Generic TPU @InfiMech", "inherits": "fdm_filament_tpu", + "renamed_from": "InfiMech Generic TPU", "from": "system", - "setting_id": "pHS9IcwvsPCnkpaO", - "filament_id": "GFU99", + "setting_id": "kK1S7YP8vgTJeFPO", + "filament_id": "OFgbpcy9", "instantiation": "true", + "filament_vendor": [ + "Generic" + ], "filament_max_volumetric_speed": [ "3" ], diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json index 202565b819..fd57e1f375 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs @HSN", "from": "system", "setting_id": "QnEhnvxibr6g1nou", - "filament_id": "GFB99", + "filament_id": "OF0c7mnL", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json index 3f6524b54c..d798d7803c 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa @HSN", "from": "system", "setting_id": "L1j3mDKXjE2RKO1B", - "filament_id": "GFN98", + "filament_id": "OFnXrkhA", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json index 35a3314a90..41bf6e142f 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc @HSN", "from": "system", "setting_id": "HBNOABPFLninXsW6", - "filament_id": "GFC99", + "filament_id": "OFf6ZEvu", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json index 1997c1b375..7102e440cd 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet @HSN", "from": "system", "setting_id": "DJyFBjQ5n9n1UHv0", - "filament_id": "GFG99", + "filament_id": "OFrLiqiM", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json index f3118fe1d6..d2803e44b4 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla @HSN", "from": "system", "setting_id": "NWKMG5q4ITfHcYOD", - "filament_id": "GFL99", + "filament_id": "OFUYCqtB", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json index a7988eaa70..6f91f0f360 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper @HSN", "from": "system", "setting_id": "fAw5pB53L8ZT1Fkm", - "filament_id": "GFL99", + "filament_id": "OF3ydJTT", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json index 098ed99ae0..7ba202db61 100644 --- a/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu @HSN", "from": "system", "setting_id": "CvTHZpKuTaGS186F", - "filament_id": "GFU99", + "filament_id": "OFIVWJPm", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json index c7b6451fab..7ba69d8119 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs_other @HSN", "from": "system", "setting_id": "IuZcFrVQ2rJoMDLP", - "filament_id": "GFB99", + "filament_id": "OFYuowge", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json index fe5f2097d5..091152a3e2 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa_other @HSN", "from": "system", "setting_id": "4I0FW5meyC53Xf8n", - "filament_id": "GFN98", + "filament_id": "OFkAltI8", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json index e87712a278..d0319e1a8d 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc_other @HSN", "from": "system", "setting_id": "vUuSuioOUXsg2P3p", - "filament_id": "GFC99", + "filament_id": "OFyRCIMh", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json index 0a4f102aa3..f9adba5c1e 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet_other @HSN", "from": "system", "setting_id": "lWYq9XssEyY3uWEe", - "filament_id": "GFG99", + "filament_id": "OFDRpXLZ", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json index c775f37bfc..1bc6c1a439 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_other @HSN", "from": "system", "setting_id": "wOExDniXvR7CcF1w", - "filament_id": "GFL99", + "filament_id": "OFGJ1nxs", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json index b3cc531849..53fa4de6e6 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper_other @HSN", "from": "system", "setting_id": "154azDg7YNNWCkNK", - "filament_id": "GFL99", + "filament_id": "OFklJcWK", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json index adbf1cc254..71c277b924 100644 --- a/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu_other @HSN", "from": "system", "setting_id": "0bU2fl92vCQobYnt", - "filament_id": "GFU99", + "filament_id": "OFwVVKEV", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/InfiMech/filament/InfiMech PLA Hyper.json b/resources/profiles/InfiMech/filament/InfiMech PLA Hyper.json index dee081317f..d90023a4bf 100644 --- a/resources/profiles/InfiMech/filament/InfiMech PLA Hyper.json +++ b/resources/profiles/InfiMech/filament/InfiMech PLA Hyper.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper", "from": "system", "setting_id": "j86QMTif4fGujRbg", - "filament_id": "GFL99", + "filament_id": "OF3ydJTT", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/Other ABS.json b/resources/profiles/InfiMech/filament/Other ABS.json index a120f2dda6..897962d0a1 100644 --- a/resources/profiles/InfiMech/filament/Other ABS.json +++ b/resources/profiles/InfiMech/filament/Other ABS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs_other", "from": "system", "setting_id": "nDLB3RZq23limiBn", - "filament_id": "GFB99", + "filament_id": "OFYuowge", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/Other PA-CF.json b/resources/profiles/InfiMech/filament/Other PA-CF.json index 1829ec16bb..43be7b9024 100644 --- a/resources/profiles/InfiMech/filament/Other PA-CF.json +++ b/resources/profiles/InfiMech/filament/Other PA-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa_other", "from": "system", "setting_id": "rgz4LjU9KyvbLhRQ", - "filament_id": "GFN98", + "filament_id": "OFkAltI8", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/InfiMech/filament/Other PC.json b/resources/profiles/InfiMech/filament/Other PC.json index dda6d2def7..be8f684ebf 100644 --- a/resources/profiles/InfiMech/filament/Other PC.json +++ b/resources/profiles/InfiMech/filament/Other PC.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc_other", "from": "system", "setting_id": "VXkW5oukQdBX6B6T", - "filament_id": "GFC99", + "filament_id": "OFyRCIMh", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/InfiMech/filament/Other PETG.json b/resources/profiles/InfiMech/filament/Other PETG.json index 552e3e4fe7..216c4a964c 100644 --- a/resources/profiles/InfiMech/filament/Other PETG.json +++ b/resources/profiles/InfiMech/filament/Other PETG.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet_other", "from": "system", "setting_id": "onLEWi8GYK0avard", - "filament_id": "GFG99", + "filament_id": "OFDRpXLZ", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/InfiMech/filament/Other PLA Hyper.json b/resources/profiles/InfiMech/filament/Other PLA Hyper.json index 4d1aa6c742..9ddd68581a 100644 --- a/resources/profiles/InfiMech/filament/Other PLA Hyper.json +++ b/resources/profiles/InfiMech/filament/Other PLA Hyper.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_Hyper_other", "from": "system", "setting_id": "Iop52BLp5ou8u4QG", - "filament_id": "GFL99", + "filament_id": "OFklJcWK", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/Other PLA.json b/resources/profiles/InfiMech/filament/Other PLA.json index aa1fa0a091..62c32ee9ef 100644 --- a/resources/profiles/InfiMech/filament/Other PLA.json +++ b/resources/profiles/InfiMech/filament/Other PLA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla_other", "from": "system", "setting_id": "2Bl4sfgGJBjNMk37", - "filament_id": "GFL99", + "filament_id": "OFGJ1nxs", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/InfiMech/filament/Other TPU.json b/resources/profiles/InfiMech/filament/Other TPU.json index edbee9b887..1af02b2659 100644 --- a/resources/profiles/InfiMech/filament/Other TPU.json +++ b/resources/profiles/InfiMech/filament/Other TPU.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu_other", "from": "system", "setting_id": "nqDc2q94Q2hwMi7B", - "filament_id": "GFU99", + "filament_id": "OFwVVKEV", "instantiation": "true", "filament_max_volumetric_speed": [ "3" diff --git a/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json index fff3371aba..8b8fd4e586 100644 --- a/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json +++ b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json @@ -8,5 +8,5 @@ "bed_model": "InfiMech TX-bed.stl", "bed_texture": "InfiMech TX-texture.svg", "hotend_model": "", - "default_materials": "InfiMech Generic ABS;InfiMech Generic PA-CF;InfiMech Generic PC;InfiMech Generic PETG;InfiMech Generic PLA;InfiMech Generic TPU" + "default_materials": "Generic ABS @InfiMech;Generic PA-CF @InfiMech;Generic PC @InfiMech;Generic PETG @InfiMech;Generic PLA @InfiMech;Generic TPU @InfiMech" } diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json index 68b3b30e45..a95fea09c0 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "InfiMech Generic PLA" + "Generic PLA @InfiMech" ], "default_print_profile": "0.20mm Standard @InfiMech TX", "deretraction_speed": [ diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json index 570a6aaf2f..35501555bb 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "InfiMech Generic PLA" + "Generic PLA @InfiMech" ], "default_print_profile": "0.20mm Standard @InfiMech TX", "deretraction_speed": [ diff --git a/resources/profiles/InfiMech/machine/InfiMech TX.json b/resources/profiles/InfiMech/machine/InfiMech TX.json index abb93dfe09..c040efcfbb 100644 --- a/resources/profiles/InfiMech/machine/InfiMech TX.json +++ b/resources/profiles/InfiMech/machine/InfiMech TX.json @@ -8,5 +8,5 @@ "bed_model": "InfiMech TX-bed.stl", "bed_texture": "InfiMech TX-texture.svg", "hotend_model": "", - "default_materials": "InfiMech Generic ABS;InfiMech Generic PA-CF;InfiMech Generic PC;InfiMech Generic PETG;InfiMech Generic PLA;InfiMech Generic TPU" + "default_materials": "Generic ABS @InfiMech;Generic PA-CF @InfiMech;Generic PC @InfiMech;Generic PETG @InfiMech;Generic PLA @InfiMech;Generic TPU @InfiMech" } diff --git a/resources/profiles/InfiMech/machine/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/fdm_klipper_common.json index adcb60145f..bbcd27a966 100644 --- a/resources/profiles/InfiMech/machine/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/fdm_klipper_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "InfiMech Generic PLA" + "Generic PLA @InfiMech" ], "default_print_profile": "0.20mm Standard @InfiMech TX", "deretraction_speed": [ diff --git a/resources/profiles/InfiMech/machine/fdm_machine_common.json b/resources/profiles/InfiMech/machine/fdm_machine_common.json index 2462c8f803..c329e930cb 100644 --- a/resources/profiles/InfiMech/machine/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/fdm_machine_common.json @@ -14,7 +14,7 @@ "cooling_tube_length": "5", "cooling_tube_retraction": "91.5", "default_filament_profile": [ - "InfiMech Generic PLA" + "Generic PLA @InfiMech" ], "default_print_profile": "0.20mm Standard @InfiMech TX", "deretraction_speed": [ diff --git a/resources/profiles/LH.json b/resources/profiles/LH.json index 12f8c4cbda..99a7049fa5 100644 --- a/resources/profiles/LH.json +++ b/resources/profiles/LH.json @@ -1,7 +1,7 @@ { "name": "LH", "url": "https://github.com/lhndo/LH-Stinger", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "LH 3D Printer Configuration", "machine_model_list": [ diff --git a/resources/profiles/LH/filament/LHS ABS.json b/resources/profiles/LH/filament/LHS ABS.json index 28fe82243d..2e7ee48e32 100644 --- a/resources/profiles/LH/filament/LHS ABS.json +++ b/resources/profiles/LH/filament/LHS ABS.json @@ -1,7 +1,7 @@ { "name": "LHS ABS", "type": "filament", - "filament_id": "LHF_abs", + "filament_id": "OFztQ7rO", "setting_id": "EQxNYC7BdGEA2iiD", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LH/filament/LHS ASA.json b/resources/profiles/LH/filament/LHS ASA.json index 8d8de19dfa..4cc096cb90 100644 --- a/resources/profiles/LH/filament/LHS ASA.json +++ b/resources/profiles/LH/filament/LHS ASA.json @@ -1,6 +1,6 @@ { "name": "LHS ASA", - "filament_id": "LHF_asa", + "filament_id": "OFaP2SsH", "setting_id": "hoq5bKHUb9DE1ezj", "type": "filament", "from": "system", diff --git a/resources/profiles/LH/filament/LHS PC CF.json b/resources/profiles/LH/filament/LHS PC CF.json index e565b5a9ab..54db9bf7fa 100644 --- a/resources/profiles/LH/filament/LHS PC CF.json +++ b/resources/profiles/LH/filament/LHS PC CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "FOQLD0UX6hUhJBQ0", - "filament_id": "LHF_pccf", + "filament_id": "OFu0fjPJ", "instantiation": "true", "compatible_printers": [ "LH Stinger 0.4 nozzle", diff --git a/resources/profiles/LH/filament/LHS PCTG.json b/resources/profiles/LH/filament/LHS PCTG.json index a2593c22b7..2f2a7d2fd6 100644 --- a/resources/profiles/LH/filament/LHS PCTG.json +++ b/resources/profiles/LH/filament/LHS PCTG.json @@ -1,7 +1,7 @@ { "name": "LHS PCTG", "type": "filament", - "filament_id": "LHF_pctg", + "filament_id": "OFBJAdLw", "setting_id": "dKWttiAQNwymKsIC", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LH/filament/LHS PETG.json b/resources/profiles/LH/filament/LHS PETG.json index 2c960c477c..2956267dab 100644 --- a/resources/profiles/LH/filament/LHS PETG.json +++ b/resources/profiles/LH/filament/LHS PETG.json @@ -1,7 +1,7 @@ { "name": "LHS PETG", "type": "filament", - "filament_id": "LHF_petg", + "filament_id": "OFRJ325z", "setting_id": "aZdY1M44ui7Rtj8r", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LH/filament/LHS PLA.json b/resources/profiles/LH/filament/LHS PLA.json index 285fd76c13..87ef788b7d 100644 --- a/resources/profiles/LH/filament/LHS PLA.json +++ b/resources/profiles/LH/filament/LHS PLA.json @@ -1,7 +1,7 @@ { "name": "LHS PLA", "type": "filament", - "filament_id": "LHF_pla", + "filament_id": "OFyoBZdm", "setting_id": "M8WSwqD1iQkQntpy", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LH/filament/LHS TPU Foamy 78A.json b/resources/profiles/LH/filament/LHS TPU Foamy 78A.json index 47e4c606c6..3be659400a 100644 --- a/resources/profiles/LH/filament/LHS TPU Foamy 78A.json +++ b/resources/profiles/LH/filament/LHS TPU Foamy 78A.json @@ -1,7 +1,7 @@ { "name": "LHS TPU Foamy 78A", "type": "filament", - "filament_id": "LHF_ftpuf", + "filament_id": "OFngcE81", "setting_id": "FWyg21qHmAKeihMn", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LH/filament/LHS TPU.json b/resources/profiles/LH/filament/LHS TPU.json index fc877eb084..f503425bd4 100644 --- a/resources/profiles/LH/filament/LHS TPU.json +++ b/resources/profiles/LH/filament/LHS TPU.json @@ -1,7 +1,7 @@ { "name": "LHS TPU", "type": "filament", - "filament_id": "LHF_ptpu_pl", + "filament_id": "OFIZMQwM", "setting_id": "ILgpZYIqYGH6mqdI", "from": "system", "instantiation": "true", diff --git a/resources/profiles/LONGER.json b/resources/profiles/LONGER.json index 723bb43e91..dbf3cc3277 100644 --- a/resources/profiles/LONGER.json +++ b/resources/profiles/LONGER.json @@ -1,6 +1,6 @@ { "name": "LONGER", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "LONGER configurations", "machine_model_list": [ diff --git a/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10 Plus.json b/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10 Plus.json index c27280bf49..af61062d28 100644 --- a/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10 Plus.json +++ b/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10 Plus.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "F6pgS8fPQFnN4R0n", - "filament_id": "GFLLK10PPETG", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10.json b/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10.json index 48343c508d..114c1aa3f8 100644 --- a/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10.json +++ b/resources/profiles/LONGER/filament/Generic PETG @LONGER LK10.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "hWuf5kvAA5dXSd8f", - "filament_id": "GFLLK10PETG", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10 Plus.json b/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10 Plus.json index 7eccd144bd..01f5024a14 100644 --- a/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10 Plus.json +++ b/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10 Plus.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "N4pabxIYPI8KHgVp", - "filament_id": "GFLLK10PPLA", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10.json b/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10.json index fe91a5388b..9827cce1db 100644 --- a/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10.json +++ b/resources/profiles/LONGER/filament/Generic PLA @LONGER LK10.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "BLf7EiZ9yayoKwJy", - "filament_id": "GFLLK10PLA", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Lulzbot.json b/resources/profiles/Lulzbot.json index 31836580f0..1d8e31dc93 100644 --- a/resources/profiles/Lulzbot.json +++ b/resources/profiles/Lulzbot.json @@ -1,7 +1,7 @@ { "name": "Lulzbot", "url": "https://ohai.lulzbot.com/group/taz-6/", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Lulzbot configurations", "machine_model_list": [ @@ -62,16 +62,16 @@ ], "filament_list": [ { - "name": "Lulzbot 2.85mm ABS", - "sub_path": "filament/Lulzbot 2.85mm ABS.json" + "name": "Generic ABS @Lulzbot", + "sub_path": "filament/Generic ABS @Lulzbot.json" }, { - "name": "Lulzbot 2.85mm PETG", - "sub_path": "filament/Lulzbot 2.85mm PETG.json" + "name": "Generic PETG @Lulzbot", + "sub_path": "filament/Generic PETG @Lulzbot.json" }, { - "name": "Lulzbot 2.85mm PLA", - "sub_path": "filament/Lulzbot 2.85mm PLA.json" + "name": "Generic PLA @Lulzbot", + "sub_path": "filament/Generic PLA @Lulzbot.json" } ], "machine_list": [ diff --git a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm ABS.json b/resources/profiles/Lulzbot/filament/Generic ABS @Lulzbot.json similarity index 74% rename from resources/profiles/Lulzbot/filament/Lulzbot 2.85mm ABS.json rename to resources/profiles/Lulzbot/filament/Generic ABS @Lulzbot.json index c91c38c8e9..95d8a2274c 100644 --- a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm ABS.json +++ b/resources/profiles/Lulzbot/filament/Generic ABS @Lulzbot.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Lulzbot 2.85mm ABS", + "name": "Generic ABS @Lulzbot", "inherits": "Generic ABS @System", + "renamed_from": "Lulzbot 2.85mm ABS", "from": "system", - "setting_id": "XwsWBVH2xIwyRMm4", - "filament_id": "GFB99", + "setting_id": "Mtn4Fh3Lp6KlAxjo", "instantiation": "true", "filament_diameter": [ "2.85" diff --git a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PETG.json b/resources/profiles/Lulzbot/filament/Generic PETG @Lulzbot.json similarity index 74% rename from resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PETG.json rename to resources/profiles/Lulzbot/filament/Generic PETG @Lulzbot.json index 748d8de25b..825df8bdc8 100644 --- a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PETG.json +++ b/resources/profiles/Lulzbot/filament/Generic PETG @Lulzbot.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Lulzbot 2.85mm PETG", + "name": "Generic PETG @Lulzbot", "inherits": "Generic PETG @System", + "renamed_from": "Lulzbot 2.85mm PETG", "from": "system", - "setting_id": "7aS9fdn94lEOU1gJ", - "filament_id": "GFG99", + "setting_id": "dqj6O9NIPAaq8wWz", "instantiation": "true", "filament_diameter": [ "2.85" diff --git a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PLA.json b/resources/profiles/Lulzbot/filament/Generic PLA @Lulzbot.json similarity index 74% rename from resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PLA.json rename to resources/profiles/Lulzbot/filament/Generic PLA @Lulzbot.json index 23547bfafc..d08d72ee53 100644 --- a/resources/profiles/Lulzbot/filament/Lulzbot 2.85mm PLA.json +++ b/resources/profiles/Lulzbot/filament/Generic PLA @Lulzbot.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Lulzbot 2.85mm PLA", + "name": "Generic PLA @Lulzbot", "inherits": "Generic PLA @System", + "renamed_from": "Lulzbot 2.85mm PLA", "from": "system", - "setting_id": "1pyzsOWeVPCxWlqQ", - "filament_id": "GFL99", + "setting_id": "3evRjso1wNxd9nV3", "instantiation": "true", "filament_diameter": [ "2.85" diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5 0.5 nozzle.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5 0.5 nozzle.json index cc1224b635..5fe1dc64e7 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5 0.5 nozzle.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5 0.5 nozzle.json @@ -104,7 +104,7 @@ ], "single_extruder_multi_material": "1", "default_filament_profile": [ - "Lulzbot 2.85mm PLA" + "Generic PLA @Lulzbot" ], "machine_start_gcode": ";This G-Code has been generated specifically for the Lulzbot Taz 4 and 5 - translated from CuraLE 4.13.10 by Wrathernaut\nM73 P0; clear GLCD progress bar\nM75; start GLCD timer\nM140 S{bed_temperature_initial_layer[0]}; start bed heating up\nG90; absolute positioning\nM107; disable fans\nM82; set extruder to absolute mode\nG28 X0 Y0; home X and Y\nG28 Z0; home Z\nG1 Z15.0 F175; move extruder up\nM117 Heating...; progress indicator message on LCD\nM109 R{nozzle_temperature_initial_layer[0]}; wait for extruder to reach printing temp\nM190 R{bed_temperature_initial_layer[0]}; wait for bed to reach printing temp\nG92 E0; set extruder position to 0\nG1 F200 E0; prime the nozzle with filament\nG92 E0; re-set extruder position to 0\nG1 F175; set travel speed\nM203 X192 Y208 Z3; set limits on travel speed\nM117 TAZ Printing...; progress indicator message on LCD\n;Start G-Code End", "machine_end_gcode": ";End G-Code Begin\nM400; wait for moves to finish\nM140 S0; disable hotend\nM104 S0; disable bed heater\nM107; disable fans\nG91; relative positioning\nG1 E-1 F300; filament retraction to release pressure\nG1 Z0.5 E-5 X-20 Y-20 F3000; lift up and retract even more filament\nM77;stopGLCD timer\nG90;absolute positioning\nG1 X0 Y250;move to cooling position\nM84;disable steppers\nM117 Print Complete.;print complete message", diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5.json index c00c1cc2e3..f7b77690b4 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 4 or 5.json @@ -8,5 +8,5 @@ "bed_model": "taz_4_or_5_build_plate.stl", "bed_texture": "lulzbot_logo.svg", "hotend_model": "", - "default_materials": "Lulzbot 2.85mm ABS;Lulzbot 2.85mm PETG;Lulzbot 2.85mm PLA" + "default_materials": "Generic ABS @Lulzbot;Generic PETG @Lulzbot;Generic PLA @Lulzbot" } diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json index 4a7aa978fb..23a74064b6 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6 0.5 nozzle.json @@ -100,7 +100,7 @@ ], "single_extruder_multi_material": "1", "default_filament_profile": [ - "Lulzbot 2.85mm PLA" + "Generic PLA @Lulzbot" ], "machine_start_gcode": ";This G-Code has been translated from LulzBot's CuraLE (v4.13.10) startup GCODE for Taz 6 Single Extruder by Wrathernaut\nM73 P0; clear GLCD progress bar\nM75; start GLCD timer\nM107; disable fans\nM420 S; disable leveling matrix\nG90; absolute positioning\nM82; set extruder to absolute mode\nG92 E0; set extruder position to 0\nM140 S{bed_temperature_initial_layer[0]}; start bed heating up (w)\nG28 XY; home X and Y\nG1 X-19 Y258 F1000; move to safe homing position\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R170\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R190; unknown filament type soften temp before homing Z{endif}\nG28 Z; home Z\nG1 E-15 F100; retract filament\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R190\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R180\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R170; unknown filament type wipe temp{endif}\n;M206 X0 Y0 Z0; uncomment to adjust wipe position (+X ~ nozzle moves left)(+Y ~ nozzle moves forward)(+Z ~ nozzle moves down)\nG12; wiping sequence\nM206 X0 Y0 Z0; reseting stock nozzle position ### CAUTION: changing this line can affect print quality ###\nG1 Z10 F5000; raise nozzle after wipe\nM109 {if filament_type[0] == \"PLA\"}R160\n{elsif filament_type[0] == \"ABS\"}R170\n{elsif filament_type[0] == \"ABS-GF\"}R170\n{elsif filament_type[0] == \"ASA\"}R170\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R200\n{elsif filament_type[0] == \"PA-CF\"}R200\n{elsif filament_type[0] == \"PA-GF\"}R170\n{elsif filament_type[0] == \"PA6-CF\"}R170\n{elsif filament_type[0] == \"PA11-CF\"}R200\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R200\n{elsif filament_type[0] == \"PC-CF\"}R200\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R180\n{elsif filament_type[0] == \"PE-CF\"}R180\n{elsif filament_type[0] == \"PET-CF\"}R170\n{elsif filament_type[0] == \"PETG\"}R170\n{elsif filament_type[0] == \"PETG-CF10\"}R170\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R160\n{elsif filament_type[0] == \"PVB\"}R160\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R160\n{elsif filament_type[0] == \"FLEX\"}R160\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R160\n{elsif filament_type[0] == \"NYLON\"}R200\n{else}R170; unknown filament type probe temp{endif}\nG1 X-10 Y293 F4000; move above first probe point\nM204 S100; set probing acceleration\nG29; start auto-leveling sequence\nM420 S1; enable leveling matrix\nM204 S500; restore standard acceleration\nG1 X0 Y0 Z15 F5000; move up off last probe point\nG4 S1; pause\nM400; wait for moves to finish\nM117 Heating...; progress indicator message on LCD\nM109 R{nozzle_temperature_initial_layer[0]}; wait for extruder to reach printing temp (w)\nM190 R{bed_temperature_initial_layer[0]}; wait for bed to reach printing temp\nG1 Z2 E0 F75; prime tiny bit of filament into the nozzle\nM117 TAZ 6 Printing...; progress indicator message on LCD\n;Start G-Code End", "machine_end_gcode": ";End G-Code Begin\nM400; wait for moves to finish\nM140 S0; start bed cooling\nM104 S0; disable hotend\nM107; disable fans\nG91; relative positioning\nG1 E-1 F300; filament retraction to release pressure\nG1 Z20 E-5 X-20 Y-20 F3000; lift up and retract even more filament\nG1 E6; re-prime extruder\nG90; absolute positioning\nG1 Y280 F3000; present finished print\nM77; stop GLCD timer\nM84; disable steppers\nG90; absolute positioning\nM117 Print Complete.; print complete message\n;End G-Code End", diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json index fdf3c0b056..46772a73b0 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz 6.json @@ -8,5 +8,5 @@ "bed_model": "taz_6_build_plate.stl", "bed_texture": "lulzbot_logo.svg", "hotend_model": "", - "default_materials": "Lulzbot 2.85mm ABS;Lulzbot 2.85mm PETG;Lulzbot 2.85mm PLA" + "default_materials": "Generic ABS @Lulzbot;Generic PETG @Lulzbot;Generic PLA @Lulzbot" } diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual 0.5 nozzle.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual 0.5 nozzle.json index dccf5c21a9..ad04dec32a 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual 0.5 nozzle.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual 0.5 nozzle.json @@ -15,7 +15,7 @@ ], "printer_settings_id": "LulzbotPro-Dual", "default_filament_profile": [ - "Lulzbot 2.85mm PLA" + "Generic PLA @Lulzbot" ], "machine_start_gcode": ";This G-Code has been translated from Cura startup from CuraLE 4.13.10 to OrcaSlicer by Wrathernaut\nT0\nM82; absolute extrusion mode\nM73 P0; clear GLCD progress bar\nM75; start GLCD timer\nM107; disable fans\nG90; absolute positioning\nM420 S0; disable previous leveling matrix\nM140 S{bed_temperature_initial_layer[initial_tool]}; begin bed temping up (w)\nM104 {if filament_type[initial_tool] == \"PLA\"}S180\n{elsif filament_type[initial_tool] == \"ABS\"}S190\n{elsif filament_type[initial_tool] == \"ABS-GF\"}S190\n{elsif filament_type[initial_tool] == \"ASA\"}S190\n{elsif filament_type[initial_tool] == \"ASA-Aero\"}S190\n{elsif filament_type[initial_tool] == \"BVOH\"}S170\n{elsif filament_type[initial_tool] == \"EVA\"}S170\n{elsif filament_type[initial_tool] == \"PA\"}R220\n{elsif filament_type[initial_tool] == \"PA-CF\"}R220\n{elsif filament_type[initial_tool] == \"PA-GF\"}R220\n{elsif filament_type[initial_tool] == \"PA6-CF\"}R220\n{elsif filament_type[initial_tool] == \"PA11-CF\"}R220\n{elsif filament_type[initial_tool] == \"ASA-Aero\"}S170\n{elsif filament_type[initial_tool] == \"PC\"}R220\n{elsif filament_type[initial_tool] == \"PC-CF\"}R220\n{elsif filament_type[initial_tool] == \"PCTG\"}S180\n{elsif filament_type[initial_tool] == \"PE\"}S190\n{elsif filament_type[initial_tool] == \"PE-CF\"}S190\n{elsif filament_type[initial_tool] == \"PET-CF\"}S190\n{elsif filament_type[initial_tool] == \"PETG\"}S190\n{elsif filament_type[initial_tool] == \"PETG-CF10\"}S190\n{elsif filament_type[initial_tool] == \"PHA\"}S180\n{elsif filament_type[initial_tool] == \"PLA-AERO\"}S180\n{elsif filament_type[initial_tool] == \"PLA-CF\"}S180\n{elsif filament_type[initial_tool] == \"PP\"}S180\n{elsif filament_type[initial_tool] == \"PP-CF\"}S180\n{elsif filament_type[initial_tool] == \"PP-GF\"}S180\n{elsif filament_type[initial_tool] == \"PPS\"}S180\n{elsif filament_type[initial_tool] == \"PPS-CF\"}S180\n{elsif filament_type[initial_tool] == \"PVA\"}S180\n{elsif filament_type[initial_tool] == \"PVB\"}S180\n{elsif filament_type[initial_tool] == \"SBS\"}S180\n{elsif filament_type[initial_tool] == \"TPU\"}S180\n{elsif filament_type[initial_tool] == \"FLEX\"}S180\n{elsif filament_type[initial_tool] == \"PET\"}S170\n{elsif filament_type[initial_tool] == \"HIPS\"}S170\n{elsif filament_type[initial_tool] == \"NYLON\"}R220\n{else}S190; unknown filament type soften temp before homing Z\n{endif}G28; home\nG0 X50 Y25 Z10 F2000\nM117 Heating...\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R170\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R190; unknown filament type soften temp before homing Z{endif}\nM82; set extruder to absolute mode\nG92 E0; set extruder to zero\nG1 E-7 F100; retract 7mm of filament on first extruder\nM106; turn on fans to speed cooling\nM117 Wiping...\nM109 {if filament_type[0] == \"PLA\"}R180\n{elsif filament_type[0] == \"ABS\"}R190\n{elsif filament_type[0] == \"ABS-GF\"}R190\n{elsif filament_type[0] == \"ASA\"}R190\n{elsif filament_type[0] == \"ASA-Aero\"}R190\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R220\n{elsif filament_type[0] == \"PA-CF\"}R220\n{elsif filament_type[0] == \"PA-GF\"}R220\n{elsif filament_type[0] == \"PA6-CF\"}R220\n{elsif filament_type[0] == \"PA11-CF\"}R220\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R220\n{elsif filament_type[0] == \"PC-CF\"}R220\n{elsif filament_type[0] == \"PCTG\"}R190\n{elsif filament_type[0] == \"PE\"}R190\n{elsif filament_type[0] == \"PE-CF\"}R190\n{elsif filament_type[0] == \"PET-CF\"}R190\n{elsif filament_type[0] == \"PETG\"}R190\n{elsif filament_type[0] == \"PETG-CF10\"}R190\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R180\n{elsif filament_type[0] == \"PVB\"}R180\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R180\n{elsif filament_type[0] == \"FLEX\"}R180\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R180\n{elsif filament_type[0] == \"NYLON\"}R220\n{else}R170; unknown filament type wipe temp{endif}\nM109 {if filament_type[0] == \"PLA\"}R160\n{elsif filament_type[0] == \"ABS\"}R170\n{elsif filament_type[0] == \"ABS-GF\"}R170\n{elsif filament_type[0] == \"ASA\"}R170\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"BVOH\"}R170\n{elsif filament_type[0] == \"EVA\"}R170\n{elsif filament_type[0] == \"PA\"}R200\n{elsif filament_type[0] == \"PA-CF\"}R200\n{elsif filament_type[0] == \"PA-GF\"}R170\n{elsif filament_type[0] == \"PA6-CF\"}R170\n{elsif filament_type[0] == \"PA11-CF\"}R200\n{elsif filament_type[0] == \"ASA-Aero\"}R170\n{elsif filament_type[0] == \"PC\"}R200\n{elsif filament_type[0] == \"PC-CF\"}R200\n{elsif filament_type[0] == \"PCTG\"}R180\n{elsif filament_type[0] == \"PE\"}R180\n{elsif filament_type[0] == \"PE-CF\"}R180\n{elsif filament_type[0] == \"PET-CF\"}R170\n{elsif filament_type[0] == \"PETG\"}R170\n{elsif filament_type[0] == \"PETG-CF10\"}R170\n{elsif filament_type[0] == \"PHA\"}R180\n{elsif filament_type[0] == \"PLA-AERO\"}R180\n{elsif filament_type[0] == \"PLA-CF\"}R180\n{elsif filament_type[0] == \"PP\"}R180\n{elsif filament_type[0] == \"PP-CF\"}R180\n{elsif filament_type[0] == \"PP-GF\"}R180\n{elsif filament_type[0] == \"PPS\"}R180\n{elsif filament_type[0] == \"PPS-CF\"}R180\n{elsif filament_type[0] == \"PVA\"}R160\n{elsif filament_type[0] == \"PVB\"}R160\n{elsif filament_type[0] == \"SBS\"}R180\n{elsif filament_type[0] == \"TPU\"}R160\n{elsif filament_type[0] == \"FLEX\"}R160\n{elsif filament_type[0] == \"PET\"}R170\n{elsif filament_type[0] == \"HIPS\"}R160\n{elsif filament_type[0] == \"NYLON\"}R200\n{else}R170; unknown filament type probe temp{endif}; cool to probe temp\nG12; wipe sequence\nM107; turn off fan\nG29; probe sequence (for auto-leveling)\nM420 S1; enable leveling matrix\nT{initial_tool}; ensure we're using the first extruder\nM104 S{first_layer_temperature[initial_tool]}; set extruder temp\nG0 X5 Y15 Z10 F5000; move to start location\nM400; clear buffer\nM117 Heating...\nM109 R{first_layer_temperature[initial_tool]}; set extruder temp and waitnM190 R{bed_temperature_initial_layer[initial_tool]}; get bed temping up during first layer\nG1 Z2 E0 F75; raise head and 0 extruder\nM82; set to absolute mode\nM400; clear buffer\nM300 T; play sound at start of first layer\nM117 Printing ...\n;Start G-Code End", "machine_end_gcode": "M400; wait for moves to finish\nM140 S0; start cooling bed\nM107; fans off\nG91 ; relative positioning\nG1 E-1 F300 ; retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z25 E-1 X20 Y20 F2000; move Z up a bit and retract filament even more\nM104 S{nozzle_temperature[0]} T0 ; T0 to print temp\nM104 S{nozzle_temperature[1]} T1 ; T1 to print temp\nG90 ; absolute positioning\nG0 X285 Y-30 F3000; move to cooling position\nG91 ; relative positioning\nM117 Purging for next print;progress indicator message\nT0\nM109 S{nozzle_temperature[0]}; wait for temp\nG92 E0; set extruder position to purge amount\nG1 E15 F75; purge\nM400; wait for purge\nM104 S0 ; T0 hotend off\nT1\nM109 S{nozzle_temperature[1]}; wait for temp\nG92 E0; set extruder position to purge amount\nG1 E15 F75; purge\nM400; wait for purge\nM104 S0 ; T1 hotend off\nT0\nM117 Cooling, please wait;progress indicator message\nM190 S0; cool off bed\nG0 Y280 F3000 ; present finished print\nM77; stop GLCD timer\nM18 X Y E; turn off x y and e axis\nG90 ; absolute positioning\nM117 Print complete; progress indicator message" diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual.json index b5157e0925..ca7afe7d9f 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro Dual.json @@ -8,5 +8,5 @@ "bed_model": "taz_pro_dual_build_plate.stl", "bed_texture": "Taz_Pro_Dual_printbed.svg", "hotend_model": "", - "default_materials": "Lulzbot 2.85mm ABS;Lulzbot 2.85mm PETG;Lulzbot 2.85mm PLA" + "default_materials": "Generic ABS @Lulzbot;Generic PETG @Lulzbot;Generic PLA @Lulzbot" } diff --git a/resources/profiles/MagicMaker.json b/resources/profiles/MagicMaker.json index ede555b66c..cfb4c10ac2 100644 --- a/resources/profiles/MagicMaker.json +++ b/resources/profiles/MagicMaker.json @@ -1,6 +1,6 @@ { "name": "MagicMaker", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "MagicMaker configurations", "machine_model_list": [ @@ -141,8 +141,8 @@ "sub_path": "filament/fdm_filament_peek.json" }, { - "name": "MM Generic PEEK", - "sub_path": "filament/MM Generic PEEK.json" + "name": "Generic PEEK @MM", + "sub_path": "filament/Generic PEEK @MM.json" } ], "machine_list": [ diff --git a/resources/profiles/MagicMaker/filament/MM Generic PEEK.json b/resources/profiles/MagicMaker/filament/Generic PEEK @MM.json similarity index 84% rename from resources/profiles/MagicMaker/filament/MM Generic PEEK.json rename to resources/profiles/MagicMaker/filament/Generic PEEK @MM.json index 75b905476e..6915058856 100644 --- a/resources/profiles/MagicMaker/filament/MM Generic PEEK.json +++ b/resources/profiles/MagicMaker/filament/Generic PEEK @MM.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "MM Generic PEEK", + "name": "Generic PEEK @MM", "inherits": "fdm_filament_peek", + "renamed_from": "MM Generic PEEK", "from": "system", - "setting_id": "iznBAOK0m6dO7SCh", - "filament_id": "GFG99", + "setting_id": "2xiVNAQTwBaiLjJn", + "filament_id": "OFz5oHgf", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/MagicMaker/machine/MM BoneKing.json b/resources/profiles/MagicMaker/machine/MM BoneKing.json index a7b80100be..ab257957a6 100644 --- a/resources/profiles/MagicMaker/machine/MM BoneKing.json +++ b/resources/profiles/MagicMaker/machine/MM BoneKing.json @@ -8,5 +8,5 @@ "bed_model": "310_buildplate_model.stl", "bed_texture": "MM_buildplate_texture.svg", "hotend_model": "MM_hotend.stl", - "default_materials": "Generic PLA @System;Generic PETG @System;Generic ABS @System;Generic TPU @System;Generic PC @System;Generic PA @System;MM Generic PEEK" + "default_materials": "Generic PLA @System;Generic PETG @System;Generic ABS @System;Generic TPU @System;Generic PC @System;Generic PA @System;Generic PEEK @MM" } diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json index c649cf3e6b..866b720b78 100644 --- a/resources/profiles/OrcaArena.json +++ b/resources/profiles/OrcaArena.json @@ -1,7 +1,7 @@ { "name": "Orca Arena Printer", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Orca Arena configuration files", "machine_model_list": [ @@ -242,12 +242,12 @@ "sub_path": "filament/Arena ABS @base.json" }, { - "name": "OrcaArena Generic ABS @base", - "sub_path": "filament/OrcaArena Generic ABS @base.json" + "name": "Generic ABS @OrcaArena base", + "sub_path": "filament/Generic ABS @OrcaArena base.json" }, { - "name": "OrcaArena Generic ASA @base", - "sub_path": "filament/OrcaArena Generic ASA @base.json" + "name": "Generic ASA @OrcaArena base", + "sub_path": "filament/Generic ASA @OrcaArena base.json" }, { "name": "Arena PA-CF @base", @@ -262,20 +262,20 @@ "sub_path": "filament/Arena Support G @base.json" }, { - "name": "OrcaArena Generic PA", - "sub_path": "filament/OrcaArena Generic PA.json" + "name": "Generic PA @OrcaArena", + "sub_path": "filament/Generic PA @OrcaArena.json" }, { - "name": "OrcaArena Generic PA-CF", - "sub_path": "filament/OrcaArena Generic PA-CF.json" + "name": "Generic PA-CF @OrcaArena", + "sub_path": "filament/Generic PA-CF @OrcaArena.json" }, { "name": "Arena PC @base", "sub_path": "filament/Arena PC @base.json" }, { - "name": "OrcaArena Generic PC @base", - "sub_path": "filament/OrcaArena Generic PC @base.json" + "name": "Generic PC @OrcaArena base", + "sub_path": "filament/Generic PC @OrcaArena base.json" }, { "name": "Arena PET-CF @base", @@ -290,12 +290,12 @@ "sub_path": "filament/Arena PETG-CF @base.json" }, { - "name": "OrcaArena Generic PETG @base", - "sub_path": "filament/OrcaArena Generic PETG @base.json" + "name": "Generic PETG @OrcaArena base", + "sub_path": "filament/Generic PETG @OrcaArena base.json" }, { - "name": "OrcaArena Generic PETG-CF @base", - "sub_path": "filament/OrcaArena Generic PETG-CF @base.json" + "name": "Generic PETG-CF @OrcaArena base", + "sub_path": "filament/Generic PETG-CF @OrcaArena base.json" }, { "name": "Arena PLA Basic @base", @@ -338,16 +338,16 @@ "sub_path": "filament/Arena Support W @base.json" }, { - "name": "OrcaArena Generic PLA @base", - "sub_path": "filament/OrcaArena Generic PLA @base.json" + "name": "Generic PLA @OrcaArena base", + "sub_path": "filament/Generic PLA @OrcaArena base.json" }, { - "name": "OrcaArena Generic PLA Silk @base", - "sub_path": "filament/OrcaArena Generic PLA Silk @base.json" + "name": "Generic PLA Silk @OrcaArena base", + "sub_path": "filament/Generic PLA Silk @OrcaArena base.json" }, { - "name": "OrcaArena Generic PLA-CF @base", - "sub_path": "filament/OrcaArena Generic PLA-CF @base.json" + "name": "Generic PLA-CF @OrcaArena base", + "sub_path": "filament/Generic PLA-CF @OrcaArena base.json" }, { "name": "PolyLite PLA @base", @@ -358,16 +358,16 @@ "sub_path": "filament/PolyTerra PLA @base.json" }, { - "name": "OrcaArena Generic PVA @base", - "sub_path": "filament/OrcaArena Generic PVA @base.json" + "name": "Generic PVA @OrcaArena base", + "sub_path": "filament/Generic PVA @OrcaArena base.json" }, { "name": "Arena TPU 95A @base", "sub_path": "filament/Arena TPU 95A @base.json" }, { - "name": "OrcaArena Generic TPU", - "sub_path": "filament/OrcaArena Generic TPU.json" + "name": "Generic TPU @OrcaArena", + "sub_path": "filament/Generic TPU @OrcaArena.json" }, { "name": "Arena ABS @Arena X1C", @@ -382,20 +382,20 @@ "sub_path": "filament/Arena ABS @Arena X1C 0.8 nozzle.json" }, { - "name": "OrcaArena Generic ABS", - "sub_path": "filament/OrcaArena Generic ABS.json" + "name": "Generic ABS @OrcaArena", + "sub_path": "filament/Generic ABS @OrcaArena.json" }, { - "name": "OrcaArena Generic ABS @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic ABS @0.2 nozzle.json" + "name": "Generic ABS @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic ABS @OrcaArena 0.2 nozzle.json" }, { - "name": "OrcaArena Generic ASA", - "sub_path": "filament/OrcaArena Generic ASA.json" + "name": "Generic ASA @OrcaArena", + "sub_path": "filament/Generic ASA @OrcaArena.json" }, { - "name": "OrcaArena Generic ASA @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic ASA @0.2 nozzle.json" + "name": "Generic ASA @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic ASA @OrcaArena 0.2 nozzle.json" }, { "name": "Arena PA-CF @Arena X1C", @@ -426,12 +426,12 @@ "sub_path": "filament/Arena PC @Arena X1C 0.8 nozzle.json" }, { - "name": "OrcaArena Generic PC", - "sub_path": "filament/OrcaArena Generic PC.json" + "name": "Generic PC @OrcaArena", + "sub_path": "filament/Generic PC @OrcaArena.json" }, { - "name": "OrcaArena Generic PC @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic PC @0.2 nozzle.json" + "name": "Generic PC @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic PC @OrcaArena 0.2 nozzle.json" }, { "name": "Arena PET-CF @Arena X1C", @@ -454,16 +454,16 @@ "sub_path": "filament/Arena PETG-CF @Arena X1C.json" }, { - "name": "OrcaArena Generic PETG", - "sub_path": "filament/OrcaArena Generic PETG.json" + "name": "Generic PETG @OrcaArena", + "sub_path": "filament/Generic PETG @OrcaArena.json" }, { - "name": "OrcaArena Generic PETG @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic PETG @0.2 nozzle.json" + "name": "Generic PETG @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic PETG @OrcaArena 0.2 nozzle.json" }, { - "name": "OrcaArena Generic PETG-CF @Arena X1C", - "sub_path": "filament/OrcaArena Generic PETG-CF @Arena X1C.json" + "name": "Generic PETG-CF @Arena X1C", + "sub_path": "filament/Generic PETG-CF @Arena X1C.json" }, { "name": "Arena PLA Basic @Arena X1C", @@ -542,20 +542,20 @@ "sub_path": "filament/Arena Support W @Arena X1C 0.2 nozzle.json" }, { - "name": "OrcaArena Generic PLA", - "sub_path": "filament/OrcaArena Generic PLA.json" + "name": "Generic PLA @OrcaArena", + "sub_path": "filament/Generic PLA @OrcaArena.json" }, { - "name": "OrcaArena Generic PLA @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic PLA @0.2 nozzle.json" + "name": "Generic PLA @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic PLA @OrcaArena 0.2 nozzle.json" }, { - "name": "OrcaArena Generic PLA Silk", - "sub_path": "filament/OrcaArena Generic PLA Silk.json" + "name": "Generic PLA Silk @OrcaArena", + "sub_path": "filament/Generic PLA Silk @OrcaArena.json" }, { - "name": "OrcaArena Generic PLA-CF", - "sub_path": "filament/OrcaArena Generic PLA-CF.json" + "name": "Generic PLA-CF @OrcaArena", + "sub_path": "filament/Generic PLA-CF @OrcaArena.json" }, { "name": "PolyLite PLA @Arena X1C", @@ -566,12 +566,12 @@ "sub_path": "filament/PolyTerra PLA @Arena X1C.json" }, { - "name": "OrcaArena Generic PVA", - "sub_path": "filament/OrcaArena Generic PVA.json" + "name": "Generic PVA @OrcaArena", + "sub_path": "filament/Generic PVA @OrcaArena.json" }, { - "name": "OrcaArena Generic PVA @0.2 nozzle", - "sub_path": "filament/OrcaArena Generic PVA @0.2 nozzle.json" + "name": "Generic PVA @OrcaArena 0.2 nozzle", + "sub_path": "filament/Generic PVA @OrcaArena 0.2 nozzle.json" }, { "name": "Arena TPU 95A @Arena X1C", diff --git a/resources/profiles/OrcaArena/filament/Arena ABS @base.json b/resources/profiles/OrcaArena/filament/Arena ABS @base.json index 6b8bffc802..e2ae90f59d 100644 --- a/resources/profiles/OrcaArena/filament/Arena ABS @base.json +++ b/resources/profiles/OrcaArena/filament/Arena ABS @base.json @@ -3,7 +3,7 @@ "name": "Arena ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB00", + "filament_id": "OFJ3HRsR", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/Arena PA-CF @base.json b/resources/profiles/OrcaArena/filament/Arena PA-CF @base.json index 3cca273276..dfd447f93d 100644 --- a/resources/profiles/OrcaArena/filament/Arena PA-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Arena PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN03", + "filament_id": "OFA026vt", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/OrcaArena/filament/Arena PAHT-CF @base.json b/resources/profiles/OrcaArena/filament/Arena PAHT-CF @base.json index bd91f8f92b..e792d76bdc 100644 --- a/resources/profiles/OrcaArena/filament/Arena PAHT-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PAHT-CF @base.json @@ -3,7 +3,7 @@ "name": "Arena PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFN04", + "filament_id": "OFtOPlK6", "instantiation": "false", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/OrcaArena/filament/Arena PC @base.json b/resources/profiles/OrcaArena/filament/Arena PC @base.json index 912971768d..5af0a9af69 100644 --- a/resources/profiles/OrcaArena/filament/Arena PC @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PC @base.json @@ -3,7 +3,7 @@ "name": "Arena PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC00", + "filament_id": "OFrr67nG", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PET-CF @base.json b/resources/profiles/OrcaArena/filament/Arena PET-CF @base.json index ec29afee99..a17488fff1 100644 --- a/resources/profiles/OrcaArena/filament/Arena PET-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PET-CF @base.json @@ -3,7 +3,7 @@ "name": "Arena PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFT01", + "filament_id": "OFc87pL3", "instantiation": "false", "temperature_vitrification": [ "185" diff --git a/resources/profiles/OrcaArena/filament/Arena PETG Basic @base.json b/resources/profiles/OrcaArena/filament/Arena PETG Basic @base.json index ca09ce05bd..ed01353b35 100644 --- a/resources/profiles/OrcaArena/filament/Arena PETG Basic @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PETG Basic @base.json @@ -3,7 +3,7 @@ "name": "Arena PETG Basic @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG00", + "filament_id": "OFNBlAPT", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/Arena PETG-CF @base.json b/resources/profiles/OrcaArena/filament/Arena PETG-CF @base.json index 06a32d1956..b3b69c736f 100644 --- a/resources/profiles/OrcaArena/filament/Arena PETG-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Arena PETG-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG50", + "filament_id": "OFuO0cAP", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Basic @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Basic @base.json index 15fee6343b..c42ca761e0 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Basic @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Basic @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA00", + "filament_id": "OFSbGfsz", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Impact @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Impact @base.json index d049672842..04c28f1ec2 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Impact @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Impact @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Impact @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA03", + "filament_id": "OFjXrKFO", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Marble @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Marble @base.json index 95a18a2e21..58a7efc0e7 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Marble @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA07", + "filament_id": "OFuehn62", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Matte @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Matte @base.json index d90b362299..b2293d70c8 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Matte @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA01", + "filament_id": "OFgptDSf", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Metal @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Metal @base.json index 3071459e05..5e71a14838 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Metal @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA02", + "filament_id": "OFOAdMCB", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Silk @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Silk @base.json index d3929f3c24..93554f77df 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Silk @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA05", + "filament_id": "OFmfizbq", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Sparkle @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Sparkle @base.json index db96b66e28..dc823a97f5 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Sparkle @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Sparkle @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Sparkle @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA08", + "filament_id": "OFyHgT60", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA Tough @base.json b/resources/profiles/OrcaArena/filament/Arena PLA Tough @base.json index 6f2d30c051..38ae042314 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA Tough @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA Tough @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA Tough @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA09", + "filament_id": "OFtKeKa9", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena PLA-CF @base.json b/resources/profiles/OrcaArena/filament/Arena PLA-CF @base.json index c0783f0a03..c3acf67b7c 100644 --- a/resources/profiles/OrcaArena/filament/Arena PLA-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Arena PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Arena PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA50", + "filament_id": "OF2hfMcG", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena Support G @base.json b/resources/profiles/OrcaArena/filament/Arena Support G @base.json index 72a18d0edd..2ab8eb1932 100644 --- a/resources/profiles/OrcaArena/filament/Arena Support G @base.json +++ b/resources/profiles/OrcaArena/filament/Arena Support G @base.json @@ -3,7 +3,7 @@ "name": "Arena Support G @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFS01", + "filament_id": "OFIPjqHt", "instantiation": "false", "required_nozzle_HRC": [ "3" diff --git a/resources/profiles/OrcaArena/filament/Arena Support W @base.json b/resources/profiles/OrcaArena/filament/Arena Support W @base.json index d51ee9c170..fa3733d2bc 100644 --- a/resources/profiles/OrcaArena/filament/Arena Support W @base.json +++ b/resources/profiles/OrcaArena/filament/Arena Support W @base.json @@ -3,7 +3,7 @@ "name": "Arena Support W @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFS00", + "filament_id": "OFI6WZpn", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Arena TPU 95A @base.json b/resources/profiles/OrcaArena/filament/Arena TPU 95A @base.json index 0e6dec526f..b4069147be 100644 --- a/resources/profiles/OrcaArena/filament/Arena TPU 95A @base.json +++ b/resources/profiles/OrcaArena/filament/Arena TPU 95A @base.json @@ -3,7 +3,7 @@ "name": "Arena TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFU01", + "filament_id": "OFQGvU2G", "instantiation": "false", "filament_vendor": [ "Orca Arena" diff --git a/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena 0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena 0.2 nozzle.json new file mode 100644 index 0000000000..f98408fe0f --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena 0.2 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic ABS @OrcaArena 0.2 nozzle", + "inherits": "Generic ABS @OrcaArena base", + "renamed_from": "OrcaArena Generic ABS @0.2 nozzle;OrcaArena Generic ABS 0.2 nozzle", + "from": "system", + "setting_id": "mzx0hG9Xe9fIrkrW", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Orca Arena X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @base.json b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena base.json similarity index 73% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @base.json rename to resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena base.json index ea3357846a..f2cd5abbf4 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @base.json +++ b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic ABS @base", + "name": "Generic ABS @OrcaArena base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFY9muEs", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA.json b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena.json similarity index 57% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic ASA.json rename to resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena.json index d092b1f64d..2a505d7ca1 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA.json +++ b/resources/profiles/OrcaArena/filament/Generic ABS @OrcaArena.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic ASA", - "inherits": "OrcaArena Generic ASA @base", + "name": "Generic ABS @OrcaArena", + "inherits": "Generic ABS @OrcaArena base", + "renamed_from": "OrcaArena Generic ABS", "from": "system", - "setting_id": "8KdojTD3bygYDxwh", + "setting_id": "ftTPQmVmsaD0n1GF", "instantiation": "true", "compatible_printers": [ "Orca Arena X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena 0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena 0.2 nozzle.json new file mode 100644 index 0000000000..77bd051b4e --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena 0.2 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic ASA @OrcaArena 0.2 nozzle", + "inherits": "Generic ASA @OrcaArena base", + "renamed_from": "OrcaArena Generic ASA @0.2 nozzle;OrcaArena Generic ASA 0.2 nozzle", + "from": "system", + "setting_id": "rtFj6gFceWHdzTmO", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Orca Arena X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @base.json b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena base.json similarity index 73% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @base.json rename to resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena base.json index cd0856f13f..772c708dd8 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @base.json +++ b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic ASA @base", + "name": "Generic ASA @OrcaArena base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFB98", + "filament_id": "OFLPAxz3", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC.json b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena.json similarity index 57% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PC.json rename to resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena.json index 024e76e0bc..0ee8d6cc20 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC.json +++ b/resources/profiles/OrcaArena/filament/Generic ASA @OrcaArena.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic PC", - "inherits": "OrcaArena Generic PC @base", + "name": "Generic ASA @OrcaArena", + "inherits": "Generic ASA @OrcaArena base", + "renamed_from": "OrcaArena Generic ASA", "from": "system", - "setting_id": "WCiW1Yi88MEZIO2h", + "setting_id": "V2Z1rxHqIqIuwP5O", "instantiation": "true", "compatible_printers": [ "Orca Arena X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PA.json b/resources/profiles/OrcaArena/filament/Generic PA @OrcaArena.json similarity index 74% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PA.json rename to resources/profiles/OrcaArena/filament/Generic PA @OrcaArena.json index 2f4438a82b..87b0a67ed8 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PA.json +++ b/resources/profiles/OrcaArena/filament/Generic PA @OrcaArena.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "OrcaArena Generic PA", + "name": "Generic PA @OrcaArena", "inherits": "fdm_filament_pa", + "renamed_from": "OrcaArena Generic PA", "from": "system", - "setting_id": "IintLqJOecQcKmA8", - "filament_id": "GFN99", + "setting_id": "KScdeqdB3UR6uvxs", + "filament_id": "OFg8ndtj", "instantiation": "true", "required_nozzle_HRC": [ "3" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PA-CF.json b/resources/profiles/OrcaArena/filament/Generic PA-CF @OrcaArena.json similarity index 81% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PA-CF.json rename to resources/profiles/OrcaArena/filament/Generic PA-CF @OrcaArena.json index caf87f47e9..2d928201b7 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PA-CF.json +++ b/resources/profiles/OrcaArena/filament/Generic PA-CF @OrcaArena.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "OrcaArena Generic PA-CF", + "name": "Generic PA-CF @OrcaArena", "inherits": "fdm_filament_pa", + "renamed_from": "OrcaArena Generic PA-CF", "from": "system", - "setting_id": "XHOpI9EFQmYoJ3Sy", - "filament_id": "GFN98", + "setting_id": "xANIesGhsXwbTn3J", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena 0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena 0.2 nozzle.json new file mode 100644 index 0000000000..ad15f49a69 --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena 0.2 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic PC @OrcaArena 0.2 nozzle", + "inherits": "Generic PC @OrcaArena base", + "renamed_from": "OrcaArena Generic PC @0.2 nozzle;OrcaArena Generic PC 0.2 nozzle", + "from": "system", + "setting_id": "AEKvB4RVBo2zOkdg", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Orca Arena X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC @base.json b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena base.json similarity index 73% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PC @base.json rename to resources/profiles/OrcaArena/filament/Generic PC @OrcaArena base.json index d3b97beca6..3ea8fd8bd4 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PC @base", + "name": "Generic PC @OrcaArena base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "GFC99", + "filament_id": "OFLakOUI", "instantiation": "false", "filament_max_volumetric_speed": [ "16" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS.json b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena.json similarity index 57% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic ABS.json rename to resources/profiles/OrcaArena/filament/Generic PC @OrcaArena.json index 773f58289e..b4302c3c47 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS.json +++ b/resources/profiles/OrcaArena/filament/Generic PC @OrcaArena.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic ABS", - "inherits": "OrcaArena Generic ABS @base", + "name": "Generic PC @OrcaArena", + "inherits": "Generic PC @OrcaArena base", + "renamed_from": "OrcaArena Generic PC", "from": "system", - "setting_id": "5aN0QkAneu6yEWZh", + "setting_id": "He4O4h8oEFsySDIJ", "instantiation": "true", "compatible_printers": [ "Orca Arena X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena 0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena 0.2 nozzle.json new file mode 100644 index 0000000000..1be2988356 --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena 0.2 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic PETG @OrcaArena 0.2 nozzle", + "inherits": "Generic PETG @OrcaArena base", + "renamed_from": "OrcaArena Generic PETG @0.2 nozzle;OrcaArena Generic PETG 0.2 nozzle", + "from": "system", + "setting_id": "ZstQ3h8DGCpRWQJN", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Orca Arena X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @base.json b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena base.json similarity index 94% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @base.json rename to resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena base.json index 253c710014..4ec26aae2b 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PETG @base", + "name": "Generic PETG @OrcaArena base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFYPdQJh", "instantiation": "false", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena.json b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena.json new file mode 100644 index 0000000000..ad3260fe1c --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PETG @OrcaArena.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG @OrcaArena", + "inherits": "Generic PETG @OrcaArena base", + "renamed_from": "OrcaArena Generic PETG", + "from": "system", + "setting_id": "3puaC0EwFLvEnGH2", + "instantiation": "true", + "compatible_printers": [ + "Orca Arena X1 Carbon 0.4 nozzle", + "Orca Arena X1 Carbon 0.6 nozzle", + "Orca Arena X1 Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/Generic PETG-CF @Arena X1C.json b/resources/profiles/OrcaArena/filament/Generic PETG-CF @Arena X1C.json new file mode 100644 index 0000000000..f8741a22a9 --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PETG-CF @Arena X1C.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG-CF @Arena X1C", + "inherits": "Generic PETG-CF @OrcaArena base", + "renamed_from": "OrcaArena Generic PETG-CF @Arena X1C;OrcaArena Generic PETG-CF Arena X1C", + "from": "system", + "setting_id": "MeIL8qLFZytjvYrF", + "instantiation": "true", + "compatible_printers": [ + "Orca Arena X1 Carbon 0.4 nozzle", + "Orca Arena X1 Carbon 0.6 nozzle", + "Orca Arena X1 Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @base.json b/resources/profiles/OrcaArena/filament/Generic PETG-CF @OrcaArena base.json similarity index 93% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @base.json rename to resources/profiles/OrcaArena/filament/Generic PETG-CF @OrcaArena base.json index b71f5d4536..754407c32a 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PETG-CF @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PETG-CF @base", + "name": "Generic PETG-CF @OrcaArena base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG98", + "filament_id": "OFoYSJKi", "instantiation": "false", "filament_flow_ratio": [ "0.95" @@ -45,7 +45,7 @@ "40" ], "filament_vendor": [ - "Orca Arena" + "Generic" ], "filament_type": [ "PETG-CF" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena 0.2 nozzle.json similarity index 69% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @0.2 nozzle.json rename to resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena 0.2 nozzle.json index 261cd931f6..074732db01 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @0.2 nozzle.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic PLA @0.2 nozzle", - "inherits": "OrcaArena Generic PLA @base", + "name": "Generic PLA @OrcaArena 0.2 nozzle", + "inherits": "Generic PLA @OrcaArena base", + "renamed_from": "OrcaArena Generic PLA @0.2 nozzle;OrcaArena Generic PLA 0.2 nozzle", "from": "system", - "setting_id": "V1TMYgbxBLgciFa2", + "setting_id": "HjJH9JT9x9sFtVES", "instantiation": "true", "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @base.json b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena base.json similarity index 88% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @base.json rename to resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena base.json index d7618a6f97..cec0b9cd19 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PLA @base", + "name": "Generic PLA @OrcaArena base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFDSrzZ8", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @Arena X1C.json b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena.json similarity index 57% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @Arena X1C.json rename to resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena.json index 0a6e9a9dbc..9018f24583 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG-CF @Arena X1C.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA @OrcaArena.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic PETG-CF @Arena X1C", - "inherits": "OrcaArena Generic PETG-CF @base", + "name": "Generic PLA @OrcaArena", + "inherits": "Generic PLA @OrcaArena base", + "renamed_from": "OrcaArena Generic PLA", "from": "system", - "setting_id": "2OI2L2q50nSxam2z", + "setting_id": "TfkkCc6rILxDiZhR", "instantiation": "true", "compatible_printers": [ "Orca Arena X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk @base.json b/resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena base.json similarity index 88% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk @base.json rename to resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena base.json index 7d6f5e3020..f73d037385 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PLA Silk @base", + "name": "Generic PLA Silk @OrcaArena base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFA05", + "filament_id": "OFesA6rF", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk.json b/resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena.json similarity index 63% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk.json rename to resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena.json index 3b6b96bb72..6afb0e48a2 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA Silk.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA Silk @OrcaArena.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "OrcaArena Generic PLA Silk", - "inherits": "OrcaArena Generic PLA Silk @base", + "name": "Generic PLA Silk @OrcaArena", + "inherits": "Generic PLA Silk @OrcaArena base", + "renamed_from": "OrcaArena Generic PLA Silk", "from": "system", - "setting_id": "WRy8oYxZ542SX6jO", + "setting_id": "rvJjX9QsHM1O1CGD", "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF @base.json b/resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena base.json similarity index 92% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF @base.json rename to resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena base.json index e3e0efe224..79a2b7ba88 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PLA-CF @base", + "name": "Generic PLA-CF @OrcaArena base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL98", + "filament_id": "OFWbdGsC", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena.json b/resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena.json new file mode 100644 index 0000000000..ced9245904 --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PLA-CF @OrcaArena.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PLA-CF @OrcaArena", + "inherits": "Generic PLA-CF @OrcaArena base", + "renamed_from": "OrcaArena Generic PLA-CF", + "from": "system", + "setting_id": "vexlQFuvVzpsYT0Z", + "instantiation": "true", + "compatible_printers": [ + "Orca Arena X1 Carbon 0.4 nozzle", + "Orca Arena X1 Carbon 0.6 nozzle", + "Orca Arena X1 Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena 0.2 nozzle.json b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena 0.2 nozzle.json new file mode 100644 index 0000000000..417ef65683 --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena 0.2 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic PVA @OrcaArena 0.2 nozzle", + "inherits": "Generic PVA @OrcaArena base", + "renamed_from": "OrcaArena Generic PVA @0.2 nozzle;OrcaArena Generic PVA 0.2 nozzle", + "from": "system", + "setting_id": "jX00tEZaqsJvpoBT", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "0.5" + ], + "compatible_printers": [ + "Orca Arena X1 Carbon 0.2 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @base.json b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena base.json similarity index 79% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @base.json rename to resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena base.json index 42d91f10bc..f44bc7f46c 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @base.json +++ b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "OrcaArena Generic PVA @base", + "name": "Generic PVA @OrcaArena base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "GFS99", + "filament_id": "OFDvXujf", "instantiation": "false", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena.json b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena.json new file mode 100644 index 0000000000..bf9cbcda7a --- /dev/null +++ b/resources/profiles/OrcaArena/filament/Generic PVA @OrcaArena.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PVA @OrcaArena", + "inherits": "Generic PVA @OrcaArena base", + "renamed_from": "OrcaArena Generic PVA", + "from": "system", + "setting_id": "S9TMm0n7t54fKHoM", + "instantiation": "true", + "compatible_printers": [ + "Orca Arena X1 Carbon 0.4 nozzle", + "Orca Arena X1 Carbon 0.6 nozzle", + "Orca Arena X1 Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic TPU.json b/resources/profiles/OrcaArena/filament/Generic TPU @OrcaArena.json similarity index 80% rename from resources/profiles/OrcaArena/filament/OrcaArena Generic TPU.json rename to resources/profiles/OrcaArena/filament/Generic TPU @OrcaArena.json index a1451c04fd..75fcc13a79 100644 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic TPU.json +++ b/resources/profiles/OrcaArena/filament/Generic TPU @OrcaArena.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "OrcaArena Generic TPU", + "name": "Generic TPU @OrcaArena", "inherits": "fdm_filament_tpu", + "renamed_from": "OrcaArena Generic TPU", "from": "system", - "setting_id": "uPHnZUr5Sb16uKZm", - "filament_id": "GFU99", + "setting_id": "GBRnBtqYf9H8pQKU", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @0.2 nozzle.json deleted file mode 100644 index 37062950e4..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ABS @0.2 nozzle.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic ABS @0.2 nozzle", - "inherits": "OrcaArena Generic ABS @base", - "from": "system", - "setting_id": "o9UpKuDWgaJT7sM5", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "2" - ], - "compatible_printers": [ - "Orca Arena X1 Carbon 0.2 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @0.2 nozzle.json deleted file mode 100644 index 2d3f9a5026..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic ASA @0.2 nozzle.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic ASA @0.2 nozzle", - "inherits": "OrcaArena Generic ASA @base", - "from": "system", - "setting_id": "rV2Uymwz7aoouqiN", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "2" - ], - "compatible_printers": [ - "Orca Arena X1 Carbon 0.2 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PC @0.2 nozzle.json deleted file mode 100644 index 0a26869776..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PC @0.2 nozzle.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PC @0.2 nozzle", - "inherits": "OrcaArena Generic PC @base", - "from": "system", - "setting_id": "THS8jolD0RsYaFzY", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "1" - ], - "compatible_printers": [ - "Orca Arena X1 Carbon 0.2 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @0.2 nozzle.json deleted file mode 100644 index 375031f137..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG @0.2 nozzle.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PETG @0.2 nozzle", - "inherits": "OrcaArena Generic PETG @base", - "from": "system", - "setting_id": "jcoeFJFmDil7U667", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "1" - ], - "compatible_printers": [ - "Orca Arena X1 Carbon 0.2 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG.json deleted file mode 100644 index 8771a7b609..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PETG.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PETG", - "inherits": "OrcaArena Generic PETG @base", - "from": "system", - "setting_id": "1hFOFT9YOdnKBw1d", - "instantiation": "true", - "compatible_printers": [ - "Orca Arena X1 Carbon 0.4 nozzle", - "Orca Arena X1 Carbon 0.6 nozzle", - "Orca Arena X1 Carbon 0.8 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF.json deleted file mode 100644 index 4a04e96360..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA-CF.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PLA-CF", - "inherits": "OrcaArena Generic PLA-CF @base", - "from": "system", - "setting_id": "qHV6B5JvmdtAQeNs", - "instantiation": "true", - "compatible_printers": [ - "Orca Arena X1 Carbon 0.4 nozzle", - "Orca Arena X1 Carbon 0.6 nozzle", - "Orca Arena X1 Carbon 0.8 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA.json deleted file mode 100644 index 2a3aef423c..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PLA.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PLA", - "inherits": "OrcaArena Generic PLA @base", - "from": "system", - "setting_id": "jGG0BiyRGgPDP8rB", - "instantiation": "true", - "compatible_printers": [ - "Orca Arena X1 Carbon 0.4 nozzle", - "Orca Arena X1 Carbon 0.6 nozzle", - "Orca Arena X1 Carbon 0.8 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @0.2 nozzle.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @0.2 nozzle.json deleted file mode 100644 index 8892aac57f..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA @0.2 nozzle.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PVA @0.2 nozzle", - "inherits": "OrcaArena Generic PVA @base", - "from": "system", - "setting_id": "N6p6wvNCjR4Lv0WC", - "instantiation": "true", - "filament_max_volumetric_speed": [ - "0.5" - ], - "compatible_printers": [ - "Orca Arena X1 Carbon 0.2 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA.json b/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA.json deleted file mode 100644 index 42a68b5fee..0000000000 --- a/resources/profiles/OrcaArena/filament/OrcaArena Generic PVA.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "filament", - "name": "OrcaArena Generic PVA", - "inherits": "OrcaArena Generic PVA @base", - "from": "system", - "setting_id": "Qh5TOtrBfOFul0OC", - "instantiation": "true", - "compatible_printers": [ - "Orca Arena X1 Carbon 0.4 nozzle", - "Orca Arena X1 Carbon 0.6 nozzle", - "Orca Arena X1 Carbon 0.8 nozzle" - ] -} diff --git a/resources/profiles/OrcaArena/filament/PolyLite PLA @base.json b/resources/profiles/OrcaArena/filament/PolyLite PLA @base.json index 692492d21a..276bef31c5 100644 --- a/resources/profiles/OrcaArena/filament/PolyLite PLA @base.json +++ b/resources/profiles/OrcaArena/filament/PolyLite PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL00", + "filament_id": "OF5CgdDq", "instantiation": "false", "filament_vendor": [ "Polymaker" diff --git a/resources/profiles/OrcaArena/filament/PolyTerra PLA @base.json b/resources/profiles/OrcaArena/filament/PolyTerra PLA @base.json index c572a15b91..6e167c7248 100644 --- a/resources/profiles/OrcaArena/filament/PolyTerra PLA @base.json +++ b/resources/profiles/OrcaArena/filament/PolyTerra PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL01", + "filament_id": "OFW29a9R", "instantiation": "false", "filament_vendor": [ "Polymaker" diff --git a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json index 362496ba28..e375904da2 100644 --- a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json +++ b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "OrcaArena Generic PLA Silk;OrcaArena Generic PLA;Arena PLA Matte @Arena X1C;Arena PLA Basic @Arena X1C;Arena ABS @Arena X1C;Arena PC @Arena X1C;Arena Support W @Arena X1C;Arena TPU 95A @Arena X1C;PolyTerra PLA @Arena X1C;PolyLite PLA @Arena X1C;" + "default_materials": "Generic PLA Silk @OrcaArena;Generic PLA @OrcaArena;Arena PLA Matte @Arena X1C;Arena PLA Basic @Arena X1C;Arena ABS @Arena X1C;Arena PC @Arena X1C;Arena Support W @Arena X1C;Arena TPU 95A @Arena X1C;PolyTerra PLA @Arena X1C;PolyLite PLA @Arena X1C;" } diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 9701c6eb0d..c7b203d5f1 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ @@ -525,8 +525,8 @@ "sub_path": "filament/DREMC/DREMC PA6-CF @base.json" }, { - "name": "Elegoo PAHT @base", - "sub_path": "filament/Elegoo/Elegoo PAHT @base.json" + "name": "Elegoo PAHT-CF @base", + "sub_path": "filament/Elegoo/Elegoo PAHT-CF @base.json" }, { "name": "FILL3D PA @base", @@ -584,6 +584,10 @@ "name": "Generic PE @System", "sub_path": "filament/Generic PE @System.json" }, + { + "name": "Generic PE-CF @base", + "sub_path": "filament/Generic PE-CF @base.json" + }, { "name": "Generic PE-CF @System", "sub_path": "filament/Generic PE-CF @System.json" @@ -672,10 +676,18 @@ "name": "Generic PETG @System", "sub_path": "filament/Generic PETG @System.json" }, + { + "name": "Generic PETG HF @base", + "sub_path": "filament/Generic PETG HF @base.json" + }, { "name": "Generic PETG HF @System", "sub_path": "filament/Generic PETG HF @System.json" }, + { + "name": "Generic PETG-CF @base", + "sub_path": "filament/Generic PETG-CF @base.json" + }, { "name": "Generic PETG-CF @System", "sub_path": "filament/Generic PETG-CF @System.json" @@ -864,6 +876,10 @@ "name": "Generic PLA High Speed @System", "sub_path": "filament/Generic PLA High Speed @System.json" }, + { + "name": "Generic PLA Matte @base", + "sub_path": "filament/Generic PLA Matte @base.json" + }, { "name": "Generic PLA Matte @System", "sub_path": "filament/Generic PLA Matte @System.json" @@ -1072,10 +1088,18 @@ "name": "Generic PP @System", "sub_path": "filament/Generic PP @System.json" }, + { + "name": "Generic PP-CF @base", + "sub_path": "filament/Generic PP-CF @base.json" + }, { "name": "Generic PP-CF @System", "sub_path": "filament/Generic PP-CF @System.json" }, + { + "name": "Generic PP-GF @base", + "sub_path": "filament/Generic PP-GF @base.json" + }, { "name": "Generic PP-GF @System", "sub_path": "filament/Generic PP-GF @System.json" @@ -1145,8 +1169,8 @@ "sub_path": "filament/DREMC/DREMC TPU 95A @base.json" }, { - "name": "Elegoo TPU @base", - "sub_path": "filament/Elegoo/Elegoo TPU @base.json" + "name": "Elegoo TPU 95A @base", + "sub_path": "filament/Elegoo/Elegoo TPU 95A @base.json" }, { "name": "Eolas Prints TPU D60 UV Resistant @System", @@ -1264,6 +1288,10 @@ "name": "Elegoo ASA @System", "sub_path": "filament/Elegoo/Elegoo ASA @System.json" }, + { + "name": "Elegoo ASA-CF @base", + "sub_path": "filament/Elegoo/Elegoo ASA-CF @base.json" + }, { "name": "Elegoo ASA-CF @System", "sub_path": "filament/Elegoo/Elegoo ASA-CF @System.json" @@ -1356,6 +1384,10 @@ "name": "Elegoo PC @System", "sub_path": "filament/Elegoo/Elegoo PC @System.json" }, + { + "name": "Elegoo PC-FR @base", + "sub_path": "filament/Elegoo/Elegoo PC-FR @base.json" + }, { "name": "Elegoo PC-FR @System", "sub_path": "filament/Elegoo/Elegoo PC-FR @System.json" @@ -1412,6 +1444,10 @@ "name": "Elas PETG Basic @System", "sub_path": "filament/Elas/Elas PETG Basic @System.json" }, + { + "name": "Elegoo PET-CF @base", + "sub_path": "filament/Elegoo/Elegoo PET-CF @base.json" + }, { "name": "Elegoo PET-CF @System", "sub_path": "filament/Elegoo/Elegoo PET-CF @System.json" @@ -1420,26 +1456,50 @@ "name": "Elegoo PETG @System", "sub_path": "filament/Elegoo/Elegoo PETG @System.json" }, + { + "name": "Elegoo PETG HF @base", + "sub_path": "filament/Elegoo/Elegoo PETG HF @base.json" + }, { "name": "Elegoo PETG HF @System", "sub_path": "filament/Elegoo/Elegoo PETG HF @System.json" }, + { + "name": "Elegoo PETG PRO @base", + "sub_path": "filament/Elegoo/Elegoo PETG PRO @base.json" + }, { "name": "Elegoo PETG PRO @System", "sub_path": "filament/Elegoo/Elegoo PETG PRO @System.json" }, + { + "name": "Elegoo PETG Translucent @base", + "sub_path": "filament/Elegoo/Elegoo PETG Translucent @base.json" + }, { "name": "Elegoo PETG Translucent @System", "sub_path": "filament/Elegoo/Elegoo PETG Translucent @System.json" }, + { + "name": "Elegoo PETG-CF @base", + "sub_path": "filament/Elegoo/Elegoo PETG-CF @base.json" + }, { "name": "Elegoo PETG-CF @System", "sub_path": "filament/Elegoo/Elegoo PETG-CF @System.json" }, + { + "name": "Elegoo PETG-GF @base", + "sub_path": "filament/Elegoo/Elegoo PETG-GF @base.json" + }, { "name": "Elegoo PETG-GF @System", "sub_path": "filament/Elegoo/Elegoo PETG-GF @System.json" }, + { + "name": "Elegoo Rapid PETG @base", + "sub_path": "filament/Elegoo/Elegoo Rapid PETG @base.json" + }, { "name": "Elegoo Rapid PETG @System", "sub_path": "filament/Elegoo/Elegoo Rapid PETG @System.json" @@ -1592,54 +1652,106 @@ "name": "Elegoo PLA @System", "sub_path": "filament/Elegoo/Elegoo PLA @System.json" }, + { + "name": "Elegoo PLA Basic @base", + "sub_path": "filament/Elegoo/Elegoo PLA Basic @base.json" + }, { "name": "Elegoo PLA Basic @System", "sub_path": "filament/Elegoo/Elegoo PLA Basic @System.json" }, + { + "name": "Elegoo PLA Galaxy @base", + "sub_path": "filament/Elegoo/Elegoo PLA Galaxy @base.json" + }, { "name": "Elegoo PLA Galaxy @System", "sub_path": "filament/Elegoo/Elegoo PLA Galaxy @System.json" }, + { + "name": "Elegoo PLA Glow @base", + "sub_path": "filament/Elegoo/Elegoo PLA Glow @base.json" + }, { "name": "Elegoo PLA Glow @System", "sub_path": "filament/Elegoo/Elegoo PLA Glow @System.json" }, + { + "name": "Elegoo PLA Marble @base", + "sub_path": "filament/Elegoo/Elegoo PLA Marble @base.json" + }, { "name": "Elegoo PLA Marble @System", "sub_path": "filament/Elegoo/Elegoo PLA Marble @System.json" }, + { + "name": "Elegoo PLA Matte @base", + "sub_path": "filament/Elegoo/Elegoo PLA Matte @base.json" + }, { "name": "Elegoo PLA Matte @System", "sub_path": "filament/Elegoo/Elegoo PLA Matte @System.json" }, + { + "name": "Elegoo PLA PRO @base", + "sub_path": "filament/Elegoo/Elegoo PLA PRO @base.json" + }, { "name": "Elegoo PLA PRO @System", "sub_path": "filament/Elegoo/Elegoo PLA PRO @System.json" }, + { + "name": "Elegoo PLA Silk @base", + "sub_path": "filament/Elegoo/Elegoo PLA Silk @base.json" + }, { "name": "Elegoo PLA Silk @System", "sub_path": "filament/Elegoo/Elegoo PLA Silk @System.json" }, + { + "name": "Elegoo PLA Sparkle @base", + "sub_path": "filament/Elegoo/Elegoo PLA Sparkle @base.json" + }, { "name": "Elegoo PLA Sparkle @System", "sub_path": "filament/Elegoo/Elegoo PLA Sparkle @System.json" }, + { + "name": "Elegoo PLA Translucent2 @base", + "sub_path": "filament/Elegoo/Elegoo PLA Translucent2 @base.json" + }, { "name": "Elegoo PLA Translucent2 @System", "sub_path": "filament/Elegoo/Elegoo PLA Translucent2 @System.json" }, + { + "name": "Elegoo PLA Wood @base", + "sub_path": "filament/Elegoo/Elegoo PLA Wood @base.json" + }, { "name": "Elegoo PLA Wood @System", "sub_path": "filament/Elegoo/Elegoo PLA Wood @System.json" }, + { + "name": "Elegoo PLA+ @base", + "sub_path": "filament/Elegoo/Elegoo PLA+ @base.json" + }, { "name": "Elegoo PLA+ @System", "sub_path": "filament/Elegoo/Elegoo PLA+ @System.json" }, + { + "name": "Elegoo PLA-CF @base", + "sub_path": "filament/Elegoo/Elegoo PLA-CF @base.json" + }, { "name": "Elegoo PLA-CF @System", "sub_path": "filament/Elegoo/Elegoo PLA-CF @System.json" }, + { + "name": "Elegoo Rapid PLA+ @base", + "sub_path": "filament/Elegoo/Elegoo Rapid PLA+ @base.json" + }, { "name": "Elegoo Rapid PLA+ @System", "sub_path": "filament/Elegoo/Elegoo Rapid PLA+ @System.json" @@ -1760,6 +1872,10 @@ "name": "Panchroma PLA UV Shift @System", "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @System.json" }, + { + "name": "PolyLite Dual PLA @base", + "sub_path": "filament/Polymaker/PolyLite Dual PLA @base.json" + }, { "name": "PolyLite Dual PLA @System", "sub_path": "filament/Polymaker/PolyLite Dual PLA @System.json" @@ -1904,6 +2020,10 @@ "name": "DREMC TPU 95A @System", "sub_path": "filament/DREMC/DREMC TPU 95A @System.json" }, + { + "name": "Elegoo Rapid TPU 95A @base", + "sub_path": "filament/Elegoo/Elegoo Rapid TPU 95A @base.json" + }, { "name": "Elegoo Rapid TPU 95A @System", "sub_path": "filament/Elegoo/Elegoo Rapid TPU 95A @System.json" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json index 29d9f1c39c..22fcfceefa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PA-CF @base.json @@ -3,7 +3,7 @@ "name": "AliZ PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "AliZ003", + "filament_id": "OFd4zw5l", "instantiation": "false", "filament_type": [ "PA-CF" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json index 463a0d954e..1796d82a77 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG @base.json @@ -3,7 +3,7 @@ "name": "AliZ PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "AliZ001", + "filament_id": "OFocyw69", "instantiation": "false", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json index ad96c2621f..5c5a0113d5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "AliZ PETG-CF @base", "inherits": "AliZ PETG @base", "from": "system", - "filament_id": "AZ01-1", + "filament_id": "OFJOFnOZ", "instantiation": "false", "fan_cooling_layer_time": [ "30" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json index f92cb73736..d6f9adc470 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PETG-Metal @base.json @@ -3,7 +3,7 @@ "name": "AliZ PETG-Metal @base", "inherits": "AliZ PETG @base", "from": "system", - "filament_id": "AZ01-2", + "filament_id": "OFOABq7t", "instantiation": "false", "fan_cooling_layer_time": [ "30" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json index 6323f62cca..8bb139bdbb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/AliZ/AliZ PLA @base.json @@ -3,7 +3,7 @@ "name": "AliZ PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "AliZ002", + "filament_id": "OFyxayW4", "instantiation": "false", "enable_pressure_advance": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS @base.json index 6628007eef..62c2f3bc84 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS @base.json @@ -3,7 +3,7 @@ "name": "Bambu ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OGFB00", + "filament_id": "OFhuaUQB", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS-GF @base.json index a34c88e45d..5cdd145c56 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ABS-GF @base.json @@ -3,7 +3,7 @@ "name": "Bambu ABS-GF @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OGFB50", + "filament_id": "OFknl9Iz", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA @base.json index c06136e268..432f106879 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OGFB01", + "filament_id": "OFfBpSRI", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "eng_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-Aero @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-Aero @base.json index 043335fe0d..8343f4f8cb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-Aero @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-Aero @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA-Aero @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OGFB02", + "filament_id": "OFXzQ4yL", "instantiation": "false", "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: ASA Aero Printing Guide.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-CF @base.json index 98d86450d2..66abe8195a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu ASA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu ASA-CF @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OGFB51", + "filament_id": "OF0wBGNx", "instantiation": "false", "eng_plate_temp": [ "100" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA-CF @base.json index f63213b0b1..00df3d58ef 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFN03", + "filament_id": "OFFNYwWR", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-CF @base.json index 21d5b6c18b..578e30294c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFN05", + "filament_id": "OFniMuTN", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-GF @base.json index cd54c4ac9b..c9eb830cad 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PA6-GF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PA6-GF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFN08", + "filament_id": "OFNk8bxk", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PAHT-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PAHT-CF @base.json index 9bde2b612b..a028b7f7dc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PAHT-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PAHT-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFN04", + "filament_id": "OF2VFe4J", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC @base.json index 577ae892f4..5ce775f0d0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC @base.json @@ -3,7 +3,7 @@ "name": "Bambu PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "OGFC00", + "filament_id": "OFKhMPeX", "instantiation": "false", "filament_vendor": [ "Bambu Lab" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC FR @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC FR @base.json index 40527941a2..18c02b41a1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC FR @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PC FR @base.json @@ -3,7 +3,7 @@ "name": "Bambu PC FR @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "OGFC01", + "filament_id": "OFg57Nmc", "instantiation": "false", "filament_cost": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PET-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PET-CF @base.json index c455832b9c..fe22a52a0a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PET-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PET-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFT01", + "filament_id": "OFHa48An", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Basic @base.json index 755f78cf08..117416a251 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Basic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG Basic @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG00", + "filament_id": "OFFvzqcd", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG HF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG HF @base.json index 7a829f34dc..ef4a817974 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG HF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG HF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG HF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG02", + "filament_id": "OFovEIbw", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Translucent @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Translucent @base.json index 0026f408f2..09efd2d8b5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Translucent @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG Translucent @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG Translucent @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG01", + "filament_id": "OFwPrlCM", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG-CF @base.json index 8112a1d025..89fe7b3dde 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PETG-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG50", + "filament_id": "OFTRZ8Y4", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Aero @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Aero @base.json index 1f11ddcc54..1fb04ff6a9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Aero @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Aero @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Aero @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA11", + "filament_id": "OFBSW57R", "instantiation": "false", "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: Instructions for printing RC model with foaming PLA (PLA Aero).", "fan_min_speed": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Basic @base.json index 379db35b99..d5614af65f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Basic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA00", + "filament_id": "OFoiVqVM", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Dynamic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Dynamic @base.json index abd30f6606..7b1290817d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Dynamic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Dynamic @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Dynamic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA13", + "filament_id": "OFDGigEI", "instantiation": "false", "filament_cost": [ "31.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Galaxy @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Galaxy @base.json index b52fc99f23..3ecc707ddf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Galaxy @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA15", + "filament_id": "OFQ3e56w", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Glow @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Glow @base.json index 9ab5d3b6ff..8395082e6d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Glow @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA12", + "filament_id": "OFEkPBwx", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Impact @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Impact @base.json index 11edaa9736..1ff6cb84cc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Impact @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Impact @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Impact @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA03", + "filament_id": "OFTGHyNC", "instantiation": "false", "filament_cost": [ "25.4" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Marble @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Marble @base.json index 0f427b2047..0faa115520 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Marble @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA07", + "filament_id": "OF9OlTWH", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Matte @base.json index b1685a3aa1..ac7760f632 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Matte @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA01", + "filament_id": "OFXIbw5D", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Metal @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Metal @base.json index c24f1d8d9b..81a9c95c24 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Metal @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA02", + "filament_id": "OFrKLeE3", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk @base.json index e4930ed9c3..f76daf5b77 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA05", + "filament_id": "OFEGNJD4", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk+ @base.json index c4e44ff4ac..93e6e81148 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Silk+ @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Silk+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA06", + "filament_id": "OFUanySo", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Sparkle @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Sparkle @base.json index 62ae9c7d6b..152b762069 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Sparkle @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Sparkle @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Sparkle @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA08", + "filament_id": "OFDxfPgH", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Tough @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Tough @base.json index d257a2bc53..a5aa15e8c1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Tough @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Tough @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Tough @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA09", + "filament_id": "OFaQMgRH", "instantiation": "false", "filament_cost": [ "28.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Wood @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Wood @base.json index 3ebad53cd8..b9686af187 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Wood @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA Wood @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA Wood @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA16", + "filament_id": "OFMjtqTC", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA-CF @base.json index e5c0a31499..7bd37d40a4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA50", + "filament_id": "OFEswT5W", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPA-CF @base.json index 43b897ca86..8519203173 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPA-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PPA-CF @base", "inherits": "fdm_filament_ppa", "from": "system", - "filament_id": "OGFN06", + "filament_id": "OF54B0S0", "instantiation": "false", "filament_vendor": [ "Bambu Lab" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPS-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPS-CF @base.json index d27c9164d1..b48f3b9300 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPS-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PPS-CF @base.json @@ -3,7 +3,7 @@ "name": "Bambu PPS-CF @base", "inherits": "fdm_filament_pps", "from": "system", - "filament_id": "OGFT02", + "filament_id": "OF4RvVuU", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PVA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PVA @base.json index 8b73770499..1c6e0f2201 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PVA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu PVA @base.json @@ -3,7 +3,7 @@ "name": "Bambu PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "OGFS04", + "filament_id": "OFzyIxba", "instantiation": "false", "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PA PET @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PA PET @base.json index 2662d49840..7adbcb812d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PA PET @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PA PET @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PA/PET @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFS03", + "filament_id": "OFMTK0UC", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA @base.json index 68d2468a07..9511f5c0cd 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFS02", + "filament_id": "OFAnyRUI", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA-PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA-PETG @base.json index 1dea20d081..63802d3794 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA-PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support For PLA-PETG @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support For PLA/PETG @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFS05", + "filament_id": "OFIfnzxC", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support G @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support G @base.json index 5b7ce7f02b..35cc03e9b8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support G @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support G @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support G @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFS01", + "filament_id": "OFQHiNJs", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support W @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support W @base.json index 2e1f1429c1..a922afd83e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support W @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support W @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support W @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFS00", + "filament_id": "OFsHSVZc", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support for ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support for ABS @base.json index bf714a0352..b844ac16c7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support for ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu Support for ABS @base.json @@ -3,7 +3,7 @@ "name": "Bambu Support for ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OGFS06", + "filament_id": "OFf6mfQO", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_max_speed": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A @base.json index a79d6a575e..5b71c52f81 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "OGFU01", + "filament_id": "OFVCkX5w", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A HF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A HF @base.json index 00bef8980a..95263eb4ef 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A HF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Bambu/Bambu TPU 95A HF @base.json @@ -3,7 +3,7 @@ "name": "Bambu TPU 95A HF @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "OGFU00", + "filament_id": "OFvKUnLh", "instantiation": "false", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json index 201d230ad3..c234e34567 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json @@ -3,7 +3,7 @@ "name": "COEX ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "CXABSB01", + "filament_id": "OF99UMPq", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json index 08c5edfc25..7e965bc256 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json @@ -3,7 +3,7 @@ "name": "COEX ABS PRIME @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "CXABPB09", + "filament_id": "OFuWCQXN", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json index b5c2b540be..1bc1230eae 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json @@ -3,7 +3,7 @@ "name": "COEX ASA PRIME @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "CXASAB04", + "filament_id": "OFtpXCCv", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json index 807e723f78..c023668f4a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "COEX NYLEX PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "CXPACB23", + "filament_id": "OF0NgY1y", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json index 34c323d800..15de223500 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json @@ -3,7 +3,7 @@ "name": "COEX NYLEX UNFILLED @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "CXPAUB21", + "filament_id": "OFJs1ToM", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json index acecaf1737..9fce322405 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json @@ -3,7 +3,7 @@ "name": "COEX PCTG PRIME @base", "inherits": "fdm_filament_pctg", "from": "system", - "filament_id": "CXPCTB15", + "filament_id": "OFwu7IAG", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json index 09c882e777..9f22293450 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json @@ -3,7 +3,7 @@ "name": "COEX PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "CXPETB13", + "filament_id": "OFvTVZc3", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json index faabeaea75..a0b2f76888 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json @@ -3,7 +3,7 @@ "name": "COEX PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "CXPLAB02", + "filament_id": "OFhlCNqq", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json index d2423972a7..a9a5e83c0b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json @@ -3,7 +3,7 @@ "name": "COEX PLA PRIME @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "CXPLAB08", + "filament_id": "OFd2vX0G", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json index 40a9e1eb05..f06642c432 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json @@ -3,7 +3,7 @@ "name": "COEX PLA+Silk @base", "inherits": "fdm_filament_pla_silk", "from": "system", - "filament_id": "CXPLSB03", + "filament_id": "OF0pzFLc", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json index 4f1f540a5f..5c715dea33 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json @@ -3,7 +3,7 @@ "name": "COEX TPE 30D @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "CX30DB20", + "filament_id": "OFVptRxp", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json index 6130ef11b2..81d5d81f1c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json @@ -3,7 +3,7 @@ "name": "COEX TPE 40D @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "CX40DB20", + "filament_id": "OFfnXFie", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json index 0ab5886963..b2e0aab688 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json @@ -3,7 +3,7 @@ "name": "COEX TPE 60D @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "CX60DB19", + "filament_id": "OFfr4XNO", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json index a4b0ebce09..027ff45226 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json @@ -3,7 +3,7 @@ "name": "COEX TPU 60A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "CX60AB17", + "filament_id": "OFE0NFRh", "instantiation": "false", "filament_vendor": [ "COEX 3D" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json index b4835fdeca..fbd2a32e8f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json @@ -3,7 +3,7 @@ "name": "DREMC ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "DREMC003", + "filament_id": "OFzrUUxc", "instantiation": "false", "filament_cost": [ "24" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json index f9b2cd2c40..6817351573 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json @@ -3,7 +3,7 @@ "name": "DREMC ABS+ @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "DREMC004", + "filament_id": "OF99vXPs", "instantiation": "false", "filament_cost": [ "24" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json index b5917c922e..046a015930 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json @@ -3,7 +3,7 @@ "name": "DREMC ABS-GF @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "DREMC009", + "filament_id": "OFCidU7j", "instantiation": "false", "fan_cooling_layer_time": [ "12" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json index 324e484437..5e5e96b148 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json @@ -3,7 +3,7 @@ "name": "DREMC ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "DREMC005", + "filament_id": "OFLNgV3C", "instantiation": "false", "eng_plate_temp": [ "110" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json index b15fa0f629..ef6c3bc7b5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json @@ -3,7 +3,7 @@ "name": "DREMC ASA CF @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "DREMC012", + "filament_id": "OFdI4zMo", "instantiation": "false", "eng_plate_temp": [ "110" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json index 11f4e56de4..b916335f2f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json @@ -3,7 +3,7 @@ "name": "DREMC ASA GF @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "DREMC013", + "filament_id": "OF2xccEe", "instantiation": "false", "eng_plate_temp": [ "110" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json index aee897f402..3482ecedf6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json @@ -3,7 +3,7 @@ "name": "DREMC PA12-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "DREMC007", + "filament_id": "OFEhuUNq", "instantiation": "false", "fan_cooling_layer_time": [ "15" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json index 7d693fc142..fe5ef518a1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "DREMC PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "DREMC006", + "filament_id": "OFsoykbm", "instantiation": "false", "fan_cooling_layer_time": [ "15" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json index cc568e5ad6..9f7d27a1a0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json @@ -3,7 +3,7 @@ "name": "DREMC PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "DREMC008", + "filament_id": "OFwJ0qu2", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json index 840e0104f3..c67e185527 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json @@ -3,7 +3,7 @@ "name": "DREMC PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "DREMC002", + "filament_id": "OFVBlUFH", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json index cb2f3e166d..1d7f1b47af 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json @@ -3,7 +3,7 @@ "name": "DREMC PLA+ HS @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "DREMC011", + "filament_id": "OFJHBEGD", "instantiation": "false", "filament_cost": [ "26" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json index 698712e1dd..b989f6d59d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json @@ -3,7 +3,7 @@ "name": "DREMC PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "DREMC001", + "filament_id": "OFSwbBWS", "instantiation": "false", "filament_cost": [ "26" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json index ec5cecd565..6a696177e7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json @@ -3,7 +3,7 @@ "name": "DREMC PPA-CF @base", "inherits": "fdm_filament_ppa", "from": "system", - "filament_id": "DREMC010", + "filament_id": "OFiWaoqD", "instantiation": "false", "filament_vendor": [ "DREMC" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json index ba17ff46a8..63d4669b47 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json @@ -3,7 +3,7 @@ "name": "DREMC TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "DREMC010", + "filament_id": "OFYd5uS3", "instantiation": "false", "filament_cost": [ "40" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas ASA @base.json index b4da81db72..fbdb790d67 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas ASA @base.json @@ -3,7 +3,7 @@ "name": "Elas ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OGFB01", + "filament_id": "OFCoRobU", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "activate_air_filtration": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PETG Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PETG Basic @base.json index 8b6db5d3ad..bfed01a139 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PETG Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PETG Basic @base.json @@ -3,7 +3,7 @@ "name": "Elas PETG Basic @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG00", + "filament_id": "OFXTPuqV", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "complete_print_exhaust_fan_speed": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Basic @base.json index d3f34beb80..152ada6bb7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Basic @base.json @@ -3,7 +3,7 @@ "name": "Elas PLA Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA00", + "filament_id": "OFMuXBmO", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Pro @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Pro @base.json index 41fd91f011..098cd6ea04 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Pro @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elas/Elas PLA Pro @base.json @@ -3,7 +3,7 @@ "name": "Elas PLA Pro @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFA00", + "filament_id": "OFaYz8iE", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @base.json index af0dad8787..539b56876e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @base.json @@ -3,7 +3,7 @@ "name": "Elegoo ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OEABSB00", + "filament_id": "OFxOHhZw", "instantiation": "false", "eng_plate_temp": [ "90" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA @base.json index da502cf7b6..64875346e3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA @base.json @@ -3,7 +3,7 @@ "name": "Elegoo ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OEASAB00", + "filament_id": "OFobDOW5", "instantiation": "false", "eng_plate_temp": [ "90" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json index 13266c87b5..13ef86c2d9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo ASA-CF @System", - "inherits": "Elegoo ASA @base", + "inherits": "Elegoo ASA-CF @base", "from": "system", "setting_id": "XT1aUl4pe9t0Ijwg", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @base.json new file mode 100644 index 0000000000..155d6f8290 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo ASA-CF @base", + "inherits": "Elegoo ASA @base", + "from": "system", + "filament_id": "OFryjl35", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json index 7d22d28387..d07ac1dd64 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PAHT-CF @System", - "inherits": "Elegoo PAHT @base", + "inherits": "Elegoo PAHT-CF @base", "from": "system", "setting_id": "S073oXCeOlTEqh6L", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @base.json similarity index 95% rename from resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT @base.json rename to resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @base.json index dd444cd846..7c3abd1cdd 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Elegoo PAHT @base", + "name": "Elegoo PAHT-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OEPAHTB0", + "filament_id": "OF20kXr5", "instantiation": "false", "activate_air_filtration": [ "1" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @base.json index b7a5a62eda..ca5be19aa7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PC @base", "inherits": "fdm_filament_pc", "from": "system", - "filament_id": "OEPCB00", + "filament_id": "OFUyDDNv", "instantiation": "false", "filament_density": [ "1.25" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json index 1fecee514c..7d2ab85058 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PC-FR @System", - "inherits": "Elegoo PC @base", + "inherits": "Elegoo PC-FR @base", "from": "system", "setting_id": "JcopkaXZ7YyLjIcw", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @base.json new file mode 100644 index 0000000000..91034fda41 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PC-FR @base", + "inherits": "Elegoo PC @base", + "from": "system", + "filament_id": "OFlsTpJG", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json index 0c1c4265b7..b7191e482b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PET-CF @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PET-CF @base", "from": "system", "setting_id": "oloKoC4Bs8dXatMU", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @base.json new file mode 100644 index 0000000000..5f9561f5a9 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Elegoo PET-CF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFe98A1y", + "instantiation": "false", + "filament_type": [ + "PET-CF" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @base.json index 997f38ed4d..dc50cbe0dc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OEPETGB0", + "filament_id": "OFLcd093", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json index 35b941684a..d912550c88 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG HF @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG HF @base", "from": "system", "setting_id": "d6gNuzrG00SXvMth", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @base.json new file mode 100644 index 0000000000..9645c4572f --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG HF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFlP3KWq", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @System.json index c16448b1e4..aa30920b7c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG PRO @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG PRO @base", "from": "system", "setting_id": "fdfCAYQEoYa9DN6I", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @base.json new file mode 100644 index 0000000000..ec604d722c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG PRO @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFOsHDnB", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json index 0346a8eef0..edb04a6dce 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG Translucent @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG Translucent @base", "from": "system", "setting_id": "80Auuv3K7l8IptF3", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @base.json new file mode 100644 index 0000000000..2d7d0f9777 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG Translucent @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OF6Ll8lK", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json index 81e5b99afc..03de8dad0f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-CF @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-CF @base", "from": "system", "setting_id": "bXRJMaXxB3V49x7R", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @base.json new file mode 100644 index 0000000000..60a643b2a3 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG-CF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFuUuIhR", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json index 48cd287ba6..f315756987 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PETG-GF @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo PETG-GF @base", "from": "system", "setting_id": "9NXaejLGh1VFX8bg", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @base.json new file mode 100644 index 0000000000..3ff4b96375 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PETG-GF @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFmveLWz", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA @base.json index 6b4622c0ed..45456ab6d8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA @base.json @@ -3,7 +3,7 @@ "name": "Elegoo PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OEPLAB00", + "filament_id": "OFvgE0Zh", "instantiation": "false", "fan_cooling_layer_time": [ "80" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json index cdff566915..15d6f46a3f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Basic @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Basic @base", "from": "system", "setting_id": "qHDFHECwAInvpuk2", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @base.json new file mode 100644 index 0000000000..93c52a3382 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Basic @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFm06H6V", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json index 6874695462..6fd7f8f606 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Galaxy @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Galaxy @base", "from": "system", "setting_id": "WXEEksjWsTbRyCPh", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @base.json new file mode 100644 index 0000000000..a25fcf8daa --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Galaxy @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFU1zPxE", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json index 1cd70e904b..9c4c2075b8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Glow @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Glow @base", "from": "system", "setting_id": "yFdF2YmEMeCHiPxl", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @base.json new file mode 100644 index 0000000000..a07012d83b --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Glow @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFjPXrXO", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json index 825a6c0dd9..755e42e758 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Marble @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Marble @base", "from": "system", "setting_id": "kq7NS8IhIV4cBI1C", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @base.json new file mode 100644 index 0000000000..b8990a7c1b --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Marble @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFfuhviw", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @System.json index e1361a4b5b..a05c57216e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Matte @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Matte @base", "from": "system", "setting_id": "UykE255l5V0oS0Ca", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @base.json new file mode 100644 index 0000000000..0394308e99 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Matte @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFsB2lxm", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @System.json index 3526f87a69..fbc18fac42 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA PRO @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA PRO @base", "from": "system", "setting_id": "62GiUVVZd8kx21vw", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @base.json new file mode 100644 index 0000000000..731f5c5ca4 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA PRO @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OF1hznGB", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @System.json index 475354ca02..79ae01da5b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Silk @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Silk @base", "from": "system", "setting_id": "VkXguNj79KADxuYn", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @base.json new file mode 100644 index 0000000000..e708794eea --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Silk @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFXz7Mwx", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json index fc4070bbe7..c7c030ff5a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Sparkle @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Sparkle @base", "from": "system", "setting_id": "VwZIFCojZLQLPrI1", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @base.json new file mode 100644 index 0000000000..cc292ac240 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Sparkle @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFhcYzR8", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json index 178976527f..28993f13b4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Translucent2 @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Translucent2 @base", "from": "system", "setting_id": "q0koYRlO9X8xLXPM", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @base.json new file mode 100644 index 0000000000..c0e2e23dfe --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Translucent2 @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFn1QaY3", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json index 3d6c95ed00..1e86976608 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA Wood @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA Wood @base", "from": "system", "setting_id": "pMgazYJG8tyTpAVE", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @base.json new file mode 100644 index 0000000000..4e3362a5d3 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA Wood @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFWYtgCa", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @System.json index b2bd83416d..2315cd2ac4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA+ @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA+ @base", "from": "system", "setting_id": "q7NpDtaD9dTq1HIZ", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @base.json new file mode 100644 index 0000000000..f90355d85c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA+ @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFBUIlZ7", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @System.json index 4ec26c71ba..9b79f54799 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo PLA-CF @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo PLA-CF @base", "from": "system", "setting_id": "cYxM93L2KZBnAuWu", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @base.json new file mode 100644 index 0000000000..4f4979d95f --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA-CF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFln72PT", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @System.json index 92b7cb43ef..7fd3f8d160 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo Rapid PETG @System", - "inherits": "Elegoo PETG @base", + "inherits": "Elegoo Rapid PETG @base", "from": "system", "setting_id": "uUQSVOvP8tAaDqvB", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @base.json new file mode 100644 index 0000000000..e328cf0a75 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PETG @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid PETG @base", + "inherits": "Elegoo PETG @base", + "from": "system", + "filament_id": "OFLXvuMr", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @System.json index f19e51bcf3..4f3ee82ced 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo Rapid PLA+ @System", - "inherits": "Elegoo PLA @base", + "inherits": "Elegoo Rapid PLA+ @base", "from": "system", "setting_id": "HZ4nP67iAG7a243e", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @base.json new file mode 100644 index 0000000000..06fd489c41 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid PLA+ @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid PLA+ @base", + "inherits": "Elegoo PLA @base", + "from": "system", + "filament_id": "OFkhhUS0", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json index 2006a6494b..3d15ba541c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo Rapid TPU 95A @System", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo Rapid TPU 95A @base", "from": "system", "setting_id": "WXLuO112bsdM37MI", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @base.json new file mode 100644 index 0000000000..3ffd591fdc --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Elegoo Rapid TPU 95A @base", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "filament_id": "OF30Ftju", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json index fb4260fae0..020bb85945 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Elegoo TPU 95A @System", - "inherits": "Elegoo TPU @base", + "inherits": "Elegoo TPU 95A @base", "from": "system", "setting_id": "SLcn59fIZPDl2brJ", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @base.json similarity index 89% rename from resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU @base.json rename to resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @base.json index 28b8c921a6..4380ee77ce 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @base.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Elegoo TPU @base", + "name": "Elegoo TPU 95A @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "OETPUB00", + "filament_id": "OFqHQNoZ", "instantiation": "false", "filament_density": [ "1.21" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ABS @System.json index 6d5dd368bf..09fe0e6298 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ABS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ABS @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP017", + "filament_id": "OFXCBZTA", "setting_id": "R1lkPc60BdFq6i2Z", "name": "Eolas Prints ABS @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ASA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ASA @System.json index 8446ca6746..263752abf1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ASA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints ASA @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP018", + "filament_id": "OFlSNkhc", "setting_id": "JFXFsEzqXxNqxnsL", "name": "Eolas Prints ASA @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG @System.json index 104dd1e567..9f1c691c30 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP010", + "filament_id": "OFhWhL1i", "setting_id": "u9fzEmHRAACOHT6J", "name": "Eolas Prints PETG @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG Transition @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG Transition @System.json index 8e1aa05628..47245f3f54 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG Transition @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG Transition @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP012", + "filament_id": "OFRiFnfQ", "setting_id": "BY3z4yKW9PQZwgto", "name": "Eolas Prints PETG Transition @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG UV Resistant @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG UV Resistant @System.json index 8c4c299849..749b37cb54 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG UV Resistant @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PETG UV Resistant @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP011", + "filament_id": "OFx8Lmsd", "setting_id": "eexjO9xiesNROPCK", "name": "Eolas Prints PETG UV Resistant @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Antibacterial @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Antibacterial @System.json index 9ce7087dd2..a9cbc62ed2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Antibacterial @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Antibacterial @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP008", + "filament_id": "OFkzr35f", "setting_id": "LAihILsSxo3djWjq", "name": "Eolas Prints PLA Antibacterial @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA High Speed @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA High Speed @System.json index 2f7d92c799..7488530282 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA High Speed @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA High Speed @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP005", + "filament_id": "OFvzvwCu", "setting_id": "5g69jS4PRY0PbXvI", "name": "Eolas Prints PLA High Speed @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 850 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 850 @System.json index 7200a7d631..c4c66400e4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 850 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 850 @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP006", + "filament_id": "OFH2nN08", "setting_id": "jdjLUTsIovrt3UAF", "name": "Eolas Prints PLA INGEO 850 @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 870 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 870 @System.json index 4df9130980..f8ae8e662c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 870 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA INGEO 870 @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP007", + "filament_id": "OFPc4zVY", "setting_id": "AafBj7XbFWaNhKHu", "name": "Eolas Prints PLA INGEO 870 @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Matte @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Matte @System.json index 4b14da901c..9489d9f0f7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Matte @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Matte @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP002", + "filament_id": "OFf5awy4", "setting_id": "7LiJHuwirgABvbUa", "name": "Eolas Prints PLA Matte @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Neon @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Neon @System.json index dff734c96d..d6619b629c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Neon @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Neon @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP004", + "filament_id": "OFrFBEfd", "setting_id": "sKgUBhF3VvETDkwg", "name": "Eolas Prints PLA Neon @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Premium @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Premium @System.json index b2455b02e3..03c332daa0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Premium @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Premium @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP001", + "filament_id": "OFtudokz", "setting_id": "O2Ur7FIG2YlVEyZp", "name": "Eolas Prints PLA Premium @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Silk @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Silk @System.json index 1c3184da11..b59d6ebf3d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Silk @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Silk @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP003", + "filament_id": "OFbP8zEO", "setting_id": "WN0GdqBsjhvnyDmG", "name": "Eolas Prints PLA Silk @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Transition @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Transition @System.json index 90e0b8d2f4..22bb2af20a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Transition @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints PLA Transition @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP009", + "filament_id": "OFHfzQXo", "setting_id": "o3RoG3NGSBlyBkfZ", "name": "Eolas Prints PLA Transition @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex 93A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex 93A @System.json index c7b9c26180..c2252c5df8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex 93A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex 93A @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP013", + "filament_id": "OFhfd722", "setting_id": "bQPvp6BCMzcG8FOi", "name": "Eolas Prints TPU Flex 93A @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D53 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D53 @System.json index c5a9a84ac3..f6b85ebd29 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D53 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D53 @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP014", + "filament_id": "OFIegjmD", "setting_id": "XIFP4KMuMtXF5bjQ", "name": "Eolas Prints TPU Flex D53 @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D60 UV Resistant @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D60 UV Resistant @System.json index 169d681f39..4fc33c0d64 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D60 UV Resistant @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Flex D60 UV Resistant @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP015", + "filament_id": "OFvVy7yo", "setting_id": "rJmsm0zjvsk9Dy0G", "name": "Eolas Prints TPU D60 UV Resistant @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Transition @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Transition @System.json index f5cd2eb40c..31dd33a87d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Transition @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Eolas Prints/Eolas Prints TPU Transition @System.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFSEP016", + "filament_id": "OFTOPcx0", "setting_id": "CM24KGoHLt0yLH93", "name": "Eolas Prints TPU Transition @System", "from": "system", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast ABS @base.json index be5c677c64..644ba0b1b8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast ABS @base.json @@ -3,7 +3,7 @@ "name": "FDplast ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "FDPLAST01", + "filament_id": "OFjorDcx", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast HIPS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast HIPS @base.json index 41563b6208..60e86f17eb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast HIPS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast HIPS @base.json @@ -3,7 +3,7 @@ "name": "FDplast HIPS @base", "inherits": "fdm_filament_hips", "from": "system", - "filament_id": "FDPLAST02", + "filament_id": "OFmJAd3A", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PETG @base.json index a1cdfe34fc..9087e8afa7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PETG @base.json @@ -3,7 +3,7 @@ "name": "FDplast PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "FDPLAST03", + "filament_id": "OFfJSCzm", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PLA @base.json index c2ce9ccd38..e98c3d22fb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast PLA @base.json @@ -3,7 +3,7 @@ "name": "FDplast PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "FDPLAST04", + "filament_id": "OFtr8eZw", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast SBS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast SBS @base.json index e396fee0fb..1ae33c2990 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast SBS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast SBS @base.json @@ -3,7 +3,7 @@ "name": "FDplast SBS @base", "inherits": "fdm_filament_sbs", "from": "system", - "filament_id": "FDPLAST05", + "filament_id": "OFtRn8X8", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast TPU @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast TPU @base.json index 4db983cd87..bf288f545b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast TPU @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FDplast/FDplast TPU @base.json @@ -3,7 +3,7 @@ "name": "FDplast TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "FDPLAST06", + "filament_id": "OFfmZrI3", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PA @base.json index 64800fce25..bb8f8905e3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PA @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PA @base", "from": "system", - "filament_id": "FILL3D006", + "filament_id": "OFJNeELv", "instantiation": "false", "inherits": "fdm_filament_pa", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG @base.json index c310be8cb2..f0a0e32f26 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PETG @base", "from": "system", - "filament_id": "FILL3D003", + "filament_id": "OFQbjX3s", "instantiation": "false", "inherits": "fdm_filament_pet", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG CF @base.json index 38214eec2c..0d1dc4a737 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PETG CF @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PETG CF @base", "from": "system", - "filament_id": "FILL3D007", + "filament_id": "OFOiJfLM", "instantiation": "false", "inherits": "fdm_filament_pet", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Basic @base.json index 8f2ee4ddf8..13d29eaaa8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Basic @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PLA Basic @base", "from": "system", - "filament_id": "FILL3D002", + "filament_id": "OFDpW3J8", "instantiation": "false", "inherits": "fdm_filament_pla", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Turbo @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Turbo @base.json index f5ec5f906a..38be0d7078 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Turbo @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PLA Turbo @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PLA Turbo @base", "from": "system", - "filament_id": "FILL3D001", + "filament_id": "OFoSknDB", "instantiation": "false", "inherits": "fdm_filament_pla", "adaptive_pressure_advance": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PP @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PP @base.json index 9e74676e50..708e4c50ec 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PP @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PP @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PP @base", "from": "system", - "filament_id": "FILL3D004", + "filament_id": "OFPWPlSC", "instantiation": "false", "inherits": "fdm_filament_pp", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PPCF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PPCF @base.json index 813eb8faf2..6d6aaf9e34 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PPCF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FILL3D/FILL3D PPCF @base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "FILL3D PPCF @base", "from": "system", - "filament_id": "FILL3D005", + "filament_id": "OFg8hMzT", "instantiation": "false", "inherits": "fdm_filament_pp", "filament_vendor": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG @base.json index 5195e151e3..340dc5da23 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG @base.json @@ -3,7 +3,7 @@ "name": "FilAr PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "FILARB03", + "filament_id": "OF5rnhjh", "instantiation": "false", "filament_type": [ "PETG" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Lima.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Lima.json index f63b93f11f..b1284f1d3d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Lima.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Lima.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "QuJY74Af8ssl9uuB", - "filament_id": "FILAR0047", + "filament_id": "OFt6e0US", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Radiante.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Radiante.json index 75b1bda3c7..00e5af59a1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Radiante.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Amarillo Radiante.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "aFO2PDBIQqvNlH9p", - "filament_id": "FILAR0048", + "filament_id": "OF0Vtzaw", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Boreal.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Boreal.json index ccb0abfbfe..cbed2c3aa7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Boreal.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Boreal.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "JQsOaH7Zcs0cLLPY", - "filament_id": "FILAR0049", + "filament_id": "OFNU9YIW", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Francia.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Francia.json index 135bea1c45..f2d8c16a43 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Francia.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Francia.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "O24dTvHOzlbikvmq", - "filament_id": "FILAR0050", + "filament_id": "OF44VYzK", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Imperial.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Imperial.json index af4921a5a8..8c917d750a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Imperial.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Azul Imperial.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "JAUmcvfO2lnmxGj5", - "filament_id": "FILAR0051", + "filament_id": "OF2Z1nT5", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Blanco Antartida.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Blanco Antartida.json index 19ece09a31..c2bd7f3368 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Blanco Antartida.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Blanco Antartida.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "dd4fL2ztjz4UiTaG", - "filament_id": "FILAR0052", + "filament_id": "OFsXQXbs", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cian.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cian.json index cc9e4d7422..ac1d1be6fe 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cian.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cian.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "kQFbBS3nxU7M2yPa", - "filament_id": "FILAR0053", + "filament_id": "OFnejEt4", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Coral.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Coral.json index 779c773a3e..9b3e380b57 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Coral.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Coral.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "fspbgXmAOWjFBQqh", - "filament_id": "FILAR0054", + "filament_id": "OFysxCep", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cristal.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cristal.json index 00b2b360f5..1e7c947bea 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cristal.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Cristal.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "MnA2FnHdIuViwo41", - "filament_id": "FILAR0055", + "filament_id": "OFJQDUk3", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Ceniza.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Ceniza.json index 194848d1bb..c20eb5fcad 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Ceniza.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Ceniza.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "oYjDczRs4U1JdteC", - "filament_id": "FILAR0056", + "filament_id": "OFybzvQN", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Plata.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Plata.json index bfba887890..93335c7951 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Plata.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Gris Plata.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "eCJ5aFcQ00m97U35", - "filament_id": "FILAR0057", + "filament_id": "OFgpLTMR", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Magenta.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Magenta.json index a7bb2ee141..5a8ac777f5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Magenta.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Magenta.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "CEOhwBE63SWwuh6P", - "filament_id": "FILAR0058", + "filament_id": "OFurdQxc", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Negro Azabache.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Negro Azabache.json index 6e51c8b275..5cba6c4a02 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Negro Azabache.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Negro Azabache.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "OPZin7y48ZEeiH8D", - "filament_id": "FILAR0059", + "filament_id": "OFq8gfS4", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Rojo Carmesi.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Rojo Carmesi.json index dc573cba91..3ed33ea0f9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Rojo Carmesi.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PETG Rojo Carmesi.json @@ -4,7 +4,7 @@ "inherits": "FilAr PETG @base", "from": "system", "setting_id": "ok1h38XzyQXPBIMM", - "filament_id": "FILAR0060", + "filament_id": "OFPbyOSk", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA @base.json index 04426a96ca..c5ed35c1f1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA @base.json @@ -3,7 +3,7 @@ "name": "FilAr PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "FILARB01", + "filament_id": "OF4KsW72", "instantiation": "false", "filament_type": [ "PLA" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Amarillo Lirio.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Amarillo Lirio.json index 6ba4cbfb87..1d6c41003b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Amarillo Lirio.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Amarillo Lirio.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "sZEY2QrlLsDkgZin", - "filament_id": "FILAR0022", + "filament_id": "OF8aFWfQ", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Azul Francia.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Azul Francia.json index ffc1c97a5a..a2f84470c4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Azul Francia.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Azul Francia.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "kOF3UfqKVqWKFwiH", - "filament_id": "FILAR0026", + "filament_id": "OFnYVFk2", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Antartida.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Antartida.json index a5bfa7d2d2..e9d68452dc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Antartida.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Antartida.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "9KxtnS1WoUAgH323", - "filament_id": "FILAR0017", + "filament_id": "OFHAccHz", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Calido.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Calido.json index 2f03fc3ce8..1166928647 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Calido.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Blanco Calido.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "pAToQatK3PVTMHrW", - "filament_id": "FILAR0018", + "filament_id": "OFKTSiYF", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Bronce.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Bronce.json index 58eafa2f7c..599c64038c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Bronce.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Bronce.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "bJuNDmVGIF0TXvkk", - "filament_id": "FILAR0001", + "filament_id": "OFWTRJ1K", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cafe con Leche.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cafe con Leche.json index 3e98bc7ebf..b70feb22d4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cafe con Leche.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cafe con Leche.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "vlPu3T66cQhIr5nl", - "filament_id": "FILAR0006", + "filament_id": "OFWwF7K7", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Carpincho.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Carpincho.json index 276d339eae..bdb948112a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Carpincho.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Carpincho.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "dNsCH2BVjuq3jrN7", - "filament_id": "FILAR0009", + "filament_id": "OFKWWgyp", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Celeste Cielo.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Celeste Cielo.json index 9294b3e0d5..f0ca1c323c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Celeste Cielo.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Celeste Cielo.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "baAQZuzRZD0nwmqH", - "filament_id": "FILAR0027", + "filament_id": "OFaDOaNt", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cobre.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cobre.json index 4fd0d180f7..44402e7b5a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cobre.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Cobre.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "BpYgVH5d3LOdib3U", - "filament_id": "FILAR0003", + "filament_id": "OFNemJM6", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Dorado.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Dorado.json index 77c31289ff..fd25d70050 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Dorado.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Dorado.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "KHIdy0oNw9YYDNOD", - "filament_id": "FILAR0029", + "filament_id": "OF5P4jgA", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Ceniza.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Ceniza.json index acd8b8c9a0..d09d053c53 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Ceniza.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Ceniza.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "LBpWNtHWPyZi96wr", - "filament_id": "FILAR0025", + "filament_id": "OFIamQnD", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Pizarra.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Pizarra.json index 1bf3af9593..c6809d1104 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Pizarra.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Pizarra.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "SeePXOShT3cge6TS", - "filament_id": "FILAR0024", + "filament_id": "OFTlRzpe", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Plata.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Plata.json index 1cb23756fb..3748c83352 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Plata.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Gris Plata.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "B6HABCdHSblZS7lQ", - "filament_id": "FILAR0002", + "filament_id": "OFKKajh6", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Manteca.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Manteca.json index 00dbe089e4..81c6eb5928 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Manteca.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Manteca.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "tR4io22VQO0J8UsV", - "filament_id": "FILAR0007", + "filament_id": "OFexaZU2", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Marron Oxido.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Marron Oxido.json index bcd1b5ffb4..452b48010d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Marron Oxido.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Marron Oxido.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "r9eviTeCeTW4rLuz", - "filament_id": "FILAR0008", + "filament_id": "OFAt6ec0", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Naranja Tigre.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Naranja Tigre.json index ca76d328c1..dd5475f0c6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Naranja Tigre.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Naranja Tigre.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "zLZxXa78e1oiYWSg", - "filament_id": "FILAR0020", + "filament_id": "OFKZ9skj", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Negro Azabache.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Negro Azabache.json index 06082ff8c6..aaf06f8833 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Negro Azabache.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Negro Azabache.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "glc7ip75qjodcceS", - "filament_id": "FILAR0019", + "filament_id": "OFgMWJ8T", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Oro.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Oro.json index 9cb39d2135..03e171b525 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Oro.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Oro.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "hCv43F2tNJagwzC7", - "filament_id": "FILAR0028", + "filament_id": "OF5nlfKY", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Piel.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Piel.json index b18da8d2e8..4ae2924081 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Piel.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Piel.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "6ZwTYvV27Oj3l33v", - "filament_id": "FILAR0012", + "filament_id": "OFsDXRpS", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rojo de Carreras.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rojo de Carreras.json index 516ceb83f9..95c3c870bc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rojo de Carreras.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rojo de Carreras.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "5dINxIgy0kMYYNDT", - "filament_id": "FILAR0021", + "filament_id": "OFaEesXQ", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Amaranto.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Amaranto.json index 512340cfdf..62763f36a5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Amaranto.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Amaranto.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "wgxgJfhOa2ZPikRH", - "filament_id": "FILAR0010", + "filament_id": "OFPqX3x2", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Flamenco.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Flamenco.json index afe39634fe..9fb203bb0c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Flamenco.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Rosa Flamenco.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "FhROwdLMSz3cyRZo", - "filament_id": "FILAR0011", + "filament_id": "OFZ4QbfK", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Tabaco.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Tabaco.json index 05e71143ca..6925843d95 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Tabaco.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Tabaco.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "6ax7ka7LBHqhBigT", - "filament_id": "FILAR0005", + "filament_id": "OFjT9PkZ", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Titanio.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Titanio.json index fe00512045..f7b823fe5b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Titanio.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Titanio.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "ZRedeSWJhUayeJLw", - "filament_id": "FILAR0004", + "filament_id": "OFQWIKbV", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde FilAr.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde FilAr.json index da619c819a..e3355ffa43 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde FilAr.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde FilAr.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "SYWoimklLqx5O2Xh", - "filament_id": "FILAR0013", + "filament_id": "OFvPPMxL", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Manzana.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Manzana.json index ac3fae3303..46772cf083 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Manzana.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Manzana.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "FlPRrQEcKnVKwJDM", - "filament_id": "FILAR0014", + "filament_id": "OFdb8YNz", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Oliva.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Oliva.json index a1e594b840..6fe74aa2f3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Oliva.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Oliva.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "eWAcT15sDLZeV2uS", - "filament_id": "FILAR0016", + "filament_id": "OFkoLUtR", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Pixel.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Pixel.json index c6932f6b22..9068b293f2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Pixel.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Verde Pixel.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "Z7toK1R2GuzHVgfo", - "filament_id": "FILAR0015", + "filament_id": "OFkGvN4d", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Violeta Jacaranda.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Violeta Jacaranda.json index 819187e0fe..fa12bcc077 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Violeta Jacaranda.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA Violeta Jacaranda.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA @base", "from": "system", "setting_id": "4VO2Qb2cTXQ1TJv2", - "filament_id": "FILAR0023", + "filament_id": "OFP26zNb", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json index d012487eb7..729e9d7b9c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json @@ -3,7 +3,7 @@ "name": "FilAr PLA-mate @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "FILARB02", + "filament_id": "OFtOoWIj", "instantiation": "false", "filament_type": [ "PLA" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Amarillo.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Amarillo.json index e6e4811b6c..98a2349ac1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Amarillo.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Amarillo.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "f8DPrkYuTUPJ3cru", - "filament_id": "FILAR0030", + "filament_id": "OFj3bTjw", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Azul.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Azul.json index d752c69555..7688708656 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Azul.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Azul.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "QMBocqysEed86R9y", - "filament_id": "FILAR0031", + "filament_id": "OF5vgi2G", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Beige.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Beige.json index 3d4c2eb19a..2324dadcc5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Beige.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Beige.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "XoilIv3HqpDTVRwv", - "filament_id": "FILAR0032", + "filament_id": "OFGcLA5R", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Blanco.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Blanco.json index d08673007a..92f10acf51 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Blanco.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Blanco.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "xkotTQheAIUUhPd7", - "filament_id": "FILAR0033", + "filament_id": "OFtefokm", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Bordo.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Bordo.json index 8277b74545..4018c1d710 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Bordo.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Bordo.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "zV2dKrknk0ThDv36", - "filament_id": "FILAR0034", + "filament_id": "OFiDpM1B", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Celeste Cielo.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Celeste Cielo.json index fadf1b26ff..ff47203106 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Celeste Cielo.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Celeste Cielo.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "UZW4F0aVz1TqstYi", - "filament_id": "FILAR0035", + "filament_id": "OFqtx549", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Chocolate.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Chocolate.json index f184b6be29..b67e57db85 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Chocolate.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Chocolate.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "DdW1XKqqRuLM1cAd", - "filament_id": "FILAR0036", + "filament_id": "OFdzlrhi", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Gris.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Gris.json index b2740bc3b4..445a44b1e4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Gris.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Gris.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "6OtKg1UxWuNCqsZy", - "filament_id": "FILAR0037", + "filament_id": "OFGVwfK0", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Marron.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Marron.json index b3190c28d9..aa411c3d77 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Marron.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Marron.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "lKOXMY37q8WpMdBA", - "filament_id": "FILAR0038", + "filament_id": "OF8jh0Lk", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Naranja.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Naranja.json index b3fabc3603..2c382c085d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Naranja.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Naranja.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "MabNpNP8G9RqEruP", - "filament_id": "FILAR0039", + "filament_id": "OFmaeU4a", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Negro.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Negro.json index d46222cad5..7ec4105a25 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Negro.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Negro.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "Jwrm1uuCo7UjvgWn", - "filament_id": "FILAR0040", + "filament_id": "OFufTAK9", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Piel.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Piel.json index 49fd32c1ac..6635fe8b78 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Piel.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Piel.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "ifbCS3WypTUa1JHr", - "filament_id": "FILAR0041", + "filament_id": "OFfZcoKr", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rojo.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rojo.json index 63a280b0c4..bed097ad9a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rojo.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rojo.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "ak2QX0IS74Nmtyex", - "filament_id": "FILAR0042", + "filament_id": "OFIBXa0k", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rosa.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rosa.json index 78208657c8..1767674916 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rosa.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Rosa.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "GrEXuL6TYue238MK", - "filament_id": "FILAR0043", + "filament_id": "OFausr3F", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Uva.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Uva.json index 860ac8347d..0e5bb137e1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Uva.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Uva.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "PK1CsK7AS1p1IJaR", - "filament_id": "FILAR0044", + "filament_id": "OFEZ449N", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Verde.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Verde.json index 7f49cb138e..67fe0ebfee 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Verde.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Verde.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "rsLi8jr62hHPgERG", - "filament_id": "FILAR0045", + "filament_id": "OFCjG251", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Violeta.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Violeta.json index f60b17b69e..e842875905 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Violeta.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate Violeta.json @@ -4,7 +4,7 @@ "inherits": "FilAr PLA-mate @base", "from": "system", "setting_id": "z2Pk06JzY9Tr1WjQ", - "filament_id": "FILAR0046", + "filament_id": "OF2EK9F1", "instantiation": "true", "filament_vendor": [ "FilAr" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FusRock/FusRock ABS-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FusRock/FusRock ABS-GF @base.json index bb09f036ff..95a8fd47ea 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FusRock/FusRock ABS-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FusRock/FusRock ABS-GF @base.json @@ -3,7 +3,7 @@ "name": "FusRock ABS-GF @base", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFR00", + "filament_id": "OFmn9NZL", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).", "filament_extruder_variant": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json index fa4788b45a..e499fa3a73 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "W0LP8Ah5MHMzogvV", - "filament_id": "OGFB99", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json index a4e10439c2..f55ee5e239 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "bcsNcj4DzLb4K5zN", - "filament_id": "OGFB98", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic BVOH @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic BVOH @System.json index 96c3dc4f34..7b34746bb2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic BVOH @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic BVOH @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_bvoh", "from": "system", "setting_id": "oUpbqz3uzQqND5DG", + "filament_id": "OFo2UF2C", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic CoPE @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic CoPE @System.json index dbf10cf3f5..60c330fc39 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic CoPE @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic CoPE @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_cope", "from": "system", "setting_id": "KlHtaJU2GM0uaRGM", + "filament_id": "OFjt9en1", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic EVA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic EVA @System.json index 6caf96f6b1..646bef3f28 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic EVA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic EVA @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_eva", "from": "system", "setting_id": "cFGhkhQKiFilQ9gZ", + "filament_id": "OFCD8qiU", "instantiation": "true", "description": "This is neither a commonly used filament, nor one of Bambu filaments, and it varies a lot from brand to brand. So, it's highly recommended to ask its vendor for suitable profile before printing and adjust some parameters according to its performances.", "compatible_printers": [] diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic HIPS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic HIPS @System.json index 44cedfc810..c4acb079be 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic HIPS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic HIPS @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_hips", "from": "system", "setting_id": "A7gedcxip65DXKuf", + "filament_id": "OFsFon5l", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json index 2cf8b79680..4bea15a407 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "9DoeedUBMRPSCyu2", - "filament_id": "OGFN99", + "filament_id": "OFg8ndtj", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json index cf01ddf65b..0e653e5529 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "rchW8WI6gcXuAE0V", - "filament_id": "OGFN98", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json index fd5c80443c..f84c7fe7b6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "LNjv9LwZnbu7ZASC", - "filament_id": "OGFC99", + "filament_id": "OFLakOUI", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PCTG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PCTG @System.json index 967c5627cb..41ff08bd5c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PCTG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PCTG @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_pctg", "from": "system", "setting_id": "21dhMVBuVwR2lzIX", + "filament_id": "OFu1evlr", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PE @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE @System.json index 844ee902df..210c48b77a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PE @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_pe", "from": "system", "setting_id": "8HpfeTNwthJ7L0XE", + "filament_id": "OFPklMI1", "instantiation": "true", "description": "This is neither a commonly used filament, nor one of Bambu filaments, and it varies a lot from brand to brand. So, it's highly recommended to ask its vendor for suitable profile before printing and adjust some parameters according to its performances.", "compatible_printers": [] diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @System.json index 27ee56eb4b..8013a04973 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PE-CF @System", - "inherits": "fdm_filament_pe", + "inherits": "Generic PE-CF @base", "from": "system", "setting_id": "prroSXONXxaahNkq", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @base.json new file mode 100644 index 0000000000..53ca2e0f9d --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PE-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PE-CF @base", + "inherits": "fdm_filament_pe", + "from": "system", + "filament_id": "OFd0Fv0k", + "instantiation": "false", + "filament_type": [ + "PE-CF" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json index 2eb975f56c..f6fb133324 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "YiQZfhL6hH0giSHL", - "filament_id": "OGFG99", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @System.json index 25cf20c304..63472f65a0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PETG HF @System", - "inherits": "fdm_filament_pet", + "inherits": "Generic PETG HF @base", "from": "system", "setting_id": "wNH8CohYIh9y6ayx", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @base.json new file mode 100644 index 0000000000..173f397a49 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG HF @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PETG HF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "OF7lOgYF", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @System.json index 30884cf5a0..aea01d2740 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PETG-CF @System", - "inherits": "fdm_filament_pet", + "inherits": "Generic PETG-CF @base", "from": "system", "setting_id": "aRVqy4a3X1UTIKem", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @base.json new file mode 100644 index 0000000000..8bf644a26d --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PETG-CF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "OFoYSJKi", + "instantiation": "false", + "filament_type": [ + "PETG-CF" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PHA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PHA @System.json index dab5219261..c50840c55a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PHA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PHA @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_pha", "from": "system", "setting_id": "kks2z4JbypqY68RW", + "filament_id": "OF74KeQR", "instantiation": "true", "description": "This is neither a commonly used filament, nor one of Bambu filaments, and it varies a lot from brand to brand. So, it's highly recommended to ask its vendor for suitable profile before printing and adjust some parameters according to its performances.", "compatible_printers": [] diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json index c018544fa5..7bf0a0e72b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json @@ -5,6 +5,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "RcBNzytWgwRrwXXz", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA High Speed @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA High Speed @System.json index 1880ca2b21..ccd8205595 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA High Speed @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA High Speed @System.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "L9wOwDxavVR7vrL7", - "filament_id": "OGFL95", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @System.json index 39c71d0d62..2bb0e98e58 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PLA Matte @System", - "inherits": "fdm_filament_pla", + "inherits": "Generic PLA Matte @base", "from": "system", "setting_id": "RFs9eCKYOMUSmvZf", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @base.json new file mode 100644 index 0000000000..7fed10e48e --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Matte @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PLA Matte @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFmY0l6t", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Silk @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Silk @System.json index 700b80761f..3bee7ccde6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Silk @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA Silk @System.json @@ -5,6 +5,7 @@ "inherits": "fdm_filament_pla_silk", "from": "system", "setting_id": "oPkXDCBrTQB3SRm4", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_max_volumetric_speed": [ "7.5" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json index d6a80ed8ee..972ef33800 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "l2LkEql1SVH0iRqY", - "filament_id": "OGFL98", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP @System.json index e2c16e704f..14e38bc340 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_pp", "from": "system", "setting_id": "yos4oScjK83JuXJV", + "filament_id": "OF1UNk9P", "instantiation": "true", "description": "This is neither a commonly used filament, nor one of Bambu filaments, and it varies a lot from brand to brand. So, it's highly recommended to ask its vendor for suitable profile before printing and adjust some parameters according to its performances.", "compatible_printers": [] diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @System.json index a7c1bbff00..3f2ee9f3f0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PP-CF @System", - "inherits": "fdm_filament_pp", + "inherits": "Generic PP-CF @base", "from": "system", "setting_id": "TDHYN3fs5wwakgsM", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @base.json new file mode 100644 index 0000000000..1852185476 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PP-CF @base", + "inherits": "fdm_filament_pp", + "from": "system", + "filament_id": "OFXkm8q1", + "instantiation": "false", + "filament_type": [ + "PP-CF" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @System.json index cf9ea7ace2..d9bedf9316 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @System.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Generic PP-GF @System", - "inherits": "fdm_filament_pp", + "inherits": "Generic PP-GF @base", "from": "system", "setting_id": "xfVrCZ7ySzkpdzX0", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @base.json new file mode 100644 index 0000000000..958fbc75a6 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PP-GF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PP-GF @base", + "inherits": "fdm_filament_pp", + "from": "system", + "filament_id": "OFsijjtH", + "instantiation": "false", + "filament_type": [ + "PP-GF" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-CF @System.json index a5fdd90f9c..99ee7acda7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-CF @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_ppa", "from": "system", "setting_id": "rZpVQIyltFNiQyW3", + "filament_id": "OF8tPByX", "instantiation": "true", "fan_max_speed": [ "35" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-GF @System.json index 9ebf9cb656..3b5e1b7583 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PPA-GF @System.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_ppa", "from": "system", "setting_id": "yJCAFLt5wstMgMAY", - "filament_id": "OGFN96", + "filament_id": "OF8Tlg47", "instantiation": "true", "filament_max_volumetric_speed": [ "6" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json index e1cf8643d1..c6300423ba 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "1dlLnJKh1HzQCZVJ", - "filament_id": "OGFS99", + "filament_id": "OFDvXujf", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic SBS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic SBS @System.json index 082c4dd4bf..cf5aa1a8f6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic SBS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic SBS @System.json @@ -4,6 +4,7 @@ "inherits": "fdm_filament_sbs", "from": "system", "setting_id": "fjVWcIfxaOAZHNU1", + "filament_id": "OFhQfUQY", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json index be4543b662..c8ae9f2562 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json @@ -5,7 +5,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "D6O8IcmSe8WGqOvb", - "filament_id": "OGFU99", + "filament_id": "OFgbpcy9", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/GreenGate3D/GreenGate3D PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/GreenGate3D/GreenGate3D PETG @base.json index 284c63ab9c..a0ba8360d6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/GreenGate3D/GreenGate3D PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/GreenGate3D/GreenGate3D PETG @base.json @@ -3,7 +3,7 @@ "name": "GreenGate3D PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFGG300", + "filament_id": "OFhMO9Kh", "instantiation": "false", "filament_cost": [ "32" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT ABS @base.json index 78d2166f9e..8fb4f4c187 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT ABS @base.json @@ -3,7 +3,7 @@ "name": "NIT ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "NIT01", + "filament_id": "OFhWc5Bv", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PETG @base.json index 8e84b68607..2fd955a1b1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PETG @base.json @@ -3,7 +3,7 @@ "name": "NIT PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "NIT03", + "filament_id": "OFJu1XwK", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PLA @base.json index 89b6842010..ff541d0239 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/NIT/NIT PLA @base.json @@ -3,7 +3,7 @@ "name": "NIT PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "NIT02", + "filament_id": "OFwRJ4g0", "instantiation": "false", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Numakers/Numakers PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Numakers/Numakers PLA+ @base.json index c0c2c86585..818b181355 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Numakers/Numakers PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Numakers/Numakers PLA+ @base.json @@ -3,7 +3,7 @@ "name": "Numakers PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFNMK00", + "filament_id": "OFqGRZyH", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ABS Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ABS Basic @base.json index 3ceb467a61..5029f42e5d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ABS Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ABS Basic @base.json @@ -3,7 +3,7 @@ "name": "Overture ABS Basic @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OVTABS08", + "filament_id": "OFDvqJ6n", "instantiation": "false", "description": "Overture ABS settings from https://overture3d.com/.", "activate_air_filtration": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ASA @base.json index 415bf9e6d1..31357aadf6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture ASA @base.json @@ -3,7 +3,7 @@ "name": "Overture ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFOT009", + "filament_id": "OFM91vZs", "instantiation": "false", "fan_cooling_layer_time": [ "45" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Air PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Air PLA @base.json index 98d390e9b8..89bcc0e585 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Air PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Air PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Air PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT006", + "filament_id": "OFcfQk4h", "instantiation": "false", "filament_cost": [ "27.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Easy PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Easy PLA @base.json index a0c11e0a81..d4388a6c90 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Easy PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Easy PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Easy PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT003", + "filament_id": "OF1Pke8t", "instantiation": "false", "filament_cost": [ "17.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Matte PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Matte PLA @base.json index 3f4dd854a3..43d4abe1d8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Matte PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Matte PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Matte PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL05", + "filament_id": "OFBw6eEG", "instantiation": "false", "filament_cost": [ "24.52" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA @base.json index 486d34d0e5..45ae0ba24b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL04", + "filament_id": "OFc3xdm9", "instantiation": "false", "filament_cost": [ "24.15" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA Pro @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA Pro @base.json index 80525e03b2..454c36e7b0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA Pro @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture PLA Pro @base.json @@ -3,7 +3,7 @@ "name": "Overture PLA Pro @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT001", + "filament_id": "OFxA1p01", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Rock PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Rock PLA @base.json index 3317a8e0a9..5027f3ac01 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Rock PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Rock PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Rock PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT004", + "filament_id": "OFMZvH0z", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Silk PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Silk PLA @base.json index 0fd19a6323..ca1a187fe0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Silk PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Silk PLA @base.json @@ -3,7 +3,7 @@ "name": "Overture Silk PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT002", + "filament_id": "OFGkyftV", "instantiation": "false", "filament_cost": [ "25.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Super PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Super PLA+ @base.json index 0bab3f81f0..776367ba06 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Super PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture Super PLA+ @base.json @@ -3,7 +3,7 @@ "name": "Overture Super PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFOT005", + "filament_id": "OF2pj5l5", "instantiation": "false", "filament_cost": [ "28.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture TPU @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture TPU @base.json index bdc7f4e236..20ff507393 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture TPU @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Overture/Overture TPU @base.json @@ -3,7 +3,7 @@ "name": "Overture TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "GFOT008", + "filament_id": "OFcvKkrs", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA12-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA12-CF @base.json index 7b5740c1df..a5aa03bf9b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA12-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA12-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA12-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFL52", + "filament_id": "OFX0ycRQ", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-CF @base.json index d96e531b0d..96b913c738 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFL50", + "filament_id": "OFkOviHk", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-GF @base.json index b5e9c57851..607b1c8e00 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA6-GF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-GF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFL51", + "filament_id": "OFwaYjL6", "instantiation": "false", "eng_plate_temp": [ "40" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA612-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA612-CF @base.json index 4fa1bd200d..3765f754f5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA612-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PA612-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA612-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "OGFL53", + "filament_id": "OFS2tn6G", "instantiation": "false", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PET-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PET-CF @base.json index 1e74b59930..6946d6e0a3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PET-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PET-CF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PET-CF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFL54", + "filament_id": "OFHWSM21", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-ESD @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-ESD @base.json index 500fac4037..11d2f9023f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-ESD @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-ESD @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-ESD @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFL06", + "filament_id": "OFcytyoA", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-rCF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-rCF @base.json index 12cc822453..489e03bc64 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-rCF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Fiberon PETG-rCF @base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-rCF @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFL55", + "filament_id": "OFk8t9mz", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma CoPE @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma CoPE @base.json index d856da86cc..52f2ed96f4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma CoPE @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma CoPE @base.json @@ -3,7 +3,7 @@ "name": "Panchroma CoPE @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM016", + "filament_id": "OFqw2PQA", "instantiation": "false", "filament_cost": [ "19.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA @base.json index 2c4f278387..94d7383fef 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM001", + "filament_id": "OFsRDvTM", "instantiation": "false", "filament_cost": [ "19.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Celestial @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Celestial @base.json index 10c999c3a8..123ba02747 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Celestial @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Celestial @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Celestial @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM008", + "filament_id": "OFRiYgMK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Galaxy @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Galaxy @base.json index 40ae42e78c..d98e119c0b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Galaxy @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM007", + "filament_id": "OFFkCLBl", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Glow @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Glow @base.json index c5219dea65..9a162062a3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Glow @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Glow @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Glow @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM010", + "filament_id": "OF0gGRWk", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Luminous @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Luminous @base.json index 48158b336a..a6f61c9e5f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Luminous @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Luminous @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Luminous @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM011", + "filament_id": "OF0kCNDK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Marble @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Marble @base.json index 11954166b9..e514df6f78 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Marble @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Marble @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM003", + "filament_id": "OFKiSMWR", "instantiation": "false", "filament_cost": [ "21.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Matte @base.json index 6e965f908d..87da70c021 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Matte @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM002", + "filament_id": "OFrOh600", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Metallic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Metallic @base.json index 3a7d3f93eb..820fc99703 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Metallic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Metallic @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Metallic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM012", + "filament_id": "OFjb0wos", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Neon @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Neon @base.json index d9a68636c8..c57c976d11 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Neon @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Neon @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Neon @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM013", + "filament_id": "OFO1GEq6", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Satin @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Satin @base.json index 4e55dcd18c..ad1c0ef27e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Satin @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Satin @base.json @@ -1,10 +1,9 @@ { "type": "filament", "name": "Panchroma PLA Satin @base", - "renamed_from": "Panchroma PLA Stain @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM005", + "filament_id": "OFPkCJKE", "instantiation": "false", "filament_cost": [ "20.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Silk @base.json index 08fabb165e..d0df636abb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Silk @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM004", + "filament_id": "OFS8lTQt", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Starlight @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Starlight @base.json index bed7d34e53..d271daa50a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Starlight @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Starlight @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Starlight @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM009", + "filament_id": "OFC78WGQ", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Temp Shift @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Temp Shift @base.json index 5d8adcda38..9de5e084b3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Temp Shift @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Temp Shift @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Temp Shift @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM015", + "filament_id": "OFhASRWj", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Translucent @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Translucent @base.json index e3c3355b43..d6da194349 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Translucent @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA Translucent @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Translucent @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM006", + "filament_id": "OFCIUsWh", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA UV Shift @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA UV Shift @base.json index 97009b894d..1a2662f1bc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA UV Shift @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Panchroma PLA UV Shift @base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA UV Shift @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM014", + "filament_id": "OF1N1qMK", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ABS @base.json index 759c29892a..540a6b846d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ABS @base.json @@ -3,7 +3,7 @@ "name": "PolyLite ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "OGFB60", + "filament_id": "OFOvv91M", "instantiation": "false", "filament_cost": [ "26.9" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ASA @base.json index 78340f6984..95b4d39c1a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ASA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite ASA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "OGFB61", + "filament_id": "OFvrXuV7", "instantiation": "false", "eng_plate_temp": [ "100" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @System.json index 4d17382a38..ab02a798fc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @System.json @@ -2,7 +2,7 @@ "type": "filament", "name": "PolyLite Dual PLA @System", "renamed_from": "PolyLite Dual PLA", - "inherits": "PolyLite PLA @base", + "inherits": "PolyLite Dual PLA @base", "from": "system", "setting_id": "ShKfsLXZ1EJ4HgKf", "instantiation": "true", diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @base.json new file mode 100644 index 0000000000..814e641e1a --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite Dual PLA @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "PolyLite Dual PLA @base", + "inherits": "PolyLite PLA @base", + "from": "system", + "filament_id": "OFYGbPHX", + "instantiation": "false" +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PETG @base.json index 448bb2c66f..7e8312f282 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PETG @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFG60", + "filament_id": "OF0UJcb6", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @System.json index 4fc233d3e6..00547fdbe8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @System.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @base", "from": "system", "setting_id": "MKxTIucBtfpUvIhZ", - "filament_id": "OGFL00", + "filament_id": "OF5CgdDq", "instantiation": "true", "filament_max_volumetric_speed": [ "15" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @base.json index 65e8f261fb..55ea664946 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL00", + "filament_id": "OF5CgdDq", "instantiation": "false", "filament_cost": [ "25.4" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA Pro @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA Pro @base.json index bdd34f2b03..0b21f98254 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA Pro @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyLite PLA Pro @base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Pro @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM019", + "filament_id": "OFF9OKoY", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra Dual PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra Dual PLA @System.json index 84b6fb4aea..05d3492408 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra Dual PLA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra Dual PLA @System.json @@ -5,7 +5,7 @@ "inherits": "PolyTerra PLA @base", "from": "system", "setting_id": "OajdcsUZSmrTA2vC", - "filament_id": "OGFL00-1", + "filament_id": "OFCccVrQ", "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra PLA @base.json index d2bec7fcd5..3b13c5b55c 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/PolyTerra PLA @base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL01", + "filament_id": "OFW29a9R", "instantiation": "false", "filament_cost": [ "25.4" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA @base.json index 22b1106271..db7624e45a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA @base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM017", + "filament_id": "OFPoyiFs", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA-GF @base.json index 38a73bca9f..866ce490e9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA-GF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker HT-PLA-GF @base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA-GF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFPM018", + "filament_id": "OFlwmqrC", "instantiation": "false", "filament_cost": [ "32.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Marble PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Marble PLA @base.json index 149a1dc107..aa1a2bab42 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Marble PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Marble PLA @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL06", + "filament_id": "OFxUwUeW", "instantiation": "false", "filament_cost": [ "31.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PETG @base.json index 4c564801df..e8152acbcf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PETG @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "OGFSNL08", + "filament_id": "OF2GCW1l", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA Matte @base.json index f99430b2f7..34035846fb 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA Matte @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL02", + "filament_id": "OFpW4gdi", "instantiation": "false", "filament_cost": [ "25.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ 2.0 @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ 2.0 @base.json index 7424503b9f..832c2a4f06 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ 2.0 @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ 2.0 @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ 2.0 @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL04", + "filament_id": "OFHmPYRy", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ @base.json index f890c225be..1fffd42112 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL03", + "filament_id": "OFMUWNkp", "instantiation": "false", "filament_cost": [ "18.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Silk PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Silk PLA+ @base.json index ac28782615..35f599e125 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Silk PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Silk PLA+ @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Silk PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL05", + "filament_id": "OFpPGSKG", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Wood PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Wood PLA @base.json index cd9bbec953..fc94c630a0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Wood PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/SUNLU/SUNLU Wood PLA @base.json @@ -3,7 +3,7 @@ "name": "SUNLU Wood PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFSNL07", + "filament_id": "OFLJ8S6I", "instantiation": "false", "filament_cost": [ "26.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA @base.json index 77fa861c7b..6fa2f8a04d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA @base.json @@ -3,7 +3,7 @@ "name": "Valment PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "VLMNT01", + "filament_id": "OFDe8uyM", "instantiation": "false", "filament_cost": [ "670" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Galaxy @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Galaxy @base.json index 9920f9a504..e181556086 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Galaxy @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Galaxy @base.json @@ -3,7 +3,7 @@ "name": "Valment PLA Galaxy @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "VLMNT04", + "filament_id": "OFB5SmWk", "instantiation": "false", "filament_cost": [ "850" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Silk @base.json index 258f80fb15..98e6288ef4 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Silk @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Valment PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "VLMNT02", + "filament_id": "OFpBlrvY", "instantiation": "false", "filament_cost": [ "710" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA-CF @base.json index 4451cffadb..f498a6f162 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Valment/Valment PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Valment PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "VLMNT03", + "filament_id": "OFfq5YXA", "instantiation": "false", "filament_cost": [ "1400" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_bvoh.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_bvoh.json index cd15600a52..a93e2d32fc 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_bvoh.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_bvoh.json @@ -3,7 +3,6 @@ "name": "fdm_filament_bvoh", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFS97", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_cope.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_cope.json index 798f560e01..425d3db652 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_cope.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_cope.json @@ -3,7 +3,6 @@ "name": "fdm_filament_cope", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFLC99", "instantiation": "false", "filament_type": [ "CoPE" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_eva.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_eva.json index 40498a05aa..4e591a4942 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_eva.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_eva.json @@ -3,7 +3,6 @@ "name": "fdm_filament_eva", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFR99", "instantiation": "false", "filament_type": [ "EVA" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_hips.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_hips.json index f67709b4b2..03e46d38ef 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_hips.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_hips.json @@ -3,7 +3,6 @@ "name": "fdm_filament_hips", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFS98", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pa.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pa.json index 185af32de7..512959b651 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pa.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFN99", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pc.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pc.json index d8fb7d00ae..a1fa18b707 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pc.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pc.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pc", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFC99", "instantiation": "false", "supertack_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pctg.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pctg.json index e656fb7715..22b8842748 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pctg.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pctg.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pctg", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFG97", "instantiation": "false", "eng_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pe.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pe.json index a47543334b..a36be438fa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pe.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pe.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pe", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFP99", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pet.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pet.json index 8b3fef2f2b..71b9d305c2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pet.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pet.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pet", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFG99", "instantiation": "false", "eng_plate_temp": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pha.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pha.json index 7719c6563d..6dfd3f54c1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pha.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pha.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pha", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFR98", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla.json index 21b7c44365..be74bd622e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pla", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFL99", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla_silk.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla_silk.json index a5fd601060..1fffb376ef 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla_silk.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pla_silk.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pla_silk", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL96", "instantiation": "false", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_flow_ratio": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pp.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pp.json index 4df7753132..854f7976db 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pp.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_pp.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pp", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFP97", "instantiation": "false", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_ppa.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_ppa.json index c250e588b0..b8993999f6 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_ppa.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_ppa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_ppa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OGFN97", "instantiation": "false", "activate_air_filtration": [ "0" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_sbs.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_sbs.json index 9bc4d5ce36..8ce103d405 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_sbs.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_sbs.json @@ -3,7 +3,6 @@ "name": "fdm_filament_sbs", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "OFLSBS99", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json index 576da66278..53a489aaf2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PETG @base.json @@ -3,7 +3,7 @@ "name": "eSUN PETG @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "ESN03", + "filament_id": "OF3kBrdA", "instantiation": "false", "filament_vendor": [ "eSUN" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA+ @base.json index 26bbba31d9..4e3ab1d49f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA+ @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA+ @base.json @@ -3,7 +3,7 @@ "name": "eSUN PLA+ @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL03", + "filament_id": "OFqINlYj", "instantiation": "false", "filament_cost": [ "22.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Basic @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Basic @base.json index a627a10a4d..16fc0dad97 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Basic @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Basic @base.json @@ -3,7 +3,7 @@ "name": "eSUN PLA-Basic @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL04", + "filament_id": "OFTcE0nA", "instantiation": "false", "filament_cost": [ "11.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Marble @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Marble @base.json index cbd4f84ed4..d3bfb06030 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Marble @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Marble @base.json @@ -3,7 +3,7 @@ "name": "eSUN PLA-Marble @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL06", + "filament_id": "OF7H3VJM", "instantiation": "false", "filament_cost": [ "28.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Matte @base.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Matte @base.json index 8d22168408..3d9712c218 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Matte @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN PLA-Matte @base.json @@ -3,7 +3,7 @@ "name": "eSUN PLA-Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL05", + "filament_id": "OFDETOM6", "instantiation": "false", "filament_cost": [ "14.99" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json index 732eb3fd5b..f788d7e4c2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/eSUN/eSUN ePLA-LW @System.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "pYoZnuVPPIlMbdT1", - "filament_id": "ESN02", + "filament_id": "OFRzR5mi", "instantiation": "true", "filament_type": [ "PLA-AERO" diff --git a/resources/profiles/Peopoly.json b/resources/profiles/Peopoly.json index ca6b59fb2b..2a73d251f1 100644 --- a/resources/profiles/Peopoly.json +++ b/resources/profiles/Peopoly.json @@ -1,6 +1,6 @@ { "name": "Peopoly", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Peopoly configurations", "machine_model_list": [ @@ -105,8 +105,8 @@ "sub_path": "filament/fdm_filament_pla.json" }, { - "name": "Peopoly Generic ABS", - "sub_path": "filament/Peopoly Generic ABS.json" + "name": "Generic ABS @Peopoly", + "sub_path": "filament/Generic ABS @Peopoly.json" }, { "name": "Peopoly Lancer ABS-GF", @@ -117,16 +117,16 @@ "sub_path": "filament/Peopoly Lancer PET-CF.json" }, { - "name": "Peopoly Generic PETG", - "sub_path": "filament/Peopoly Generic PETG.json" + "name": "Generic PETG @Peopoly", + "sub_path": "filament/Generic PETG @Peopoly.json" }, { "name": "Peopoly Lancer PETG-C", "sub_path": "filament/Peopoly Lancer PETG-C.json" }, { - "name": "Peopoly Generic PLA", - "sub_path": "filament/Peopoly Generic PLA.json" + "name": "Generic PLA @Peopoly", + "sub_path": "filament/Generic PLA @Peopoly.json" }, { "name": "Peopoly Lancer PLA-C", diff --git a/resources/profiles/Peopoly/filament/Peopoly Generic ABS.json b/resources/profiles/Peopoly/filament/Generic ABS @Peopoly.json similarity index 73% rename from resources/profiles/Peopoly/filament/Peopoly Generic ABS.json rename to resources/profiles/Peopoly/filament/Generic ABS @Peopoly.json index 7f38c6044a..d9e2ae777c 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Generic ABS.json +++ b/resources/profiles/Peopoly/filament/Generic ABS @Peopoly.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Peopoly Generic ABS", + "name": "Generic ABS @Peopoly", "inherits": "fdm_filament_abs", + "renamed_from": "Peopoly Generic ABS", "from": "system", - "setting_id": "ICnZH4LkPD7c6Lmm", - "filament_id": "GFSL99", + "setting_id": "HLq9urLhPLW0du6x", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Peopoly/filament/Peopoly Generic PETG.json b/resources/profiles/Peopoly/filament/Generic PETG @Peopoly.json similarity index 80% rename from resources/profiles/Peopoly/filament/Peopoly Generic PETG.json rename to resources/profiles/Peopoly/filament/Generic PETG @Peopoly.json index add7c8e295..fc4501866a 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Generic PETG.json +++ b/resources/profiles/Peopoly/filament/Generic PETG @Peopoly.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Peopoly Generic PETG", + "name": "Generic PETG @Peopoly", "inherits": "fdm_filament_petg", + "renamed_from": "Peopoly Generic PETG", "from": "system", - "setting_id": "7LVGx2lNqhBDdYiJ", - "filament_id": "GFPETG-1", + "setting_id": "dgMXFTyLovrMR56j", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Peopoly/filament/Peopoly Generic PLA.json b/resources/profiles/Peopoly/filament/Generic PLA @Peopoly.json similarity index 79% rename from resources/profiles/Peopoly/filament/Peopoly Generic PLA.json rename to resources/profiles/Peopoly/filament/Generic PLA @Peopoly.json index 100057e25b..42cc687493 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Generic PLA.json +++ b/resources/profiles/Peopoly/filament/Generic PLA @Peopoly.json @@ -1,11 +1,11 @@ { "type": "filament", - "name": "Peopoly Generic PLA", - "renamed_from": "Peopoly Generic PLA 0.8 nozzle", + "name": "Generic PLA @Peopoly", + "renamed_from": "Peopoly Generic PLA 0.8 nozzle;Peopoly Generic PLA", "inherits": "fdm_filament_pla", "from": "system", - "setting_id": "KNsVV4dvEWAAkzDE", - "filament_id": "GFL99", + "setting_id": "OVbRqCpU0SXiZmot", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Peopoly/filament/Peopoly Lancer ABS-GF.json b/resources/profiles/Peopoly/filament/Peopoly Lancer ABS-GF.json index c00354396c..fe53fb4651 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Lancer ABS-GF.json +++ b/resources/profiles/Peopoly/filament/Peopoly Lancer ABS-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "ufcIVt3x0FqV69h4", - "filament_id": "GFL99", + "filament_id": "OFj64R5U", "instantiation": "true", "filament_flow_ratio": [ "0.91" diff --git a/resources/profiles/Peopoly/filament/Peopoly Lancer PET-CF.json b/resources/profiles/Peopoly/filament/Peopoly Lancer PET-CF.json index 3ec4ef2909..1629995edb 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Lancer PET-CF.json +++ b/resources/profiles/Peopoly/filament/Peopoly Lancer PET-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "xSaZKOpjStJuKiM7", - "filament_id": "GFL99", + "filament_id": "OFPYDWgC", "instantiation": "true", "filament_flow_ratio": [ "0.90" diff --git a/resources/profiles/Peopoly/filament/Peopoly Lancer PETG-C.json b/resources/profiles/Peopoly/filament/Peopoly Lancer PETG-C.json index ccdc0fc0ba..483e7163ca 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Lancer PETG-C.json +++ b/resources/profiles/Peopoly/filament/Peopoly Lancer PETG-C.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_petg", "from": "system", "setting_id": "aUX6OHQrKPghlPBb", - "filament_id": "GFL99", + "filament_id": "OFpPJSHE", "instantiation": "true", "fan_cooling_layer_time": [ "20" diff --git a/resources/profiles/Peopoly/filament/Peopoly Lancer PLA-C.json b/resources/profiles/Peopoly/filament/Peopoly Lancer PLA-C.json index 7f417378eb..a4bd236a62 100644 --- a/resources/profiles/Peopoly/filament/Peopoly Lancer PLA-C.json +++ b/resources/profiles/Peopoly/filament/Peopoly Lancer PLA-C.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "EFHW4uKJCsBCjAEU", - "filament_id": "GFL99", + "filament_id": "OFEnbt6D", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Peopoly/machine/Peopoly Magneto X.json b/resources/profiles/Peopoly/machine/Peopoly Magneto X.json index 031c3b2484..02553f502d 100644 --- a/resources/profiles/Peopoly/machine/Peopoly Magneto X.json +++ b/resources/profiles/Peopoly/machine/Peopoly Magneto X.json @@ -8,5 +8,5 @@ "bed_model": "magnetox_model.stl", "bed_texture": "magnetox_model_texture.svg", "hotend_model": "", - "default_materials": "Peopoly Generic PLA" + "default_materials": "Generic PLA @Peopoly" } diff --git a/resources/profiles/Peopoly/machine/fdm_klipper_common.json b/resources/profiles/Peopoly/machine/fdm_klipper_common.json index f89d97d9a6..e9a5185767 100644 --- a/resources/profiles/Peopoly/machine/fdm_klipper_common.json +++ b/resources/profiles/Peopoly/machine/fdm_klipper_common.json @@ -127,7 +127,7 @@ "1" ], "default_filament_profile": [ - "Peopoly Generic PLA" + "Generic PLA @Peopoly" ], "default_print_profile": "fdm_process_peopoly_common_0_2", "bed_exclude_area": [ diff --git a/resources/profiles/Phrozen.json b/resources/profiles/Phrozen.json index bd4e6f1081..0c711816c1 100644 --- a/resources/profiles/Phrozen.json +++ b/resources/profiles/Phrozen.json @@ -1,6 +1,6 @@ { "name": "Phrozen", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Phrozen configurations", "machine_model_list": [ @@ -57,8 +57,8 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Phrozen PLA @Phrozen Arco 0.4 nozzle", - "sub_path": "filament/Phrozen PLA @Phrozen Arco 0.4 nozzle.json" + "name": "Generic PLA @Phrozen Arco 0.4 nozzle", + "sub_path": "filament/Generic PLA @Phrozen Arco 0.4 nozzle.json" } ], "machine_list": [ diff --git a/resources/profiles/Phrozen/filament/Phrozen PLA @Phrozen Arco 0.4 nozzle.json b/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json similarity index 94% rename from resources/profiles/Phrozen/filament/Phrozen PLA @Phrozen Arco 0.4 nozzle.json rename to resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json index 6453756f9e..d909765bad 100644 --- a/resources/profiles/Phrozen/filament/Phrozen PLA @Phrozen Arco 0.4 nozzle.json +++ b/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json @@ -1,13 +1,13 @@ { "type": "filament", - "name": "Phrozen PLA @Phrozen Arco 0.4 nozzle", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Phrozen Arco 0.4 nozzle", + "inherits": "Generic PLA @System", + "renamed_from": "Phrozen PLA @Phrozen Arco 0.4 nozzle;Phrozen PLA Phrozen Arco 0.4 nozzle", "from": "system", - "setting_id": "Cc3ULDFzvoHwh8bV", - "filament_id": "GFL99", + "setting_id": "xTeHmDOY48Bik10J", "instantiation": "true", "filament_settings_id": [ - "Phrozen PLA @Phrozen Arco 0.4 nozzle" + "Generic PLA @Phrozen Arco 0.4 nozzle" ], "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json b/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json index 051f62fa6c..c34d188507 100644 --- a/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json +++ b/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json @@ -14,7 +14,7 @@ ], "default_print_profile": "0.20mm Standard @Phrozen Arco 0.4 nozzle", "default_filament_profile": [ - "Phrozen PLA @Phrozen Arco 0.4 nozzle" + "Generic PLA @Phrozen Arco 0.4 nozzle" ], "disable_m73": "1", "gcode_flavor": "klipper", diff --git a/resources/profiles/Phrozen/machine/Phrozen Arco.json b/resources/profiles/Phrozen/machine/Phrozen Arco.json index 648b014ebd..be6c15bfe7 100644 --- a/resources/profiles/Phrozen/machine/Phrozen Arco.json +++ b/resources/profiles/Phrozen/machine/Phrozen Arco.json @@ -8,5 +8,5 @@ "bed_model": "Phrozen Arco_buildplate_model.stl", "bed_texture": "Phrozen Arco_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Phrozen PLA @Phrozen Arco 0.4 nozzle" + "default_materials": "Generic PLA @Phrozen Arco 0.4 nozzle" } diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 113b085c96..ecbbe179e7 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ @@ -1449,156 +1449,168 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Prusa Generic ABS", - "sub_path": "filament/Prusa Generic ABS.json" + "name": "Generic ABS @Prusa base", + "sub_path": "filament/Generic ABS @Prusa base.json" }, { - "name": "Prusa Generic ABS @CORE One", - "sub_path": "filament/Prusa Generic ABS @CORE One.json" + "name": "Generic ABS @Prusa", + "sub_path": "filament/Generic ABS @Prusa.json" }, { - "name": "Prusa Generic ABS @MINIIS", - "sub_path": "filament/Prusa Generic ABS @MINIIS.json" + "name": "Generic ABS @Prusa CORE One", + "sub_path": "filament/Generic ABS @Prusa CORE One.json" }, { - "name": "Prusa Generic ABS @MINIIS 0.25", - "sub_path": "filament/Prusa Generic ABS @MINIIS 0.25.json" + "name": "Generic ABS @Prusa MINIIS", + "sub_path": "filament/Generic ABS @Prusa MINIIS.json" }, { - "name": "Prusa Generic ABS @MINIIS 0.6", - "sub_path": "filament/Prusa Generic ABS @MINIIS 0.6.json" + "name": "Generic ABS @Prusa MINIIS 0.25", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic ABS @MINIIS 0.8", - "sub_path": "filament/Prusa Generic ABS @MINIIS 0.8.json" + "name": "Generic ABS @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic ABS @MK3.5", - "sub_path": "filament/Prusa Generic ABS @MK3.5.json" + "name": "Generic ABS @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic ABS @MK3.5 0.25", - "sub_path": "filament/Prusa Generic ABS @MK3.5 0.25.json" + "name": "Generic ABS @Prusa MK3.5", + "sub_path": "filament/Generic ABS @Prusa MK3.5.json" }, { - "name": "Prusa Generic ABS @MK3.5 0.6", - "sub_path": "filament/Prusa Generic ABS @MK3.5 0.6.json" + "name": "Generic ABS @Prusa MK3.5 0.25", + "sub_path": "filament/Generic ABS @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic ABS @MK3.5 0.8", - "sub_path": "filament/Prusa Generic ABS @MK3.5 0.8.json" + "name": "Generic ABS @Prusa MK3.5 0.6", + "sub_path": "filament/Generic ABS @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic ABS @MK4", - "sub_path": "filament/Prusa Generic ABS @MK4.json" + "name": "Generic ABS @Prusa MK3.5 0.8", + "sub_path": "filament/Generic ABS @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic ABS @MK4S", - "sub_path": "filament/Prusa Generic ABS @MK4S.json" + "name": "Generic ABS @Prusa MK4", + "sub_path": "filament/Generic ABS @Prusa MK4.json" }, { - "name": "Prusa Generic ABS @XL", - "sub_path": "filament/Prusa Generic ABS @XL.json" + "name": "Generic ABS @Prusa MK4S", + "sub_path": "filament/Generic ABS @Prusa MK4S.json" }, { - "name": "Prusa Generic ABS @XL 5T", - "sub_path": "filament/Prusa Generic ABS @XL 5T.json" + "name": "Generic ABS @Prusa XL", + "sub_path": "filament/Generic ABS @Prusa XL.json" }, { - "name": "Prusa Generic ABS HF @MINIIS", - "sub_path": "filament/Prusa Generic ABS HF @MINIIS.json" + "name": "Generic ABS @Prusa XL 5T", + "sub_path": "filament/Generic ABS @Prusa XL 5T.json" }, { - "name": "Prusa Generic ABS HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic ABS HF @MINIIS 0.6.json" + "name": "Generic ABS HF @Prusa base", + "sub_path": "filament/Generic ABS HF @Prusa base.json" }, { - "name": "Prusa Generic ABS HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic ABS HF @MINIIS 0.8.json" + "name": "Generic ABS HF @Prusa MINIIS", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic ABS HF @MK3.5", - "sub_path": "filament/Prusa Generic ABS HF @MK3.5.json" + "name": "Generic ABS HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic ABS HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic ABS HF @MK3.5 0.6.json" + "name": "Generic ABS HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic ABS HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic ABS HF @MK3.5 0.8.json" + "name": "Generic ABS HF @Prusa MK3.5", + "sub_path": "filament/Generic ABS HF @Prusa MK3.5.json" }, { - "name": "Prusa Generic ASA", - "sub_path": "filament/Prusa Generic ASA.json" + "name": "Generic ABS HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic ABS HF @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic ASA @CORE One", - "sub_path": "filament/Prusa Generic ASA @CORE One.json" + "name": "Generic ABS HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic ABS HF @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic ASA @MINIIS", - "sub_path": "filament/Prusa Generic ASA @MINIIS.json" + "name": "Generic ASA @Prusa", + "sub_path": "filament/Generic ASA @Prusa.json" }, { - "name": "Prusa Generic ASA @MINIIS 0.25", - "sub_path": "filament/Prusa Generic ASA @MINIIS 0.25.json" + "name": "Generic ASA @Prusa CORE One", + "sub_path": "filament/Generic ASA @Prusa CORE One.json" }, { - "name": "Prusa Generic ASA @MINIIS 0.6", - "sub_path": "filament/Prusa Generic ASA @MINIIS 0.6.json" + "name": "Generic ASA @Prusa MINIIS", + "sub_path": "filament/Generic ASA @Prusa MINIIS.json" }, { - "name": "Prusa Generic ASA @MINIIS 0.8", - "sub_path": "filament/Prusa Generic ASA @MINIIS 0.8.json" + "name": "Generic ASA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic ASA @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic ASA @MK3.5", - "sub_path": "filament/Prusa Generic ASA @MK3.5.json" + "name": "Generic ASA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ASA @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic ASA @MK3.5 0.25", - "sub_path": "filament/Prusa Generic ASA @MK3.5 0.25.json" + "name": "Generic ASA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ASA @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic ASA @MK3.5 0.6", - "sub_path": "filament/Prusa Generic ASA @MK3.5 0.6.json" + "name": "Generic ASA @Prusa MK3.5", + "sub_path": "filament/Generic ASA @Prusa MK3.5.json" }, { - "name": "Prusa Generic ASA @MK3.5 0.8", - "sub_path": "filament/Prusa Generic ASA @MK3.5 0.8.json" + "name": "Generic ASA @Prusa MK3.5 0.25", + "sub_path": "filament/Generic ASA @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic ASA @MK4", - "sub_path": "filament/Prusa Generic ASA @MK4.json" + "name": "Generic ASA @Prusa MK3.5 0.6", + "sub_path": "filament/Generic ASA @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic ASA @MK4S", - "sub_path": "filament/Prusa Generic ASA @MK4S.json" + "name": "Generic ASA @Prusa MK3.5 0.8", + "sub_path": "filament/Generic ASA @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic ASA HF @MINIIS", - "sub_path": "filament/Prusa Generic ASA HF @MINIIS.json" + "name": "Generic ASA @Prusa MK4", + "sub_path": "filament/Generic ASA @Prusa MK4.json" }, { - "name": "Prusa Generic ASA HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic ASA HF @MINIIS 0.6.json" + "name": "Generic ASA @Prusa MK4S", + "sub_path": "filament/Generic ASA @Prusa MK4S.json" }, { - "name": "Prusa Generic ASA HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic ASA HF @MINIIS 0.8.json" + "name": "Generic ASA HF @Prusa base", + "sub_path": "filament/Generic ASA HF @Prusa base.json" }, { - "name": "Prusa Generic ASA HF @MK3.5", - "sub_path": "filament/Prusa Generic ASA HF @MK3.5.json" + "name": "Generic ASA HF @Prusa MINIIS", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic ASA HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic ASA HF @MK3.5 0.6.json" + "name": "Generic ASA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic ASA HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic ASA HF @MK3.5 0.8.json" + "name": "Generic ASA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic ASA HF @Prusa MK3.5", + "sub_path": "filament/Generic ASA HF @Prusa MK3.5.json" + }, + { + "name": "Generic ASA HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic ASA HF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic ASA HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic ASA HF @Prusa MK3.5 0.8.json" }, { "name": "Prusament ASA @CORE One", @@ -1613,88 +1625,96 @@ "sub_path": "filament/Prusament ASA @XL 5T.json" }, { - "name": "Prusa Generic FLEX @XL", - "sub_path": "filament/Prusa Generic FLEX @XL.json" + "name": "Generic FLEX @Prusa XL", + "sub_path": "filament/Generic FLEX @Prusa XL.json" }, { - "name": "Prusa Generic FLEX @XL 5T", - "sub_path": "filament/Prusa Generic FLEX @XL 5T.json" + "name": "Generic FLEX @Prusa XL 5T", + "sub_path": "filament/Generic FLEX @Prusa XL 5T.json" }, { - "name": "Prusa Generic TPU @CORE One", - "sub_path": "filament/Prusa Generic TPU @CORE One.json" + "name": "Generic TPU @Prusa CORE One", + "sub_path": "filament/Generic TPU @Prusa CORE One.json" }, { - "name": "Prusa Generic PA", - "sub_path": "filament/Prusa Generic PA.json" + "name": "Generic PA @Prusa base", + "sub_path": "filament/Generic PA @Prusa base.json" }, { - "name": "Prusa Generic PA @MINIIS", - "sub_path": "filament/Prusa Generic PA @MINIIS.json" + "name": "Generic PA @Prusa", + "sub_path": "filament/Generic PA @Prusa.json" }, { - "name": "Prusa Generic PA @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PA @MINIIS 0.25.json" + "name": "Generic PA @Prusa MINIIS", + "sub_path": "filament/Generic PA @Prusa MINIIS.json" }, { - "name": "Prusa Generic PA @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PA @MINIIS 0.6.json" + "name": "Generic PA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PA @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PA @MINIIS 0.8.json" + "name": "Generic PA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PA @MK3.5", - "sub_path": "filament/Prusa Generic PA @MK3.5.json" + "name": "Generic PA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PA @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PA @MK3.5 0.25.json" + "name": "Generic PA @Prusa MK3.5", + "sub_path": "filament/Generic PA @Prusa MK3.5.json" }, { - "name": "Prusa Generic PA @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PA @MK3.5 0.6.json" + "name": "Generic PA @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PA @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic PA @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PA @MK3.5 0.8.json" + "name": "Generic PA @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PA @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PA-CF", - "sub_path": "filament/Prusa Generic PA-CF.json" + "name": "Generic PA @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PA @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PA-CF @MINIIS", - "sub_path": "filament/Prusa Generic PA-CF @MINIIS.json" + "name": "Generic PA-CF @Prusa base", + "sub_path": "filament/Generic PA-CF @Prusa base.json" }, { - "name": "Prusa Generic PA-CF @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PA-CF @MINIIS 0.25.json" + "name": "Generic PA-CF @Prusa", + "sub_path": "filament/Generic PA-CF @Prusa.json" }, { - "name": "Prusa Generic PA-CF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PA-CF @MINIIS 0.6.json" + "name": "Generic PA-CF @Prusa MINIIS", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PA-CF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PA-CF @MINIIS 0.8.json" + "name": "Generic PA-CF @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PA-CF @MK3.5", - "sub_path": "filament/Prusa Generic PA-CF @MK3.5.json" + "name": "Generic PA-CF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PA-CF @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PA-CF @MK3.5 0.25.json" + "name": "Generic PA-CF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PA-CF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PA-CF @MK3.5 0.6.json" + "name": "Generic PA-CF @Prusa MK3.5", + "sub_path": "filament/Generic PA-CF @Prusa MK3.5.json" }, { - "name": "Prusa Generic PA-CF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PA-CF @MK3.5 0.8.json" + "name": "Generic PA-CF @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PA-CF @Prusa MK3.5 0.25.json" + }, + { + "name": "Generic PA-CF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PA-CF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic PA-CF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PA-CF @Prusa MK3.5 0.8.json" }, { "name": "Prusament PA-CF @CORE One", @@ -1709,64 +1729,68 @@ "sub_path": "filament/Prusament PA-CF @XL 5T.json" }, { - "name": "Prusa Generic PC", - "sub_path": "filament/Prusa Generic PC.json" + "name": "Generic PC @Prusa", + "sub_path": "filament/Generic PC @Prusa.json" }, { - "name": "Prusa Generic PC @MINIIS", - "sub_path": "filament/Prusa Generic PC @MINIIS.json" + "name": "Generic PC @Prusa MINIIS", + "sub_path": "filament/Generic PC @Prusa MINIIS.json" }, { - "name": "Prusa Generic PC @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PC @MINIIS 0.25.json" + "name": "Generic PC @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PC @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PC @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PC @MINIIS 0.6.json" + "name": "Generic PC @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PC @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PC @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PC @MINIIS 0.8.json" + "name": "Generic PC @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PC @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PC @MK3.5", - "sub_path": "filament/Prusa Generic PC @MK3.5.json" + "name": "Generic PC @Prusa MK3.5", + "sub_path": "filament/Generic PC @Prusa MK3.5.json" }, { - "name": "Prusa Generic PC @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PC @MK3.5 0.25.json" + "name": "Generic PC @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PC @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic PC @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PC @MK3.5 0.6.json" + "name": "Generic PC @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PC @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PC @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PC @MK3.5 0.8.json" + "name": "Generic PC @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PC @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PC HF @MINIIS", - "sub_path": "filament/Prusa Generic PC HF @MINIIS.json" + "name": "Generic PC HF @Prusa base", + "sub_path": "filament/Generic PC HF @Prusa base.json" }, { - "name": "Prusa Generic PC HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PC HF @MINIIS 0.6.json" + "name": "Generic PC HF @Prusa MINIIS", + "sub_path": "filament/Generic PC HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PC HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PC HF @MINIIS 0.8.json" + "name": "Generic PC HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PC HF @MK3.5", - "sub_path": "filament/Prusa Generic PC HF @MK3.5.json" + "name": "Generic PC HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PC HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PC HF @MK3.5 0.6.json" + "name": "Generic PC HF @Prusa MK3.5", + "sub_path": "filament/Generic PC HF @Prusa MK3.5.json" }, { - "name": "Prusa Generic PC HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PC HF @MK3.5 0.8.json" + "name": "Generic PC HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PC HF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic PC HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PC HF @Prusa MK3.5 0.8.json" }, { "name": "Prusament PC Blend @CORE One", @@ -1793,89 +1817,101 @@ "sub_path": "filament/Prusament PC-CF @XL 5T.json" }, { - "name": "Prusa Generic PETG", - "sub_path": "filament/Prusa Generic PETG.json" + "name": "Generic PETG @Prusa base", + "sub_path": "filament/Generic PETG @Prusa base.json" }, { - "name": "Prusa Generic PETG @CORE One", - "sub_path": "filament/Prusa Generic PETG @CORE One.json" + "name": "Generic PETG @Prusa", + "sub_path": "filament/Generic PETG @Prusa.json" }, { - "name": "Prusa Generic PETG @MINIIS", - "sub_path": "filament/Prusa Generic PETG @MINIIS.json" + "name": "Generic PETG @Prusa CORE One", + "sub_path": "filament/Generic PETG @Prusa CORE One.json" }, { - "name": "Prusa Generic PETG @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PETG @MINIIS 0.25.json" + "name": "Generic PETG @Prusa MINIIS", + "sub_path": "filament/Generic PETG @Prusa MINIIS.json" }, { - "name": "Prusa Generic PETG @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PETG @MINIIS 0.6.json" + "name": "Generic PETG @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PETG @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PETG @MINIIS 0.8.json" + "name": "Generic PETG @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PETG @MK3.5", - "sub_path": "filament/Prusa Generic PETG @MK3.5.json" + "name": "Generic PETG @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PETG @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PETG @MK3.5 0.25.json" + "name": "Generic PETG @Prusa MK3.5", + "sub_path": "filament/Generic PETG @Prusa MK3.5.json" }, { - "name": "Prusa Generic PETG @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PETG @MK3.5 0.6.json" + "name": "Generic PETG @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PETG @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic PETG @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PETG @MK3.5 0.8.json" + "name": "Generic PETG @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PETG @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PETG @MK4", - "sub_path": "filament/Prusa Generic PETG @MK4.json" + "name": "Generic PETG @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PETG @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PETG @MK4S", - "sub_path": "filament/Prusa Generic PETG @MK4S.json" + "name": "Generic PETG @Prusa MK4", + "sub_path": "filament/Generic PETG @Prusa MK4.json" }, { - "name": "Prusa Generic PETG @XL", - "sub_path": "filament/Prusa Generic PETG @XL.json" + "name": "Generic PETG @Prusa MK4S", + "sub_path": "filament/Generic PETG @Prusa MK4S.json" }, { - "name": "Prusa Generic PETG @XL 5T", - "sub_path": "filament/Prusa Generic PETG @XL 5T.json" + "name": "Generic PETG @Prusa XL", + "sub_path": "filament/Generic PETG @Prusa XL.json" }, { - "name": "Prusa Generic PETG HF @MINIIS", - "sub_path": "filament/Prusa Generic PETG HF @MINIIS.json" + "name": "Generic PETG @Prusa XL 5T", + "sub_path": "filament/Generic PETG @Prusa XL 5T.json" }, { - "name": "Prusa Generic PETG HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PETG HF @MINIIS 0.6.json" + "name": "Generic PETG HF @Prusa base", + "sub_path": "filament/Generic PETG HF @Prusa base.json" }, { - "name": "Prusa Generic PETG HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PETG HF @MINIIS 0.8.json" + "name": "Generic PETG HF @Prusa MINIIS", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PETG HF @MK3.5", - "sub_path": "filament/Prusa Generic PETG HF @MK3.5.json" + "name": "Generic PETG HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PETG HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PETG HF @MK3.5 0.6.json" + "name": "Generic PETG HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PETG HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PETG HF @MK3.5 0.8.json" + "name": "Generic PETG HF @Prusa MK3.5", + "sub_path": "filament/Generic PETG HF @Prusa MK3.5.json" + }, + { + "name": "Generic PETG HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PETG HF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic PETG HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PETG HF @Prusa MK3.5 0.8.json" }, { "name": "Prusament PETG @CORE One", "sub_path": "filament/Prusament PETG @CORE One.json" }, + { + "name": "Prusament PETG @base", + "sub_path": "filament/Prusament PETG @base.json" + }, { "name": "Prusament PETG @XL", "sub_path": "filament/Prusament PETG @XL.json" @@ -1885,129 +1921,145 @@ "sub_path": "filament/Prusament PETG @XL 5T.json" }, { - "name": "Prusa Generic PLA", - "sub_path": "filament/Prusa Generic PLA.json" + "name": "Generic PLA @Prusa base", + "sub_path": "filament/Generic PLA @Prusa base.json" }, { - "name": "Prusa Generic PLA @CORE One", - "sub_path": "filament/Prusa Generic PLA @CORE One.json" + "name": "Generic PLA @Prusa", + "sub_path": "filament/Generic PLA @Prusa.json" }, { - "name": "Prusa Generic PLA @MINIIS", - "sub_path": "filament/Prusa Generic PLA @MINIIS.json" + "name": "Generic PLA @Prusa CORE One", + "sub_path": "filament/Generic PLA @Prusa CORE One.json" }, { - "name": "Prusa Generic PLA @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PLA @MINIIS 0.25.json" + "name": "Generic PLA @Prusa MINIIS", + "sub_path": "filament/Generic PLA @Prusa MINIIS.json" }, { - "name": "Prusa Generic PLA @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PLA @MINIIS 0.6.json" + "name": "Generic PLA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PLA @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PLA @MINIIS 0.8.json" + "name": "Generic PLA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PLA @MK3.5", - "sub_path": "filament/Prusa Generic PLA @MK3.5.json" + "name": "Generic PLA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PLA @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PLA @MK3.5 0.25.json" + "name": "Generic PLA @Prusa MK3.5", + "sub_path": "filament/Generic PLA @Prusa MK3.5.json" }, { - "name": "Prusa Generic PLA @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PLA @MK3.5 0.6.json" + "name": "Generic PLA @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PLA @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic PLA @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PLA @MK3.5 0.8.json" + "name": "Generic PLA @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PLA @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PLA @MK4", - "sub_path": "filament/Prusa Generic PLA @MK4.json" + "name": "Generic PLA @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PLA @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PLA @MK4S", - "sub_path": "filament/Prusa Generic PLA @MK4S.json" + "name": "Generic PLA @Prusa MK4", + "sub_path": "filament/Generic PLA @Prusa MK4.json" }, { - "name": "Prusa Generic PLA @XL", - "sub_path": "filament/Prusa Generic PLA @XL.json" + "name": "Generic PLA @Prusa MK4S", + "sub_path": "filament/Generic PLA @Prusa MK4S.json" }, { - "name": "Prusa Generic PLA @XL 5T", - "sub_path": "filament/Prusa Generic PLA @XL 5T.json" + "name": "Generic PLA @Prusa XL", + "sub_path": "filament/Generic PLA @Prusa XL.json" }, { - "name": "Prusa Generic PLA HF @MINIIS", - "sub_path": "filament/Prusa Generic PLA HF @MINIIS.json" + "name": "Generic PLA @Prusa XL 5T", + "sub_path": "filament/Generic PLA @Prusa XL 5T.json" }, { - "name": "Prusa Generic PLA HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PLA HF @MINIIS 0.6.json" + "name": "Generic PLA HF @Prusa base", + "sub_path": "filament/Generic PLA HF @Prusa base.json" }, { - "name": "Prusa Generic PLA HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PLA HF @MINIIS 0.8.json" + "name": "Generic PLA HF @Prusa MINIIS", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PLA HF @MK3.5", - "sub_path": "filament/Prusa Generic PLA HF @MK3.5.json" + "name": "Generic PLA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PLA HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PLA HF @MK3.5 0.6.json" + "name": "Generic PLA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PLA HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PLA HF @MK3.5 0.8.json" + "name": "Generic PLA HF @Prusa MK3.5", + "sub_path": "filament/Generic PLA HF @Prusa MK3.5.json" }, { - "name": "Prusa Generic PLA Silk @CORE One", - "sub_path": "filament/Prusa Generic PLA Silk @CORE One.json" + "name": "Generic PLA HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PLA HF @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PLA-CF", - "sub_path": "filament/Prusa Generic PLA-CF.json" + "name": "Generic PLA HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PLA HF @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PLA-CF @MINIIS", - "sub_path": "filament/Prusa Generic PLA-CF @MINIIS.json" + "name": "Generic PLA Silk @Prusa CORE One", + "sub_path": "filament/Generic PLA Silk @Prusa CORE One.json" }, { - "name": "Prusa Generic PLA-CF @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PLA-CF @MINIIS 0.25.json" + "name": "Generic PLA-CF @Prusa base", + "sub_path": "filament/Generic PLA-CF @Prusa base.json" }, { - "name": "Prusa Generic PLA-CF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PLA-CF @MINIIS 0.6.json" + "name": "Generic PLA-CF @Prusa", + "sub_path": "filament/Generic PLA-CF @Prusa.json" }, { - "name": "Prusa Generic PLA-CF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PLA-CF @MINIIS 0.8.json" + "name": "Generic PLA-CF @Prusa MINIIS", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PLA-CF @MK3.5", - "sub_path": "filament/Prusa Generic PLA-CF @MK3.5.json" + "name": "Generic PLA-CF @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PLA-CF @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PLA-CF @MK3.5 0.25.json" + "name": "Generic PLA-CF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PLA-CF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PLA-CF @MK3.5 0.6.json" + "name": "Generic PLA-CF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PLA-CF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PLA-CF @MK3.5 0.8.json" + "name": "Generic PLA-CF @Prusa MK3.5", + "sub_path": "filament/Generic PLA-CF @Prusa MK3.5.json" + }, + { + "name": "Generic PLA-CF @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PLA-CF @Prusa MK3.5 0.25.json" + }, + { + "name": "Generic PLA-CF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PLA-CF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic PLA-CF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PLA-CF @Prusa MK3.5 0.8.json" }, { "name": "Prusament PLA @CORE One", "sub_path": "filament/Prusament PLA @CORE One.json" }, + { + "name": "Prusament PLA @base", + "sub_path": "filament/Prusament PLA @base.json" + }, { "name": "Prusament PLA @XL", "sub_path": "filament/Prusament PLA @XL.json" @@ -2020,6 +2072,10 @@ "name": "Prusament rPLA @CORE One", "sub_path": "filament/Prusament rPLA @CORE One.json" }, + { + "name": "Prusament rPLA @base", + "sub_path": "filament/Prusament rPLA @base.json" + }, { "name": "Prusament rPLA @XL", "sub_path": "filament/Prusament rPLA @XL.json" @@ -2029,64 +2085,72 @@ "sub_path": "filament/Prusament rPLA @XL 5T.json" }, { - "name": "Prusa Generic PVA", - "sub_path": "filament/Prusa Generic PVA.json" + "name": "Generic PVA @Prusa base", + "sub_path": "filament/Generic PVA @Prusa base.json" }, { - "name": "Prusa Generic PVA @MINIIS", - "sub_path": "filament/Prusa Generic PVA @MINIIS.json" + "name": "Generic PVA @Prusa", + "sub_path": "filament/Generic PVA @Prusa.json" }, { - "name": "Prusa Generic PVA @MINIIS 0.25", - "sub_path": "filament/Prusa Generic PVA @MINIIS 0.25.json" + "name": "Generic PVA @Prusa MINIIS", + "sub_path": "filament/Generic PVA @Prusa MINIIS.json" }, { - "name": "Prusa Generic PVA @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PVA @MINIIS 0.6.json" + "name": "Generic PVA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.25.json" }, { - "name": "Prusa Generic PVA @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PVA @MINIIS 0.8.json" + "name": "Generic PVA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PVA @MK3.5", - "sub_path": "filament/Prusa Generic PVA @MK3.5.json" + "name": "Generic PVA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PVA @MK3.5 0.25", - "sub_path": "filament/Prusa Generic PVA @MK3.5 0.25.json" + "name": "Generic PVA @Prusa MK3.5", + "sub_path": "filament/Generic PVA @Prusa MK3.5.json" }, { - "name": "Prusa Generic PVA @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PVA @MK3.5 0.6.json" + "name": "Generic PVA @Prusa MK3.5 0.25", + "sub_path": "filament/Generic PVA @Prusa MK3.5 0.25.json" }, { - "name": "Prusa Generic PVA @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PVA @MK3.5 0.8.json" + "name": "Generic PVA @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PVA @Prusa MK3.5 0.6.json" }, { - "name": "Prusa Generic PVA HF @MINIIS", - "sub_path": "filament/Prusa Generic PVA HF @MINIIS.json" + "name": "Generic PVA @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PVA @Prusa MK3.5 0.8.json" }, { - "name": "Prusa Generic PVA HF @MINIIS 0.6", - "sub_path": "filament/Prusa Generic PVA HF @MINIIS 0.6.json" + "name": "Generic PVA HF @Prusa base", + "sub_path": "filament/Generic PVA HF @Prusa base.json" }, { - "name": "Prusa Generic PVA HF @MINIIS 0.8", - "sub_path": "filament/Prusa Generic PVA HF @MINIIS 0.8.json" + "name": "Generic PVA HF @Prusa MINIIS", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic PVA HF @MK3.5", - "sub_path": "filament/Prusa Generic PVA HF @MK3.5.json" + "name": "Generic PVA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.6.json" }, { - "name": "Prusa Generic PVA HF @MK3.5 0.6", - "sub_path": "filament/Prusa Generic PVA HF @MK3.5 0.6.json" + "name": "Generic PVA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.8.json" }, { - "name": "Prusa Generic PVA HF @MK3.5 0.8", - "sub_path": "filament/Prusa Generic PVA HF @MK3.5 0.8.json" + "name": "Generic PVA HF @Prusa MK3.5", + "sub_path": "filament/Generic PVA HF @Prusa MK3.5.json" + }, + { + "name": "Generic PVA HF @Prusa MK3.5 0.6", + "sub_path": "filament/Generic PVA HF @Prusa MK3.5 0.6.json" + }, + { + "name": "Generic PVA HF @Prusa MK3.5 0.8", + "sub_path": "filament/Generic PVA HF @Prusa MK3.5 0.8.json" }, { "name": "Prusament PVB @CORE One", @@ -2101,104 +2165,112 @@ "sub_path": "filament/Prusament PVB @XL 5T.json" }, { - "name": "Prusa Generic TPU", - "sub_path": "filament/Prusa Generic TPU.json" + "name": "Generic TPU @Prusa base", + "sub_path": "filament/Generic TPU @Prusa base.json" }, { - "name": "Prusa Generic TPU @MINIIS", - "sub_path": "filament/Prusa Generic TPU @MINIIS.json" + "name": "Generic TPU @Prusa", + "sub_path": "filament/Generic TPU @Prusa.json" }, { - "name": "Prusa Generic TPU @MK3.5", - "sub_path": "filament/Prusa Generic TPU @MK3.5.json" + "name": "Generic TPU @Prusa MINIIS", + "sub_path": "filament/Generic TPU @Prusa MINIIS.json" }, { - "name": "Prusa Generic TPU @MK4", - "sub_path": "filament/Prusa Generic TPU @MK4.json" + "name": "Generic TPU @Prusa MK3.5", + "sub_path": "filament/Generic TPU @Prusa MK3.5.json" }, { - "name": "Prusa Generic TPU @MK4S", - "sub_path": "filament/Prusa Generic TPU @MK4S.json" + "name": "Generic TPU @Prusa MK4", + "sub_path": "filament/Generic TPU @Prusa MK4.json" }, { - "name": "Prusa Generic TPU HF @MINIIS", - "sub_path": "filament/Prusa Generic TPU HF @MINIIS.json" + "name": "Generic TPU @Prusa MK4S", + "sub_path": "filament/Generic TPU @Prusa MK4S.json" }, { - "name": "Prusa Generic TPU HF @MK3.5", - "sub_path": "filament/Prusa Generic TPU HF @MK3.5.json" + "name": "Generic TPU HF @Prusa base", + "sub_path": "filament/Generic TPU HF @Prusa base.json" }, { - "name": "Prusa Generic ABS @CORE One 0.6", - "sub_path": "filament/Prusa Generic ABS @CORE One 0.6.json" + "name": "Generic TPU HF @Prusa MINIIS", + "sub_path": "filament/Generic TPU HF @Prusa MINIIS.json" }, { - "name": "Prusa Generic ABS @CORE One 0.8", - "sub_path": "filament/Prusa Generic ABS @CORE One 0.8.json" + "name": "Generic TPU HF @Prusa MK3.5", + "sub_path": "filament/Generic TPU HF @Prusa MK3.5.json" }, { - "name": "Prusa Generic ABS @CORE One HF 0.4", - "sub_path": "filament/Prusa Generic ABS @CORE One HF 0.4.json" + "name": "Generic ABS @Prusa CORE One 0.6", + "sub_path": "filament/Generic ABS @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic ABS @CORE One HF 0.5", - "sub_path": "filament/Prusa Generic ABS @CORE One HF 0.5.json" + "name": "Generic ABS @Prusa CORE One 0.8", + "sub_path": "filament/Generic ABS @Prusa CORE One 0.8.json" }, { - "name": "Prusa Generic ABS @CORE One HF 0.6", - "sub_path": "filament/Prusa Generic ABS @CORE One HF 0.6.json" + "name": "Generic ABS @Prusa CORE One HF 0.4", + "sub_path": "filament/Generic ABS @Prusa CORE One HF 0.4.json" }, { - "name": "Prusa Generic ABS @CORE One HF 0.8", - "sub_path": "filament/Prusa Generic ABS @CORE One HF 0.8.json" + "name": "Generic ABS @Prusa CORE One HF 0.5", + "sub_path": "filament/Generic ABS @Prusa CORE One HF 0.5.json" }, { - "name": "Prusa Generic ABS @MK4S 0.6", - "sub_path": "filament/Prusa Generic ABS @MK4S 0.6.json" + "name": "Generic ABS @Prusa CORE One HF 0.6", + "sub_path": "filament/Generic ABS @Prusa CORE One HF 0.6.json" }, { - "name": "Prusa Generic ABS @MK4S 0.8", - "sub_path": "filament/Prusa Generic ABS @MK4S 0.8.json" + "name": "Generic ABS @Prusa CORE One HF 0.8", + "sub_path": "filament/Generic ABS @Prusa CORE One HF 0.8.json" }, { - "name": "Prusa Generic ABS @MK4S HF0.4", - "sub_path": "filament/Prusa Generic ABS @MK4S HF0.4.json" + "name": "Generic ABS @Prusa MK4S 0.6", + "sub_path": "filament/Generic ABS @Prusa MK4S 0.6.json" }, { - "name": "Prusa Generic ASA @CORE One 0.6", - "sub_path": "filament/Prusa Generic ASA @CORE One 0.6.json" + "name": "Generic ABS @Prusa MK4S 0.8", + "sub_path": "filament/Generic ABS @Prusa MK4S 0.8.json" }, { - "name": "Prusa Generic ASA @CORE One 0.8", - "sub_path": "filament/Prusa Generic ASA @CORE One 0.8.json" + "name": "Generic ABS @Prusa MK4S HF0.4", + "sub_path": "filament/Generic ABS @Prusa MK4S HF0.4.json" }, { - "name": "Prusa Generic ASA @CORE One HF 0.4", - "sub_path": "filament/Prusa Generic ASA @CORE One HF 0.4.json" + "name": "Generic ASA @Prusa CORE One 0.6", + "sub_path": "filament/Generic ASA @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic ASA @CORE One HF 0.5", - "sub_path": "filament/Prusa Generic ASA @CORE One HF 0.5.json" + "name": "Generic ASA @Prusa CORE One 0.8", + "sub_path": "filament/Generic ASA @Prusa CORE One 0.8.json" }, { - "name": "Prusa Generic ASA @CORE One HF 0.6", - "sub_path": "filament/Prusa Generic ASA @CORE One HF 0.6.json" + "name": "Generic ASA @Prusa CORE One HF 0.4", + "sub_path": "filament/Generic ASA @Prusa CORE One HF 0.4.json" }, { - "name": "Prusa Generic ASA @CORE One HF 0.8", - "sub_path": "filament/Prusa Generic ASA @CORE One HF 0.8.json" + "name": "Generic ASA @Prusa CORE One HF 0.5", + "sub_path": "filament/Generic ASA @Prusa CORE One HF 0.5.json" }, { - "name": "Prusa Generic ASA @MK4S 0.6", - "sub_path": "filament/Prusa Generic ASA @MK4S 0.6.json" + "name": "Generic ASA @Prusa CORE One HF 0.6", + "sub_path": "filament/Generic ASA @Prusa CORE One HF 0.6.json" }, { - "name": "Prusa Generic ASA @MK4S 0.8", - "sub_path": "filament/Prusa Generic ASA @MK4S 0.8.json" + "name": "Generic ASA @Prusa CORE One HF 0.8", + "sub_path": "filament/Generic ASA @Prusa CORE One HF 0.8.json" }, { - "name": "Prusa Generic ASA @MK4S HF0.4", - "sub_path": "filament/Prusa Generic ASA @MK4S HF0.4.json" + "name": "Generic ASA @Prusa MK4S 0.6", + "sub_path": "filament/Generic ASA @Prusa MK4S 0.6.json" + }, + { + "name": "Generic ASA @Prusa MK4S 0.8", + "sub_path": "filament/Generic ASA @Prusa MK4S 0.8.json" + }, + { + "name": "Generic ASA @Prusa MK4S HF0.4", + "sub_path": "filament/Generic ASA @Prusa MK4S HF0.4.json" }, { "name": "Prusament ASA @CORE One 0.6", @@ -2225,12 +2297,12 @@ "sub_path": "filament/Prusament ASA @CORE One HF 0.8.json" }, { - "name": "Prusa Generic TPU @CORE One 0.6", - "sub_path": "filament/Prusa Generic TPU @CORE One 0.6.json" + "name": "Generic TPU @Prusa CORE One 0.6", + "sub_path": "filament/Generic TPU @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic TPU @CORE One 0.8", - "sub_path": "filament/Prusa Generic TPU @CORE One 0.8.json" + "name": "Generic TPU @Prusa CORE One 0.8", + "sub_path": "filament/Generic TPU @Prusa CORE One 0.8.json" }, { "name": "Prusament PA-CF @CORE One 0.6", @@ -2273,40 +2345,40 @@ "sub_path": "filament/Prusament PC-CF @CORE One 0.8.json" }, { - "name": "Prusa Generic PETG @CORE One 0.6", - "sub_path": "filament/Prusa Generic PETG @CORE One 0.6.json" + "name": "Generic PETG @Prusa CORE One 0.6", + "sub_path": "filament/Generic PETG @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic PETG @CORE One 0.8", - "sub_path": "filament/Prusa Generic PETG @CORE One 0.8.json" + "name": "Generic PETG @Prusa CORE One 0.8", + "sub_path": "filament/Generic PETG @Prusa CORE One 0.8.json" }, { - "name": "Prusa Generic PETG @CORE One HF 0.4", - "sub_path": "filament/Prusa Generic PETG @CORE One HF 0.4.json" + "name": "Generic PETG @Prusa CORE One HF 0.4", + "sub_path": "filament/Generic PETG @Prusa CORE One HF 0.4.json" }, { - "name": "Prusa Generic PETG @CORE One HF 0.5", - "sub_path": "filament/Prusa Generic PETG @CORE One HF 0.5.json" + "name": "Generic PETG @Prusa CORE One HF 0.5", + "sub_path": "filament/Generic PETG @Prusa CORE One HF 0.5.json" }, { - "name": "Prusa Generic PETG @CORE One HF 0.6", - "sub_path": "filament/Prusa Generic PETG @CORE One HF 0.6.json" + "name": "Generic PETG @Prusa CORE One HF 0.6", + "sub_path": "filament/Generic PETG @Prusa CORE One HF 0.6.json" }, { - "name": "Prusa Generic PETG @CORE One HF 0.8", - "sub_path": "filament/Prusa Generic PETG @CORE One HF 0.8.json" + "name": "Generic PETG @Prusa CORE One HF 0.8", + "sub_path": "filament/Generic PETG @Prusa CORE One HF 0.8.json" }, { - "name": "Prusa Generic PETG @MK4S 0.6", - "sub_path": "filament/Prusa Generic PETG @MK4S 0.6.json" + "name": "Generic PETG @Prusa MK4S 0.6", + "sub_path": "filament/Generic PETG @Prusa MK4S 0.6.json" }, { - "name": "Prusa Generic PETG @MK4S 0.8", - "sub_path": "filament/Prusa Generic PETG @MK4S 0.8.json" + "name": "Generic PETG @Prusa MK4S 0.8", + "sub_path": "filament/Generic PETG @Prusa MK4S 0.8.json" }, { - "name": "Prusa Generic PETG @MK4S HF0.4", - "sub_path": "filament/Prusa Generic PETG @MK4S HF0.4.json" + "name": "Generic PETG @Prusa MK4S HF0.4", + "sub_path": "filament/Generic PETG @Prusa MK4S HF0.4.json" }, { "name": "Prusament PETG @CORE One 0.6", @@ -2333,52 +2405,52 @@ "sub_path": "filament/Prusament PETG @CORE One HF 0.8.json" }, { - "name": "Prusa Generic PLA @CORE One 0.6", - "sub_path": "filament/Prusa Generic PLA @CORE One 0.6.json" + "name": "Generic PLA @Prusa CORE One 0.6", + "sub_path": "filament/Generic PLA @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic PLA @CORE One 0.8", - "sub_path": "filament/Prusa Generic PLA @CORE One 0.8.json" + "name": "Generic PLA @Prusa CORE One 0.8", + "sub_path": "filament/Generic PLA @Prusa CORE One 0.8.json" }, { - "name": "Prusa Generic PLA @CORE One HF 0.4", - "sub_path": "filament/Prusa Generic PLA @CORE One HF 0.4.json" + "name": "Generic PLA @Prusa CORE One HF 0.4", + "sub_path": "filament/Generic PLA @Prusa CORE One HF 0.4.json" }, { - "name": "Prusa Generic PLA @CORE One HF 0.5", - "sub_path": "filament/Prusa Generic PLA @CORE One HF 0.5.json" + "name": "Generic PLA @Prusa CORE One HF 0.5", + "sub_path": "filament/Generic PLA @Prusa CORE One HF 0.5.json" }, { - "name": "Prusa Generic PLA @CORE One HF 0.6", - "sub_path": "filament/Prusa Generic PLA @CORE One HF 0.6.json" + "name": "Generic PLA @Prusa CORE One HF 0.6", + "sub_path": "filament/Generic PLA @Prusa CORE One HF 0.6.json" }, { - "name": "Prusa Generic PLA @CORE One HF 0.8", - "sub_path": "filament/Prusa Generic PLA @CORE One HF 0.8.json" + "name": "Generic PLA @Prusa CORE One HF 0.8", + "sub_path": "filament/Generic PLA @Prusa CORE One HF 0.8.json" }, { - "name": "Prusa Generic PLA @MK4S 0.6", - "sub_path": "filament/Prusa Generic PLA @MK4S 0.6.json" + "name": "Generic PLA @Prusa MK4S 0.6", + "sub_path": "filament/Generic PLA @Prusa MK4S 0.6.json" }, { - "name": "Prusa Generic PLA @MK4S 0.8", - "sub_path": "filament/Prusa Generic PLA @MK4S 0.8.json" + "name": "Generic PLA @Prusa MK4S 0.8", + "sub_path": "filament/Generic PLA @Prusa MK4S 0.8.json" }, { - "name": "Prusa Generic PLA @MK4S HF0.4", - "sub_path": "filament/Prusa Generic PLA @MK4S HF0.4.json" + "name": "Generic PLA @Prusa MK4S HF0.4", + "sub_path": "filament/Generic PLA @Prusa MK4S HF0.4.json" }, { - "name": "Prusa Generic PLA Silk @MK4S", - "sub_path": "filament/Prusa Generic PLA Silk @MK4S.json" + "name": "Generic PLA Silk @Prusa MK4S", + "sub_path": "filament/Generic PLA Silk @Prusa MK4S.json" }, { - "name": "Prusa Generic PLA Silk @CORE One 0.6", - "sub_path": "filament/Prusa Generic PLA Silk @CORE One 0.6.json" + "name": "Generic PLA Silk @Prusa CORE One 0.6", + "sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.6.json" }, { - "name": "Prusa Generic PLA Silk @CORE One 0.8", - "sub_path": "filament/Prusa Generic PLA Silk @CORE One 0.8.json" + "name": "Generic PLA Silk @Prusa CORE One 0.8", + "sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.8.json" }, { "name": "Prusament PLA @CORE One 0.6", @@ -2421,68 +2493,68 @@ "sub_path": "filament/Prusament PVB @CORE One 0.8.json" }, { - "name": "Prusa Generic TPU @MK4S 0.6", - "sub_path": "filament/Prusa Generic TPU @MK4S 0.6.json" + "name": "Generic TPU @Prusa MK4S 0.6", + "sub_path": "filament/Generic TPU @Prusa MK4S 0.6.json" }, { - "name": "Prusa Generic TPU @MK4S 0.8", - "sub_path": "filament/Prusa Generic TPU @MK4S 0.8.json" + "name": "Generic TPU @Prusa MK4S 0.8", + "sub_path": "filament/Generic TPU @Prusa MK4S 0.8.json" }, { - "name": "Prusa Generic ABS @MK4S HF0.5", - "sub_path": "filament/Prusa Generic ABS @MK4S HF0.5.json" + "name": "Generic ABS @Prusa MK4S HF0.5", + "sub_path": "filament/Generic ABS @Prusa MK4S HF0.5.json" }, { - "name": "Prusa Generic ABS @MK4S HF0.6", - "sub_path": "filament/Prusa Generic ABS @MK4S HF0.6.json" + "name": "Generic ABS @Prusa MK4S HF0.6", + "sub_path": "filament/Generic ABS @Prusa MK4S HF0.6.json" }, { - "name": "Prusa Generic ABS @MK4S HF0.8", - "sub_path": "filament/Prusa Generic ABS @MK4S HF0.8.json" + "name": "Generic ABS @Prusa MK4S HF0.8", + "sub_path": "filament/Generic ABS @Prusa MK4S HF0.8.json" }, { - "name": "Prusa Generic ASA @MK4S HF0.5", - "sub_path": "filament/Prusa Generic ASA @MK4S HF0.5.json" + "name": "Generic ASA @Prusa MK4S HF0.5", + "sub_path": "filament/Generic ASA @Prusa MK4S HF0.5.json" }, { - "name": "Prusa Generic ASA @MK4S HF0.6", - "sub_path": "filament/Prusa Generic ASA @MK4S HF0.6.json" + "name": "Generic ASA @Prusa MK4S HF0.6", + "sub_path": "filament/Generic ASA @Prusa MK4S HF0.6.json" }, { - "name": "Prusa Generic ASA @MK4S HF0.8", - "sub_path": "filament/Prusa Generic ASA @MK4S HF0.8.json" + "name": "Generic ASA @Prusa MK4S HF0.8", + "sub_path": "filament/Generic ASA @Prusa MK4S HF0.8.json" }, { - "name": "Prusa Generic PETG @MK4S HF0.5", - "sub_path": "filament/Prusa Generic PETG @MK4S HF0.5.json" + "name": "Generic PETG @Prusa MK4S HF0.5", + "sub_path": "filament/Generic PETG @Prusa MK4S HF0.5.json" }, { - "name": "Prusa Generic PETG @MK4S HF0.6", - "sub_path": "filament/Prusa Generic PETG @MK4S HF0.6.json" + "name": "Generic PETG @Prusa MK4S HF0.6", + "sub_path": "filament/Generic PETG @Prusa MK4S HF0.6.json" }, { - "name": "Prusa Generic PETG @MK4S HF0.8", - "sub_path": "filament/Prusa Generic PETG @MK4S HF0.8.json" + "name": "Generic PETG @Prusa MK4S HF0.8", + "sub_path": "filament/Generic PETG @Prusa MK4S HF0.8.json" }, { - "name": "Prusa Generic PLA @MK4S HF0.5", - "sub_path": "filament/Prusa Generic PLA @MK4S HF0.5.json" + "name": "Generic PLA @Prusa MK4S HF0.5", + "sub_path": "filament/Generic PLA @Prusa MK4S HF0.5.json" }, { - "name": "Prusa Generic PLA @MK4S HF0.6", - "sub_path": "filament/Prusa Generic PLA @MK4S HF0.6.json" + "name": "Generic PLA @Prusa MK4S HF0.6", + "sub_path": "filament/Generic PLA @Prusa MK4S HF0.6.json" }, { - "name": "Prusa Generic PLA @MK4S HF0.8", - "sub_path": "filament/Prusa Generic PLA @MK4S HF0.8.json" + "name": "Generic PLA @Prusa MK4S HF0.8", + "sub_path": "filament/Generic PLA @Prusa MK4S HF0.8.json" }, { - "name": "Prusa Generic PLA Silk @MK4S 0.6", - "sub_path": "filament/Prusa Generic PLA Silk @MK4S 0.6.json" + "name": "Generic PLA Silk @Prusa MK4S 0.6", + "sub_path": "filament/Generic PLA Silk @Prusa MK4S 0.6.json" }, { - "name": "Prusa Generic PLA Silk @MK4S 0.8", - "sub_path": "filament/Prusa Generic PLA Silk @MK4S 0.8.json" + "name": "Generic PLA Silk @Prusa MK4S 0.8", + "sub_path": "filament/Generic PLA Silk @Prusa MK4S 0.8.json" } ], "machine_list": [ diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.6.json new file mode 100644 index 0000000000..8ba18e9dde --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.6.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa CORE One 0.6", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One 0.6;Prusa Generic ABS CORE One 0.6", + "from": "system", + "setting_id": "PYQhstNvKFJ7qsxe", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa CORE One 0.6 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.8.json new file mode 100644 index 0000000000..2981c2ef63 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One 0.8.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa CORE One 0.8", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One 0.8;Prusa Generic ABS CORE One 0.8", + "from": "system", + "setting_id": "ExG49agessyLCVpW", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa CORE One 0.8 nozzle" + ], + "fan_cooling_layer_time": [ + "40" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.4.json similarity index 71% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.4.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.4.json index f3c61471ed..f2e61055ab 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @CORE One HF 0.4", - "inherits": "Prusa Generic ABS @CORE One", + "name": "Generic ABS @Prusa CORE One HF 0.4", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One HF 0.4;Prusa Generic ABS CORE One HF 0.4", "from": "system", - "setting_id": "Sp0sbcvt0EqZ59NT", - "filament_id": "Prusa Generic ABS @CORE One HF 0.4", + "setting_id": "ASYz8yASE82tQDII", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.5.json similarity index 71% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.5.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.5.json index b6892f7630..14782a747a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @CORE One HF 0.5", - "inherits": "Prusa Generic ABS @CORE One", + "name": "Generic ABS @Prusa CORE One HF 0.5", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One HF 0.5;Prusa Generic ABS CORE One HF 0.5", "from": "system", - "setting_id": "U1ih5tnkViqI3vya", - "filament_id": "Prusa Generic ABS @CORE One HF 0.5", + "setting_id": "mzZCm8XDmAR23YR6", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.6.json similarity index 71% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.6.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.6.json index 1354767857..be46455a73 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @CORE One HF 0.6", - "inherits": "Prusa Generic ABS @CORE One", + "name": "Generic ABS @Prusa CORE One HF 0.6", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One HF 0.6;Prusa Generic ABS CORE One HF 0.6", "from": "system", - "setting_id": "MuqHvIoTlM1Pbs8j", - "filament_id": "Prusa Generic ABS @CORE One HF 0.6", + "setting_id": "gJhX2KBpk4wfXIj0", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.8.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.8.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.8.json index 513171ea52..f4d2954ad7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One HF 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @CORE One HF 0.8", - "inherits": "Prusa Generic ABS @CORE One", + "name": "Generic ABS @Prusa CORE One HF 0.8", + "inherits": "Generic ABS @Prusa CORE One", + "renamed_from": "Prusa Generic ABS @CORE One HF 0.8;Prusa Generic ABS CORE One HF 0.8", "from": "system", - "setting_id": "Wbpc2Ddzc3zPnQVr", - "filament_id": "Prusa Generic ABS @CORE One HF 0.8", + "setting_id": "JbGYSVdZTeFJXaVk", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One.json similarity index 92% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One.json index a5a1f6cce1..7339d20a7c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @CORE One", + "name": "Generic ABS @Prusa CORE One", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @CORE One;Prusa Generic ABS CORE One", "from": "system", - "setting_id": "NajoyXhNAiyJyaRq", - "filament_id": "Prusa Generic ABS @CORE One", + "setting_id": "0k31oXq1pLQsHvrj", + "filament_id": "OFY9muEs", "instantiation": "true", "chamber_temperature": [ "40" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.25.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.25.json index 9cb0f8b001..0fe673d854 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @MINIIS 0.25", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa MINIIS 0.25", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @MINIIS 0.25;Prusa Generic ABS MINIIS 0.25", "from": "system", - "setting_id": "NdGEi7BdP59bqz53", + "setting_id": "T7U23i3I3ALV2oEd", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.6.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.6.json index e1d4f272ae..3b9fa495e3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @MINIIS 0.6", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa MINIIS 0.6", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @MINIIS 0.6;Prusa Generic ABS MINIIS 0.6", "from": "system", - "setting_id": "f8RXAaEZ13jSgN9u", + "setting_id": "iZdNxczgKBs0zIiI", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.8.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.8.json index a867f7d6a6..e9d5d7554b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @MINIIS 0.8", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa MINIIS 0.8", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @MINIIS 0.8;Prusa Generic ABS MINIIS 0.8", "from": "system", - "setting_id": "0QdQCdtcKqM9HhpD", + "setting_id": "f6fZt6LNgXSHjInj", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS.json index c52dd45677..9f6569d6e9 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @MINIIS", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa MINIIS", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @MINIIS;Prusa Generic ABS MINIIS", "from": "system", - "setting_id": "LmdcShjNmbZ8E5fo", + "setting_id": "ZqiVOVIYGAbB1SPk", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.25.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.25.json index e141e4925d..0a36c04f02 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK3.5 0.25", + "name": "Generic ABS @Prusa MK3.5 0.25", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @MK3.5 0.25;Prusa Generic ABS MK3.5 0.25", "from": "system", - "setting_id": "bQgom9OdLzHf862f", - "filament_id": "GFB99_5", + "setting_id": "IjZS8VJrGg6fRiI2", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.6.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.6.json index 9108be7bd0..04626e6ad8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK3.5 0.6", + "name": "Generic ABS @Prusa MK3.5 0.6", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @MK3.5 0.6;Prusa Generic ABS MK3.5 0.6", "from": "system", - "setting_id": "juio4SnE9x7bcYdO", - "filament_id": "GFB99_3", + "setting_id": "iJ2u6LgWCZd2zaPJ", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.8.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.8.json index 67c49bfe9a..4e65b7e329 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK3.5 0.8", + "name": "Generic ABS @Prusa MK3.5 0.8", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @MK3.5 0.8;Prusa Generic ABS MK3.5 0.8", "from": "system", - "setting_id": "dRt2nKkJ0saWba5s", - "filament_id": "GFB99_4", + "setting_id": "m8neIe1dfWt5Klbq", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5.json index c966113193..075e055e72 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK3.5", + "name": "Generic ABS @Prusa MK3.5", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @MK3.5;Prusa Generic ABS MK3.5", "from": "system", - "setting_id": "etTLu2Uk95XriBxT", - "filament_id": "GFB99_2", + "setting_id": "EEc6F9uzIkv6nFib", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4.json similarity index 86% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK4.json index 3cbcf73b85..9ab147b678 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK4", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa MK4", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @MK4;Prusa Generic ABS MK4", "from": "system", - "setting_id": "Yeqfgyq1l0b1tCaT", + "setting_id": "MVcRPldYJo5fnXh8", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.6.json new file mode 100644 index 0000000000..7371c1f2f9 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.6.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa MK4S 0.6", + "inherits": "Generic ABS @Prusa MK4S", + "renamed_from": "Prusa Generic ABS @MK4S 0.6;Prusa Generic ABS MK4S 0.6", + "from": "system", + "setting_id": "aNRfxkoYTEG3NPV1", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.6 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.8.json new file mode 100644 index 0000000000..bf0e8419cf --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S 0.8.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa MK4S 0.8", + "inherits": "Generic ABS @Prusa MK4S", + "renamed_from": "Prusa Generic ABS @MK4S 0.8;Prusa Generic ABS MK4S 0.8", + "from": "system", + "setting_id": "sL7NL7GOf52fzxnj", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.4.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.4.json index 8faf91c1df..84aca85d1a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK4S HF0.4", - "inherits": "Prusa Generic ABS @MK4S", + "name": "Generic ABS @Prusa MK4S HF0.4", + "inherits": "Generic ABS @Prusa MK4S", + "renamed_from": "Prusa Generic ABS @MK4S HF0.4;Prusa Generic ABS MK4S HF0.4", "from": "system", - "setting_id": "8iqhyZkLiVCvZYLa", - "filament_id": "Generic ABS @MK4S HF0.4", + "setting_id": "usm5Dycg7z1b1o1v", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.5.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.5.json new file mode 100644 index 0000000000..cb9f3ccebc --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.5.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa MK4S HF0.5", + "inherits": "Generic ABS @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ABS @MK4S HF0.5;Prusa Generic ABS MK4S HF0.5", + "from": "system", + "setting_id": "EdrmoUsReFVn5EWW", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.5 nozzle" + ], + "filament_max_volumetric_speed": [ + "27" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.6.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.6.json new file mode 100644 index 0000000000..2327e2d1cc --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.6.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa MK4S HF0.6", + "inherits": "Generic ABS @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ABS @MK4S HF0.6;Prusa Generic ABS MK4S HF0.6", + "from": "system", + "setting_id": "lcxvk4AN6z8NGdKv", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.6 nozzle" + ], + "filament_max_volumetric_speed": [ + "34" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.8.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.8.json new file mode 100644 index 0000000000..81bf85e41c --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S HF0.8.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa MK4S HF0.8", + "inherits": "Generic ABS @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ABS @MK4S HF0.8;Prusa Generic ABS MK4S HF0.8", + "from": "system", + "setting_id": "VTSZGauVB9yGzOJD", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.8 nozzle" + ], + "fan_min_speed": "15", + "filament_max_volumetric_speed": [ + "36" + ], + "slow_down_layer_time": "25" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S.json index 6880c7850d..c454e1d79b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS @MK4S", + "name": "Generic ABS @Prusa MK4S", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS @MK4S;Prusa Generic ABS MK4S", "from": "system", - "setting_id": "mDDX6Hdt6Ee00Iqb", - "filament_id": "Generic ABS @MK4S", + "setting_id": "6xkFvOyWtTQNXYAm", + "filament_id": "OFY9muEs", "instantiation": "true", "close_fan_the_first_x_layers": "4", "compatible_printers": [ diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json index 3aef5fc5e9..7d53f66645 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @XL 5T", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa XL 5T", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @XL 5T;Prusa Generic ABS XL 5T", "from": "system", - "setting_id": "BVYagI9PtDtO1Jhu", + "setting_id": "XfavDzEzzrXDQVUC", "instantiation": "true", "nozzle_temperature_intial_layer": "255", "nozzle_temperature": "255", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json similarity index 90% rename from resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json index 2abed48083..abf7986c12 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS @XL", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa XL", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS @XL;Prusa Generic ABS XL", "from": "system", - "setting_id": "fN9NUlg8l5DWy4LN", + "setting_id": "HYHkGEjr6Kid2Xg2", "instantiation": "true", "nozzle_temperature_intial_layer": "255", "nozzle_temperature": "255", diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa base.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa base.json new file mode 100644 index 0000000000..265216328f --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic ABS @Prusa base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "OFY9muEs", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa.json similarity index 87% rename from resources/profiles/Prusa/filament/Prusa Generic ABS.json rename to resources/profiles/Prusa/filament/Generic ABS @Prusa.json index 0f77dd0216..0c10f8f297 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS", - "inherits": "fdm_filament_abs", + "name": "Generic ABS @Prusa", + "inherits": "Generic ABS @Prusa base", + "renamed_from": "Prusa Generic ABS", "from": "system", - "setting_id": "pqQMpMgbSN3XvTdK", + "setting_id": "RBSSZVt1NCAz4x3V", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.6.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.6.json index 287f5d03f9..071e689280 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MINIIS 0.6", - "inherits": "fdm_filament_abs", + "name": "Generic ABS HF @Prusa MINIIS 0.6", + "inherits": "Generic ABS HF @Prusa base", + "renamed_from": "Prusa Generic ABS HF @MINIIS 0.6;Prusa Generic ABS HF MINIIS 0.6", "from": "system", - "setting_id": "86pFdkE3ly08xst7", + "setting_id": "L6copDR26trR0D8B", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.8.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.8.json index 358d9a3c46..ca0b250240 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MINIIS 0.8", - "inherits": "fdm_filament_abs", + "name": "Generic ABS HF @Prusa MINIIS 0.8", + "inherits": "Generic ABS HF @Prusa base", + "renamed_from": "Prusa Generic ABS HF @MINIIS 0.8;Prusa Generic ABS HF MINIIS 0.8", "from": "system", - "setting_id": "yn9imamHaXlFDsPr", + "setting_id": "oxiwspATW960u3eZ", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS.json index 1b72e67a4d..6acc1844e7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MINIIS", - "inherits": "fdm_filament_abs", + "name": "Generic ABS HF @Prusa MINIIS", + "inherits": "Generic ABS HF @Prusa base", + "renamed_from": "Prusa Generic ABS HF @MINIIS;Prusa Generic ABS HF MINIIS", "from": "system", - "setting_id": "KFoCfgUW9k9Yglwj", + "setting_id": "KcRRWqB7hrovzBng", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.6.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.6.json index 1622abdbf8..5e446b1507 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MK3.5 0.6", + "name": "Generic ABS HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS HF @MK3.5 0.6;Prusa Generic ABS HF MK3.5 0.6", "from": "system", - "setting_id": "IF0vGesJrPxKZhhP", - "filament_id": "GFB99_6", + "setting_id": "ELwxwCcaOKeCUqoB", + "filament_id": "OF55jHAJ", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.8.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.8.json index bb6fc8b41e..e5f48f3390 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MK3.5 0.8", + "name": "Generic ABS HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS HF @MK3.5 0.8;Prusa Generic ABS HF MK3.5 0.8", "from": "system", - "setting_id": "Bl3iXBs56hdXM9SE", - "filament_id": "GFB99_7", + "setting_id": "xWMzscdlR6llxFKQ", + "filament_id": "OF55jHAJ", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5.json index b6a08a7c20..9c1f224149 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ABS HF @MK3.5", + "name": "Generic ABS HF @Prusa MK3.5", "inherits": "fdm_filament_abs", + "renamed_from": "Prusa Generic ABS HF @MK3.5;Prusa Generic ABS HF MK3.5", "from": "system", - "setting_id": "0luFxwjErjX80SXh", - "filament_id": "GFB99_5", + "setting_id": "n9Xu8L69l5rs6VZF", + "filament_id": "OF55jHAJ", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic ABS HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa base.json new file mode 100644 index 0000000000..adeb00182e --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ABS HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic ABS HF @Prusa base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "OF55jHAJ", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.6.json new file mode 100644 index 0000000000..0fa54a9d21 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.6.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Generic ASA @Prusa CORE One 0.6", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One 0.6;Prusa Generic ASA CORE One 0.6", + "from": "system", + "setting_id": "WJzGT568OrlSqxjt", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "Prusa CORE One 0.6 nozzle" + ], + "nozzle_temperature": [ + "255" + ], + "slow_down_layer_time": [ + "15" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.8.json similarity index 50% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.8.json index 74cf13fd6a..db78ff7eeb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One 0.8", - "inherits": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One 0.8", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One 0.8;Prusa Generic ASA CORE One 0.8", "from": "system", - "setting_id": "jwPZBZ4B116kCVu9", - "filament_id": "Prusa Generic ASA @CORE One 0.8", + "setting_id": "VtxVQIuWVkP6W3aN", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.4.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.4.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.4.json index 8fdca4347e..18a1b68fb3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One HF 0.4", - "inherits": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One HF 0.4", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One HF 0.4;Prusa Generic ASA CORE One HF 0.4", "from": "system", - "setting_id": "3SHxmODIq9SCK4Kd", - "filament_id": "Prusa Generic ASA @CORE One HF 0.4", + "setting_id": "eKDfiVRE59itoppm", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.5.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.5.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.5.json index 5f8eaeca43..dd7c08b25f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One HF 0.5", - "inherits": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One HF 0.5", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One HF 0.5;Prusa Generic ASA CORE One HF 0.5", "from": "system", - "setting_id": "RBSMuMnrcTyregVJ", - "filament_id": "Prusa Generic ASA @CORE One HF 0.5", + "setting_id": "ZjHf5Vvtf4ESNnWb", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.6.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.6.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.6.json index 39b37c3ed8..7ca03b1c37 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One HF 0.6", - "inherits": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One HF 0.6", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One HF 0.6;Prusa Generic ASA CORE One HF 0.6", "from": "system", - "setting_id": "5ezNirZa3m7Oi1Ts", - "filament_id": "Prusa Generic ASA @CORE One HF 0.6", + "setting_id": "aRDgUgQJWdNDJx5c", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.8.json similarity index 76% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.8.json index 782ea4ce94..7fe2a7d8bf 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One HF 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One HF 0.8", - "inherits": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One HF 0.8", + "inherits": "Generic ASA @Prusa CORE One", + "renamed_from": "Prusa Generic ASA @CORE One HF 0.8;Prusa Generic ASA CORE One HF 0.8", "from": "system", - "setting_id": "EtHBkeDF0LvudfBi", - "filament_id": "Prusa Generic ASA @CORE One HF 0.8", + "setting_id": "UQYl8pGvqg2D9zJX", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One.json index 2cffdfabe5..84fe0fa3d9 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @CORE One", + "name": "Generic ASA @Prusa CORE One", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @CORE One;Prusa Generic ASA CORE One", "from": "system", - "setting_id": "Pg9KDqFB63PFJo3Q", - "filament_id": "Prusa Generic ASA @CORE One", + "setting_id": "Q7fgojkHRZI0floy", + "filament_id": "OFLPAxz3", "instantiation": "true", "chamber_temperature": [ "40" @@ -61,7 +62,7 @@ "ASA" ], "filament_vendor": [ - "Prusa Polymers" + "Generic" ], "hot_plate_temp": [ "110" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.25.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.25.json index 213f887ea8..8aeaefd5c8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.25.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MINIIS 0.25", + "name": "Generic ASA @Prusa MINIIS 0.25", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MINIIS 0.25;Prusa Generic ASA MINIIS 0.25", "from": "system", - "setting_id": "oLhpDGV7BIMFqZZq", + "setting_id": "3k53bfrhLAnuxHQo", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.6.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.6.json index f94c769d78..46cf4ee835 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.6.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MINIIS 0.6", + "name": "Generic ASA @Prusa MINIIS 0.6", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MINIIS 0.6;Prusa Generic ASA MINIIS 0.6", "from": "system", - "setting_id": "CN91PnsqqI5CTRhd", + "setting_id": "NMILNvvq88zkz2Lf", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.8.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.8.json index 0ba51d264d..2e96b0d886 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS 0.8.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MINIIS 0.8", + "name": "Generic ASA @Prusa MINIIS 0.8", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MINIIS 0.8;Prusa Generic ASA MINIIS 0.8", "from": "system", - "setting_id": "Mg0Sh8QULakXYt0m", + "setting_id": "lnjqcRttOW0XRGe2", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS.json similarity index 80% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS.json index 10aaaf1503..add2390249 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MINIIS.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MINIIS", + "name": "Generic ASA @Prusa MINIIS", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MINIIS;Prusa Generic ASA MINIIS", "from": "system", - "setting_id": "StIz1ZclM5WV6MCC", + "setting_id": "53FptNgFYqTPZfkV", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.25.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.25.json index ca315a91c4..ddf9c2d380 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK3.5 0.25", + "name": "Generic ASA @Prusa MK3.5 0.25", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK3.5 0.25;Prusa Generic ASA MK3.5 0.25", "from": "system", - "setting_id": "EVFkOOWqYWkUZRQG", - "filament_id": "GFB98_5", + "setting_id": "zyUCfzPlsqRZiUvj", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.6.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.6.json index f578c5e72a..0bcbf559e4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK3.5 0.6", + "name": "Generic ASA @Prusa MK3.5 0.6", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK3.5 0.6;Prusa Generic ASA MK3.5 0.6", "from": "system", - "setting_id": "LW2yi7y86rJ59LMi", - "filament_id": "GFB98_3", + "setting_id": "AjpsLZCJaPLfpGdv", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.8.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.8.json index 20625fbc8d..2ca5decddd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK3.5 0.8", + "name": "Generic ASA @Prusa MK3.5 0.8", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK3.5 0.8;Prusa Generic ASA MK3.5 0.8", "from": "system", - "setting_id": "5iwLdW6pq5Y4Aziw", - "filament_id": "GFB98_4", + "setting_id": "UwiRVbIWfsSjXcwV", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5.json similarity index 79% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5.json index b7825b00e3..61eed484a1 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK3.5", + "name": "Generic ASA @Prusa MK3.5", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK3.5;Prusa Generic ASA MK3.5", "from": "system", - "setting_id": "UaLDui75hljyKAkI", - "filament_id": "GFB98_2", + "setting_id": "BA46zZsxlvH5bdbC", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4.json similarity index 86% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK4.json index 10905e3a24..bf6998903d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK4", + "name": "Generic ASA @Prusa MK4", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK4;Prusa Generic ASA MK4", "from": "system", - "setting_id": "ubNQKQ8Ex6khEWaI", + "setting_id": "3HdBZTnRTu6aKN1e", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.6.json new file mode 100644 index 0000000000..15d5cb17a8 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.6.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "Generic ASA @Prusa MK4S 0.6", + "inherits": "Generic ASA @Prusa MK4S", + "renamed_from": "Prusa Generic ASA @MK4S 0.6;Prusa Generic ASA MK4S 0.6", + "from": "system", + "setting_id": "gtPmGmeYUKi7hwVI", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.6 nozzle" + ], + "nozzle_temperature": "255", + "slow_down_layer_time": "15" +} diff --git a/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.8.json new file mode 100644 index 0000000000..5af8faecb8 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S 0.8.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ASA @Prusa MK4S 0.8", + "inherits": "Generic ASA @Prusa MK4S", + "renamed_from": "Prusa Generic ASA @MK4S 0.8;Prusa Generic ASA MK4S 0.8", + "from": "system", + "setting_id": "a0IXdYic1FVnKaJg", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.8 nozzle" + ], + "fan_max_speed": "15", + "fan_min_speed": "15", + "slow_down_layer_time": "18" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.4.json similarity index 72% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.4.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.4.json index 8055c5926b..033ca2b942 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK4S HF0.4", - "inherits": "Prusa Generic ASA @MK4S", + "name": "Generic ASA @Prusa MK4S HF0.4", + "inherits": "Generic ASA @Prusa MK4S", + "renamed_from": "Prusa Generic ASA @MK4S HF0.4;Prusa Generic ASA MK4S HF0.4", "from": "system", - "setting_id": "na3FnleO5uhDF7Yr", - "filament_id": "Prusament ASA @MK4S HF0.4", + "setting_id": "INXVBsLNAkRQUlPU", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.5.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.5.json new file mode 100644 index 0000000000..fe96876ce6 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.5.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ASA @Prusa MK4S HF0.5", + "inherits": "Generic ASA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ASA @MK4S HF0.5;Prusa Generic ASA MK4S HF0.5", + "from": "system", + "setting_id": "g7VYJJrBS9mmbJOi", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.5 nozzle" + ], + "filament_max_volumetric_speed": [ + "27" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.6.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.6.json new file mode 100644 index 0000000000..56c2ff76e0 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.6.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "name": "Generic ASA @Prusa MK4S HF0.6", + "inherits": "Generic ASA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ASA @MK4S HF0.6;Prusa Generic ASA MK4S HF0.6", + "from": "system", + "setting_id": "yDj1rzyRIOYJM4Pp", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.6 nozzle" + ], + "fan_max_speed": "15", + "fan_min_speed": "15", + "filament_max_volumetric_speed": [ + "34" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.8.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.8.json similarity index 58% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.8.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.8.json index 3c06463b06..be3eeb1fe4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S HF0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK4S HF0.8", - "inherits": "Prusa Generic ASA @MK4S HF0.4", + "name": "Generic ASA @Prusa MK4S HF0.8", + "inherits": "Generic ASA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic ASA @MK4S HF0.8;Prusa Generic ASA MK4S HF0.8", "from": "system", - "setting_id": "VDDgOXq5iphlyQ5U", - "filament_id": "Prusament ASA @MK4S HF0.8", + "setting_id": "HF59RnyQo2wt5act", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S.json index dfc2270174..80ba2d523b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA @MK4S", + "name": "Generic ASA @Prusa MK4S", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA @MK4S;Prusa Generic ASA MK4S", "from": "system", - "setting_id": "5BZ0OsiwFPYGCcBg", - "filament_id": "Prusament ASA @MK4S", + "setting_id": "THc7WYsGi7nwc5wv", + "filament_id": "OFLPAxz3", "instantiation": "true", "close_fan_the_first_x_layers": "4", "compatible_printers": [ diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA.json b/resources/profiles/Prusa/filament/Generic ASA @Prusa.json similarity index 88% rename from resources/profiles/Prusa/filament/Prusa Generic ASA.json rename to resources/profiles/Prusa/filament/Generic ASA @Prusa.json index 85f1d08da6..19d7553977 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA.json +++ b/resources/profiles/Prusa/filament/Generic ASA @Prusa.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA", + "name": "Generic ASA @Prusa", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA", "from": "system", - "setting_id": "i5Zm7qbFAtsgG4mF", + "setting_id": "Uff8hd9OkoS2Yly7", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.6.json similarity index 76% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.6.json index 2f8cb00374..a8806ff0c6 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MINIIS 0.6", - "inherits": "fdm_filament_asa", + "name": "Generic ASA HF @Prusa MINIIS 0.6", + "inherits": "Generic ASA HF @Prusa base", + "renamed_from": "Prusa Generic ASA HF @MINIIS 0.6;Prusa Generic ASA HF MINIIS 0.6", "from": "system", - "setting_id": "uf2mhiPodkiOu8Ui", + "setting_id": "Xswtt3GpBabtxN4h", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.8.json similarity index 76% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.8.json index 2a238156f7..cceae0087a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MINIIS 0.8", - "inherits": "fdm_filament_asa", + "name": "Generic ASA HF @Prusa MINIIS 0.8", + "inherits": "Generic ASA HF @Prusa base", + "renamed_from": "Prusa Generic ASA HF @MINIIS 0.8;Prusa Generic ASA HF MINIIS 0.8", "from": "system", - "setting_id": "GMfOVAhKgKoiGZH5", + "setting_id": "z13Q2CqpzsnazYwI", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS.json index 9f97b95631..4a9bb2b877 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MINIIS", - "inherits": "fdm_filament_asa", + "name": "Generic ASA HF @Prusa MINIIS", + "inherits": "Generic ASA HF @Prusa base", + "renamed_from": "Prusa Generic ASA HF @MINIIS;Prusa Generic ASA HF MINIIS", "from": "system", - "setting_id": "o8mGAPApXYWIvPhm", + "setting_id": "zzMFtHrjmImnj77f", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.6.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.6.json index a2288b5602..e62013867c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MK3.5 0.6", + "name": "Generic ASA HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA HF @MK3.5 0.6;Prusa Generic ASA HF MK3.5 0.6", "from": "system", - "setting_id": "TwgQePxtpUic69Yw", - "filament_id": "GFB98_6", + "setting_id": "lhsnnKDQp3U8enP3", + "filament_id": "OFzRtFM9", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.8.json similarity index 77% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.8.json index 719e8c0d7a..74d0b8a4dc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MK3.5 0.8", + "name": "Generic ASA HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA HF @MK3.5 0.8;Prusa Generic ASA HF MK3.5 0.8", "from": "system", - "setting_id": "TC1QAhU8v7mruXHK", - "filament_id": "GFB98_7", + "setting_id": "Qb9bphdgmmLKHgnC", + "filament_id": "OFzRtFM9", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5.json index c514c44cef..b5675c32a0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic ASA HF @MK3.5", + "name": "Generic ASA HF @Prusa MK3.5", "inherits": "fdm_filament_asa", + "renamed_from": "Prusa Generic ASA HF @MK3.5;Prusa Generic ASA HF MK3.5", "from": "system", - "setting_id": "1s3xgWuvTP6UvMG7", - "filament_id": "GFB98_5", + "setting_id": "C9YvhnKeHonpemK8", + "filament_id": "OFzRtFM9", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic ASA HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa base.json new file mode 100644 index 0000000000..8b6262282d --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic ASA HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic ASA HF @Prusa base", + "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "OFzRtFM9", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic FLEX @XL 5T.json b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic FLEX @XL 5T.json rename to resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json index 467a0e7aad..c0501006d2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic FLEX @XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic FLEX @XL 5T", + "name": "Generic FLEX @Prusa XL 5T", "inherits": "fdm_filament_flex", + "renamed_from": "Prusa Generic FLEX @XL 5T;Prusa Generic FLEX XL 5T", "from": "system", - "setting_id": "PaXKTb31IFVovWiK", + "setting_id": "ef8fSryRYselyr4G", + "filament_id": "OFbPuPKY", "instantiation": "true", "filament_loading_speed_start": "3", "filament_loading_speed": "28", diff --git a/resources/profiles/Prusa/filament/Prusa Generic FLEX @XL.json b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic FLEX @XL.json rename to resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json index c6fd096196..ea56f3a8b5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic FLEX @XL.json +++ b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic FLEX @XL", + "name": "Generic FLEX @Prusa XL", "inherits": "fdm_filament_flex", + "renamed_from": "Prusa Generic FLEX @XL;Prusa Generic FLEX XL", "from": "system", - "setting_id": "b5AA45MlL14moY71", + "setting_id": "qrFWrwgQSXgU7oCb", + "filament_id": "OFbPuPKY", "instantiation": "true", "filament_loading_speed_start": "3", "filament_loading_speed": "28", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.25.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.25.json index 7fdf301829..f887a7caca 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA @MINIIS 0.25", - "inherits": "fdm_filament_pa", + "name": "Generic PA @Prusa MINIIS 0.25", + "inherits": "Generic PA @Prusa base", + "renamed_from": "Prusa Generic PA @MINIIS 0.25;Prusa Generic PA MINIIS 0.25", "from": "system", - "setting_id": "tGSqS5YX8FXkVAKa", + "setting_id": "zONIDmAy6bC6rkBd", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.6.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.6.json index ada7470a27..fce5c4f837 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA @MINIIS 0.6", - "inherits": "fdm_filament_pa", + "name": "Generic PA @Prusa MINIIS 0.6", + "inherits": "Generic PA @Prusa base", + "renamed_from": "Prusa Generic PA @MINIIS 0.6;Prusa Generic PA MINIIS 0.6", "from": "system", - "setting_id": "u3ZeKEiAwme06ioU", + "setting_id": "Ib0bThHzZ0GXWgXv", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.8.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.8.json index f08a354372..35c7df7919 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA @MINIIS 0.8", - "inherits": "fdm_filament_pa", + "name": "Generic PA @Prusa MINIIS 0.8", + "inherits": "Generic PA @Prusa base", + "renamed_from": "Prusa Generic PA @MINIIS 0.8;Prusa Generic PA MINIIS 0.8", "from": "system", - "setting_id": "nE90oPuU8lRFVBCl", + "setting_id": "WSCkyvdqYKalsLHg", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS.json index 1f62ce1a85..67e59c92d9 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA @MINIIS", - "inherits": "fdm_filament_pa", + "name": "Generic PA @Prusa MINIIS", + "inherits": "Generic PA @Prusa base", + "renamed_from": "Prusa Generic PA @MINIIS;Prusa Generic PA MINIIS", "from": "system", - "setting_id": "hda5VGcBTJOFu6B0", + "setting_id": "06VxUw37OfEzaSka", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.25.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.25.json index a7f7c13c96..eebbafe187 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA @MK3.5 0.25", + "name": "Generic PA @Prusa MK3.5 0.25", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA @MK3.5 0.25;Prusa Generic PA MK3.5 0.25", "from": "system", - "setting_id": "4LeqziiUcsZFvsqn", - "filament_id": "GFN99_4", + "setting_id": "htgSl4rIQ1smRBy4", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.6.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.6.json index 4a0860931c..6405d18e56 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA @MK3.5 0.6", + "name": "Generic PA @Prusa MK3.5 0.6", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA @MK3.5 0.6;Prusa Generic PA MK3.5 0.6", "from": "system", - "setting_id": "FoUTZTxQNZRSUZqi", - "filament_id": "GFN99_2", + "setting_id": "LPzPJN0XdHVQDEsd", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.8.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.8.json index ef6a9174fb..d85d70d810 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA @MK3.5 0.8", + "name": "Generic PA @Prusa MK3.5 0.8", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA @MK3.5 0.8;Prusa Generic PA MK3.5 0.8", "from": "system", - "setting_id": "7Qe2dHRqSOhsuoPn", - "filament_id": "GFN99_3", + "setting_id": "WiO6dm6LbzJxOC9j", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5.json b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5.json similarity index 70% rename from resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5.json index db9b97feff..f3309fd275 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA @MK3.5", + "name": "Generic PA @Prusa MK3.5", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA @MK3.5;Prusa Generic PA MK3.5", "from": "system", - "setting_id": "HIOtwj2ImWrlXkld", - "filament_id": "GFN99_1", + "setting_id": "YfGmmjqpxHcDcRsk", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PA @Prusa base.json b/resources/profiles/Prusa/filament/Generic PA @Prusa base.json new file mode 100644 index 0000000000..c74dce0514 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PA @Prusa base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "OFg8ndtj", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA.json b/resources/profiles/Prusa/filament/Generic PA @Prusa.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PA.json rename to resources/profiles/Prusa/filament/Generic PA @Prusa.json index 9893d5a390..1ebaec2fe2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA.json +++ b/resources/profiles/Prusa/filament/Generic PA @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA", - "inherits": "fdm_filament_pa", + "name": "Generic PA @Prusa", + "inherits": "Generic PA @Prusa base", + "renamed_from": "Prusa Generic PA", "from": "system", - "setting_id": "lWO6oNoV0wjzRVja", + "setting_id": "zTnz1NYXoXxIHhRv", "instantiation": "true", "nozzle_temperature_initial_layer": [ "280" @@ -26,10 +27,6 @@ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", "Prusa MK4 0.6 nozzle", - "Prusa MK4 0.8 nozzle", - "Prusa MINIIS 0.4 nozzle", - "Prusa MINIIS 0.25 nozzle", - "Prusa MINIIS 0.6 nozzle", - "Prusa MINIIS 0.8 nozzle" + "Prusa MK4 0.8 nozzle" ] } diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.25.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.25.json index c262a5fe97..85ae694018 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MINIIS 0.25", - "inherits": "fdm_filament_pa", + "name": "Generic PA-CF @Prusa MINIIS 0.25", + "inherits": "Generic PA-CF @Prusa base", + "renamed_from": "Prusa Generic PA-CF @MINIIS 0.25;Prusa Generic PA-CF MINIIS 0.25", "from": "system", - "setting_id": "R9H0mIGTEh4rxRag", + "setting_id": "5OyMl43GFDPQHrx3", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.6.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.6.json index 61047938ef..e986346eee 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MINIIS 0.6", - "inherits": "fdm_filament_pa", + "name": "Generic PA-CF @Prusa MINIIS 0.6", + "inherits": "Generic PA-CF @Prusa base", + "renamed_from": "Prusa Generic PA-CF @MINIIS 0.6;Prusa Generic PA-CF MINIIS 0.6", "from": "system", - "setting_id": "qy8b2cQmrhmxfUfm", + "setting_id": "lvYPxwHzVnW29IKZ", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.8.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.8.json index e38f123038..1e3dd13b49 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MINIIS 0.8", - "inherits": "fdm_filament_pa", + "name": "Generic PA-CF @Prusa MINIIS 0.8", + "inherits": "Generic PA-CF @Prusa base", + "renamed_from": "Prusa Generic PA-CF @MINIIS 0.8;Prusa Generic PA-CF MINIIS 0.8", "from": "system", - "setting_id": "PNdZVpjyekMxgAWx", + "setting_id": "LlGpiQAvrrd5bMCs", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS.json index a41ec893e7..6c59be3227 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MINIIS", - "inherits": "fdm_filament_pa", + "name": "Generic PA-CF @Prusa MINIIS", + "inherits": "Generic PA-CF @Prusa base", + "renamed_from": "Prusa Generic PA-CF @MINIIS;Prusa Generic PA-CF MINIIS", "from": "system", - "setting_id": "B2SFfVrYjPnN9rw3", + "setting_id": "AfQLoOulI6zwAZDg", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.25.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.25.json index db39929ab4..8f0622e2cc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MK3.5 0.25", + "name": "Generic PA-CF @Prusa MK3.5 0.25", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA-CF @MK3.5 0.25;Prusa Generic PA-CF MK3.5 0.25", "from": "system", - "setting_id": "BjLde5wICEYFSlu1", - "filament_id": "GFN98_4", + "setting_id": "15pNQLVuXkSI3zjU", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.6.json similarity index 70% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.6.json index 0607f4afe2..bb6fc654ad 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MK3.5 0.6", + "name": "Generic PA-CF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA-CF @MK3.5 0.6;Prusa Generic PA-CF MK3.5 0.6", "from": "system", - "setting_id": "XgIsgzltjlTU8ixC", - "filament_id": "GFN98_2", + "setting_id": "3ZKi2gcV6LgJwidS", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.8.json similarity index 70% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.8.json index 3d04097b7d..2ad7d45932 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MK3.5 0.8", + "name": "Generic PA-CF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA-CF @MK3.5 0.8;Prusa Generic PA-CF MK3.5 0.8", "from": "system", - "setting_id": "b2fjpGuYwbeo7O9K", - "filament_id": "GFN98_3", + "setting_id": "Ilehw0Za73eW1Z9v", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5.json similarity index 71% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5.json index bf54572e72..4150a3f625 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PA-CF @MK3.5", + "name": "Generic PA-CF @Prusa MK3.5", "inherits": "fdm_filament_pa", + "renamed_from": "Prusa Generic PA-CF @MK3.5;Prusa Generic PA-CF MK3.5", "from": "system", - "setting_id": "ko8pHTrnZTzz6LyX", - "filament_id": "GFN98_1", + "setting_id": "yy2FgYPLARliAAmZ", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Prusa/filament/Generic PA-CF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa base.json new file mode 100644 index 0000000000..1e5c1936d4 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PA-CF @Prusa base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "OFQLcbps", + "instantiation": "false", + "filament_type": [ + "PA-CF" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa.json similarity index 70% rename from resources/profiles/Prusa/filament/Prusa Generic PA-CF.json rename to resources/profiles/Prusa/filament/Generic PA-CF @Prusa.json index 5144b143d6..f60463913f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json +++ b/resources/profiles/Prusa/filament/Generic PA-CF @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PA-CF", - "inherits": "fdm_filament_pa", + "name": "Generic PA-CF @Prusa", + "inherits": "Generic PA-CF @Prusa base", + "renamed_from": "Prusa Generic PA-CF", "from": "system", - "setting_id": "bptwthfCtglFSoMw", + "setting_id": "R2WthJ8gqw8xdajn", "instantiation": "true", "filament_type": [ "PA-CF" @@ -29,10 +30,6 @@ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", "Prusa MK4 0.6 nozzle", - "Prusa MK4 0.8 nozzle", - "Prusa MINIIS 0.4 nozzle", - "Prusa MINIIS 0.25 nozzle", - "Prusa MINIIS 0.6 nozzle", - "Prusa MINIIS 0.8 nozzle" + "Prusa MK4 0.8 nozzle" ] } diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.25.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.25.json index cb00cb55ac..4c50bdca0c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.25.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MINIIS 0.25", + "name": "Generic PC @Prusa MINIIS 0.25", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MINIIS 0.25;Prusa Generic PC MINIIS 0.25", "from": "system", - "setting_id": "P9dO2M6dPICX7rhQ", + "setting_id": "v5LHPemQZ8fEQJrX", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "7" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.6.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.6.json index f747f7e54f..f6e67d5d5e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.6.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MINIIS 0.6", + "name": "Generic PC @Prusa MINIIS 0.6", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MINIIS 0.6;Prusa Generic PC MINIIS 0.6", "from": "system", - "setting_id": "uAzPBVsMr6eS1XXS", + "setting_id": "MOLOCn9YKfvHMmOu", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "7" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.8.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.8.json index 0a59345eef..ecfa0c6fea 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS 0.8.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MINIIS 0.8", + "name": "Generic PC @Prusa MINIIS 0.8", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MINIIS 0.8;Prusa Generic PC MINIIS 0.8", "from": "system", - "setting_id": "MZd6zhq1pvhDj6yz", + "setting_id": "eJ9SwUbq1VyHBciM", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "7" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS.json index 8cbe33d5b7..088f2be363 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MINIIS.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MINIIS", + "name": "Generic PC @Prusa MINIIS", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MINIIS;Prusa Generic PC MINIIS", "from": "system", - "setting_id": "H7HoG0RfPLMTnCEo", + "setting_id": "2QWF3WdcbA7ArFgt", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "7" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.25.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.25.json index cf1046b78b..dd823e700d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MK3.5 0.25", + "name": "Generic PC @Prusa MK3.5 0.25", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MK3.5 0.25;Prusa Generic PC MK3.5 0.25", "from": "system", - "setting_id": "365PSnHIwQoBabi7", - "filament_id": "GFC99_4", + "setting_id": "MWiCzFnPAeMCWxHz", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.6.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.6.json index 5641ffefea..b33d32e71d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MK3.5 0.6", + "name": "Generic PC @Prusa MK3.5 0.6", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MK3.5 0.6;Prusa Generic PC MK3.5 0.6", "from": "system", - "setting_id": "zullllDHKByF2PMu", - "filament_id": "GFC99_2", + "setting_id": "KEgDSg0oQi1SQlst", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.8.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.8.json index 2118c4dc43..a6fa27ed6d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MK3.5 0.8", + "name": "Generic PC @Prusa MK3.5 0.8", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MK3.5 0.8;Prusa Generic PC MK3.5 0.8", "from": "system", - "setting_id": "TTIxalWBM5b6YTJ0", - "filament_id": "GFC99_3", + "setting_id": "LHNmoFsylIuepyww", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5.json b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5.json index 06d150cddc..1891e65703 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC @MK3.5", + "name": "Generic PC @Prusa MK3.5", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC @MK3.5;Prusa Generic PC MK3.5", "from": "system", - "setting_id": "2h9EbPiUgE3BIHVb", - "filament_id": "GFC99_1", + "setting_id": "awF5u8ojSKhvSYud", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC.json b/resources/profiles/Prusa/filament/Generic PC @Prusa.json similarity index 85% rename from resources/profiles/Prusa/filament/Prusa Generic PC.json rename to resources/profiles/Prusa/filament/Generic PC @Prusa.json index 3cb8ec5c0d..59b97e22e5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC.json +++ b/resources/profiles/Prusa/filament/Generic PC @Prusa.json @@ -1,9 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC", + "name": "Generic PC @Prusa", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC", "from": "system", - "setting_id": "51vavWbGjxnBwH7e", + "setting_id": "UJ5KpqIb5mpcNXzl", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.6.json similarity index 58% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.6.json index bc82e730f2..dbd6cb209f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MINIIS 0.6", - "inherits": "fdm_filament_pc", + "name": "Generic PC HF @Prusa MINIIS 0.6", + "inherits": "Generic PC HF @Prusa base", + "renamed_from": "Prusa Generic PC HF @MINIIS 0.6;Prusa Generic PC HF MINIIS 0.6", "from": "system", - "setting_id": "oj7iq8Bsz8lYyoG8", + "setting_id": "W3G94E0IQo6Kaq8G", "instantiation": "true", "filament_max_volumetric_speed": [ "35" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.8.json similarity index 58% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.8.json index d864903081..53bc9b96bd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MINIIS 0.8", - "inherits": "fdm_filament_pc", + "name": "Generic PC HF @Prusa MINIIS 0.8", + "inherits": "Generic PC HF @Prusa base", + "renamed_from": "Prusa Generic PC HF @MINIIS 0.8;Prusa Generic PC HF MINIIS 0.8", "from": "system", - "setting_id": "SK8h5tE5di3YWaJp", + "setting_id": "Fjwchj1gB62f7CUF", "instantiation": "true", "filament_max_volumetric_speed": [ "29" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS.json similarity index 59% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS.json index 96720cc606..4d0785504f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MINIIS", - "inherits": "fdm_filament_pc", + "name": "Generic PC HF @Prusa MINIIS", + "inherits": "Generic PC HF @Prusa base", + "renamed_from": "Prusa Generic PC HF @MINIIS;Prusa Generic PC HF MINIIS", "from": "system", - "setting_id": "onMXXnQNjbSimzbW", + "setting_id": "Wodqshgvx38zWaE2", "instantiation": "true", "filament_max_volumetric_speed": [ "24" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.6.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.6.json index abcfde31e4..cb2ad5f37c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MK3.5 0.6", + "name": "Generic PC HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC HF @MK3.5 0.6;Prusa Generic PC HF MK3.5 0.6", "from": "system", - "setting_id": "MAtF0WCx6uLte1Bq", - "filament_id": "GFC99_5", + "setting_id": "Rm7U967jnpk74lPA", + "filament_id": "OFwwAQnA", "instantiation": "true", "filament_max_volumetric_speed": [ "30" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.8.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.8.json index d10c44bebe..0f684bcca8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MK3.5 0.8", + "name": "Generic PC HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC HF @MK3.5 0.8;Prusa Generic PC HF MK3.5 0.8", "from": "system", - "setting_id": "Om8P3dn8wY6CbdQg", - "filament_id": "GFC99_6", + "setting_id": "zFkWWW3PTBvuUWqs", + "filament_id": "OFwwAQnA", "instantiation": "true", "filament_max_volumetric_speed": [ "36" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5.json index 6e6c9f3747..aa007446ce 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PC HF @MK3.5", + "name": "Generic PC HF @Prusa MK3.5", "inherits": "fdm_filament_pc", + "renamed_from": "Prusa Generic PC HF @MK3.5;Prusa Generic PC HF MK3.5", "from": "system", - "setting_id": "uGi7QoODY99zHuCt", - "filament_id": "GFC99_4", + "setting_id": "lvbcRP0xEru9jmms", + "filament_id": "OFwwAQnA", "instantiation": "true", "filament_max_volumetric_speed": [ "24" diff --git a/resources/profiles/Prusa/filament/Generic PC HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PC HF @Prusa base.json new file mode 100644 index 0000000000..131b45ea55 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PC HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PC HF @Prusa base", + "inherits": "fdm_filament_pc", + "from": "system", + "filament_id": "OFwwAQnA", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.6.json similarity index 51% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.6.json index 6e1ac6e621..a2f899e88f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One 0.6", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One 0.6", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One 0.6;Prusa Generic PETG CORE One 0.6", "from": "system", - "setting_id": "plb6gY1isTp10Unr", - "filament_id": "Prusa Generic PETG @CORE One 0.6", + "setting_id": "oPWpCDB3p6hQeY2F", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.8.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.8.json index 7d19ded509..669cf219fc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One 0.8", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One 0.8", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One 0.8;Prusa Generic PETG CORE One 0.8", "from": "system", - "setting_id": "WISyN9WbqoZW5bBy", - "filament_id": "Prusa Generic PETG @CORE One 0.8", + "setting_id": "OmaayFCLuRLadur0", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.4.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.4.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.4.json index cb0eb3fb5b..6c9ff68c89 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One HF 0.4", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One HF 0.4", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One HF 0.4;Prusa Generic PETG CORE One HF 0.4", "from": "system", - "setting_id": "hMxEpxx9ERuIq28Z", - "filament_id": "Prusa Generic PETG @CORE One HF 0.4", + "setting_id": "7oUyjvRHLH4bJyX0", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.5.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.5.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.5.json index 53e681186f..8784e403ab 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One HF 0.5", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One HF 0.5", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One HF 0.5;Prusa Generic PETG CORE One HF 0.5", "from": "system", - "setting_id": "HtW04UsVx5VpeLc9", - "filament_id": "Prusa Generic PETG @CORE One HF 0.5", + "setting_id": "6HiIOGURZWwman1l", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.6.json similarity index 73% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.6.json index a6a2b9fc55..c0eb6a594f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One HF 0.6", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One HF 0.6", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One HF 0.6;Prusa Generic PETG CORE One HF 0.6", "from": "system", - "setting_id": "29TFTfss7xVear5j", - "filament_id": "Prusa Generic PETG @CORE One HF 0.6", + "setting_id": "KKiug7A9NOQPe1m7", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.8.json similarity index 78% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.8.json index 05b926349b..99748978bf 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One HF 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One HF 0.8", - "inherits": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One HF 0.8", + "inherits": "Generic PETG @Prusa CORE One", + "renamed_from": "Prusa Generic PETG @CORE One HF 0.8;Prusa Generic PETG CORE One HF 0.8", "from": "system", - "setting_id": "N91ct2U3Y3jOat0g", - "filament_id": "Prusa Generic PETG @CORE One HF 0.8", + "setting_id": "vtiAC44hrmtap0Ou", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One.json similarity index 92% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One.json index 3e914c0ab9..a086fb9336 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @CORE One", + "name": "Generic PETG @Prusa CORE One", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @CORE One;Prusa Generic PETG CORE One", "from": "system", - "setting_id": "VbFWb2QCAMxcrTAW", - "filament_id": "Prusa Generic PETG @CORE One", + "setting_id": "W71PW5bpf7CV16D4", + "filament_id": "OFYPdQJh", "instantiation": "true", "chamber_temperature": [ "35" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.25.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.25.json index b804e798b1..282048f6a3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @MINIIS 0.25", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa MINIIS 0.25", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @MINIIS 0.25;Prusa Generic PETG MINIIS 0.25", "from": "system", - "setting_id": "u4zA4rasW1vfwG1o", + "setting_id": "lKegAyiWytPNEXH0", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.6.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.6.json index 8d4d00ea99..40f6d0c685 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @MINIIS 0.6", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa MINIIS 0.6", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @MINIIS 0.6;Prusa Generic PETG MINIIS 0.6", "from": "system", - "setting_id": "QJQIAwmRSZW3hNI4", + "setting_id": "7QT1EXl4qKoNBuqz", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.8.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.8.json index 81c4d41aaf..a578482dc0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @MINIIS 0.8", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa MINIIS 0.8", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @MINIIS 0.8;Prusa Generic PETG MINIIS 0.8", "from": "system", - "setting_id": "nXFZVAKBc3hkxbRt", + "setting_id": "zl2HOUtcoIR2dFQH", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS.json similarity index 85% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS.json index 8df215da56..5a135dfd2d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MINIIS", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa MINIIS", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @MINIIS;Prusa Generic PETG MINIIS", "from": "system", - "setting_id": "SHIhEzb8wJonmulf", + "setting_id": "COQ9qpnYRGAFRBoq", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -48,7 +49,7 @@ "85" ], "filament_max_volumetric_speed": [ - "24" + "9" ], "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.25.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.25.json index eccfa418a9..e338514096 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK3.5 0.25", + "name": "Generic PETG @Prusa MK3.5 0.25", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @MK3.5 0.25;Prusa Generic PETG MK3.5 0.25", "from": "system", - "setting_id": "g5YTLp0ZhzbpCD2h", - "filament_id": "GFG99_5", + "setting_id": "M0vmzxmP3IVIUTuv", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.6.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.6.json index beacc12d5f..d57e0fdb3f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK3.5 0.6", + "name": "Generic PETG @Prusa MK3.5 0.6", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @MK3.5 0.6;Prusa Generic PETG MK3.5 0.6", "from": "system", - "setting_id": "6FATkctkE3RaWnWQ", - "filament_id": "GFG99_3", + "setting_id": "OvkhxGhjjRMjwb4C", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.8.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.8.json index b543c2ffcf..59e45d94f6 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK3.5 0.8", + "name": "Generic PETG @Prusa MK3.5 0.8", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @MK3.5 0.8;Prusa Generic PETG MK3.5 0.8", "from": "system", - "setting_id": "ITT0YpAms3lzeSBk", - "filament_id": "GFG99_4", + "setting_id": "kZSlkCTdghAi8LFG", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5.json index e52a1b8628..7d63599c7a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK3.5", + "name": "Generic PETG @Prusa MK3.5", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @MK3.5;Prusa Generic PETG MK3.5", "from": "system", - "setting_id": "71gokqKp7e6fhhf4", - "filament_id": "GFG99_2", + "setting_id": "6PUbXHNUBfWjVvse", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4.json similarity index 89% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4.json index b0e684dd68..68f627daa4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa MK4", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @MK4;Prusa Generic PETG MK4", "from": "system", - "setting_id": "Xk2dCGMzSaT73Gq5", + "setting_id": "ieo6hcpwnV0j76eo", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.6.json similarity index 54% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.6.json index 88d4bb1a2f..ddfbb665be 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S 0.6", - "inherits": "Prusa Generic PETG @MK4S", + "name": "Generic PETG @Prusa MK4S 0.6", + "inherits": "Generic PETG @Prusa MK4S", + "renamed_from": "Prusa Generic PETG @MK4S 0.6;Prusa Generic PETG MK4S 0.6", "from": "system", - "setting_id": "Pci5FyYkl7E87APR", - "filament_id": "Generic PETG @MK4S 0.6", + "setting_id": "z5Ys1AU5ujQF9D5U", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.8.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.8.json index 358eac5276..8e8fee1973 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S 0.8", - "inherits": "Prusa Generic PETG @MK4S", + "name": "Generic PETG @Prusa MK4S 0.8", + "inherits": "Generic PETG @Prusa MK4S", + "renamed_from": "Prusa Generic PETG @MK4S 0.8;Prusa Generic PETG MK4S 0.8", "from": "system", - "setting_id": "gBfDSTXrnY1HRyw7", - "filament_id": "Generic PETG @MK4S 0.8", + "setting_id": "LKUzA7cbyYL6kxar", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.4.json similarity index 76% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.4.json index efbf8db0c7..ebbdb73717 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S HF0.4", - "inherits": "Prusa Generic PETG @MK4S", + "name": "Generic PETG @Prusa MK4S HF0.4", + "inherits": "Generic PETG @Prusa MK4S", + "renamed_from": "Prusa Generic PETG @MK4S HF0.4;Prusa Generic PETG MK4S HF0.4", "from": "system", - "setting_id": "4pbIJVV1D2h5O3WZ", - "filament_id": "Generic PETG @MK4S HF0.4", + "setting_id": "lLapCyweW6Svj7cV", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.5.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.5.json new file mode 100644 index 0000000000..e424f13c82 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.5.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PETG @Prusa MK4S HF0.5", + "inherits": "Generic PETG @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PETG @MK4S HF0.5;Prusa Generic PETG MK4S HF0.5", + "from": "system", + "setting_id": "lu9twhsjDkBT1kyn", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S HF0.5 nozzle" + ], + "filament_max_volumetric_speed": [ + "29" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.6.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.6.json similarity index 59% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.6.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.6.json index 56e0d1b40d..c0d46b3ca1 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S HF0.6", - "inherits": "Prusa Generic PETG @MK4S HF0.4", + "name": "Generic PETG @Prusa MK4S HF0.6", + "inherits": "Generic PETG @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PETG @MK4S HF0.6;Prusa Generic PETG MK4S HF0.6", "from": "system", - "setting_id": "tv7OUJ7pSPHTkE89", - "filament_id": "Generic PETG @MK4S HF0.6", + "setting_id": "d7ocKzA4YSAit63Z", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.8.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.8.json similarity index 61% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.8.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.8.json index 21b47aca86..237c3f116a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S HF0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S HF0.8", - "inherits": "Prusa Generic PETG @MK4S HF0.4", + "name": "Generic PETG @Prusa MK4S HF0.8", + "inherits": "Generic PETG @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PETG @MK4S HF0.8;Prusa Generic PETG MK4S HF0.8", "from": "system", - "setting_id": "wHfH0a2TgTYr9rWF", - "filament_id": "Generic PETG @MK4S HF0.8", + "setting_id": "HSBSswxwznxDClK5", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S.json similarity index 92% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S.json index b807315eff..b7bbc6094e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG @MK4S", + "name": "Generic PETG @Prusa MK4S", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG @MK4S;Prusa Generic PETG MK4S", "from": "system", - "setting_id": "IGfvc0jGdG6evRj8", - "filament_id": "Generic PETG @MK4S", + "setting_id": "t3ZCKWVct5d69cb8", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.25 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json index 3a90f36035..9f70295142 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @XL 5T", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa XL 5T", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @XL 5T;Prusa Generic PETG XL 5T", "from": "system", - "setting_id": "FbtB9og6yXm2ZktD", + "setting_id": "DNJECSjW6zKYALxE", "instantiation": "true", "nozzle_temperature_intial_layer": "230", "nozzle_temperature": "240", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json index 14cb0f610b..0cdcbfc1c4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @XL", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa XL", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG @XL;Prusa Generic PETG XL", "from": "system", - "setting_id": "SQKcHBt6A4D8PwFZ", + "setting_id": "8vcNv4b4H7aYA01G", "instantiation": "true", "nozzle_temperature_intial_layer": "230", "nozzle_temperature": "240", diff --git a/resources/profiles/Prusa/filament/Generic PETG @Prusa base.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa base.json new file mode 100644 index 0000000000..c5b0abf34f --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PETG @Prusa base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "OFYPdQJh", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PETG.json rename to resources/profiles/Prusa/filament/Generic PETG @Prusa.json index 6963412e1c..6881507204 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG", - "inherits": "fdm_filament_pet", + "name": "Generic PETG @Prusa", + "inherits": "Generic PETG @Prusa base", + "renamed_from": "Prusa Generic PETG", "from": "system", - "setting_id": "b55Rd5kKGP1A3BM2", + "setting_id": "Vwc0owmwoEYrLhuU", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.6.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.6.json index 03675e06e7..e8de400490 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MINIIS 0.6", - "inherits": "fdm_filament_pet", + "name": "Generic PETG HF @Prusa MINIIS 0.6", + "inherits": "Generic PETG HF @Prusa base", + "renamed_from": "Prusa Generic PETG HF @MINIIS 0.6;Prusa Generic PETG HF MINIIS 0.6", "from": "system", - "setting_id": "tt7C6k90F51Q17NL", + "setting_id": "nF8YzRMvaT4D8LBD", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.8.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.8.json index 86b9431c5f..adc5401268 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MINIIS 0.8", - "inherits": "fdm_filament_pet", + "name": "Generic PETG HF @Prusa MINIIS 0.8", + "inherits": "Generic PETG HF @Prusa base", + "renamed_from": "Prusa Generic PETG HF @MINIIS 0.8;Prusa Generic PETG HF MINIIS 0.8", "from": "system", - "setting_id": "hivI3u5bpGKEJuPR", + "setting_id": "7itUjrAu9Oj9hxiU", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS.json index 8803f3e7fd..9148f5e849 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PETG @MINIIS", - "inherits": "fdm_filament_pet", + "name": "Generic PETG HF @Prusa MINIIS", + "inherits": "Generic PETG HF @Prusa base", + "renamed_from": "Prusa Generic PETG HF @MINIIS;Prusa Generic PETG HF MINIIS", "from": "system", - "setting_id": "nXB864FJ4Dbz5oXc", + "setting_id": "dPNOryBcrviemefo", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -48,7 +49,7 @@ "85" ], "filament_max_volumetric_speed": [ - "9" + "24" ], "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.6.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.6.json index 7459bccd56..71481537b1 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MK3.5 0.6", + "name": "Generic PETG HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG HF @MK3.5 0.6;Prusa Generic PETG HF MK3.5 0.6", "from": "system", - "setting_id": "Hw54qxSSdBrcOr4r", - "filament_id": "GFG99_6", + "setting_id": "YqVidH7m1HXR3hHZ", + "filament_id": "OF7lOgYF", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.8.json similarity index 81% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.8.json index 36582d0481..5dffe82d0b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MK3.5 0.8", + "name": "Generic PETG HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG HF @MK3.5 0.8;Prusa Generic PETG HF MK3.5 0.8", "from": "system", - "setting_id": "txhzOPQmzVqkcdnP", - "filament_id": "GFG99_7", + "setting_id": "vfR067tK5WsrE4pw", + "filament_id": "OF7lOgYF", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5.json index 6cd401b6c6..e343519efd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PETG HF @MK3.5", + "name": "Generic PETG HF @Prusa MK3.5", "inherits": "fdm_filament_pet", + "renamed_from": "Prusa Generic PETG HF @MK3.5;Prusa Generic PETG HF MK3.5", "from": "system", - "setting_id": "OjIQqC3uJdpcLqlG", - "filament_id": "GFG99_5", + "setting_id": "grvZIUU79fxDOa3O", + "filament_id": "OF7lOgYF", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PETG HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa base.json new file mode 100644 index 0000000000..c15595a97c --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PETG HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PETG HF @Prusa base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "OF7lOgYF", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.6.json new file mode 100644 index 0000000000..2e2f9275d4 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.6.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Generic PLA @Prusa CORE One 0.6", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One 0.6;Prusa Generic PLA CORE One 0.6", + "from": "system", + "setting_id": "IkmLxDwrdRkacHWw", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "compatible_printers": [ + "Prusa CORE One 0.6 nozzle" + ], + "nozzle_temperature": [ + "210" + ], + "slow_down_layer_time": [ + "15" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.8.json similarity index 51% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.8.json index a10f1da37a..cfe88119de 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One 0.8", - "inherits": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One 0.8", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One 0.8;Prusa Generic PLA CORE One 0.8", "from": "system", - "setting_id": "qlG6J2sXs80HpkCl", - "filament_id": "Prusa Generic PLA @CORE One 0.8", + "setting_id": "aBengWdqRXg9i2sx", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.4.json similarity index 73% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.4.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.4.json index 19b8d0c4df..c0969904c7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One HF 0.4", - "inherits": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One HF 0.4", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One HF 0.4;Prusa Generic PLA CORE One HF 0.4", "from": "system", - "setting_id": "KzpBU6cAAqm7z0Sg", - "filament_id": "Prusa Generic PLA @CORE One HF 0.4", + "setting_id": "vniEPaoyABoAfLFa", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.5.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.5.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.5.json index 786bf2adab..5d6e9fcba2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One HF 0.5", - "inherits": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One HF 0.5", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One HF 0.5;Prusa Generic PLA CORE One HF 0.5", "from": "system", - "setting_id": "2G99enCGyOVjrOlt", - "filament_id": "Prusa Generic PLA @CORE One HF 0.5", + "setting_id": "NPEs4gtBlKWupYZX", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.6.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.6.json index e325a17ac0..6575aebf8d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One HF 0.6", - "inherits": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One HF 0.6", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One HF 0.6;Prusa Generic PLA CORE One HF 0.6", "from": "system", - "setting_id": "iNQhrPrIj4GphWxI", - "filament_id": "Prusa Generic PLA @CORE One HF 0.6", + "setting_id": "SnfULjrWGCiA7ljq", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.8.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.8.json index cb895cd542..64471ba72b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One HF 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One HF 0.8", - "inherits": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One HF 0.8", + "inherits": "Generic PLA @Prusa CORE One", + "renamed_from": "Prusa Generic PLA @CORE One HF 0.8;Prusa Generic PLA CORE One HF 0.8", "from": "system", - "setting_id": "YIm5w8btcXZqnNFB", - "filament_id": "Prusa Generic PLA @CORE One HF 0.8", + "setting_id": "ZsIuxJUaBzoeWPDv", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One.json similarity index 92% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One.json index faaa585e91..9bc9e086b0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @CORE One", + "name": "Generic PLA @Prusa CORE One", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @CORE One;Prusa Generic PLA CORE One", "from": "system", - "setting_id": "NDBqFGNNvKxlmo3V", - "filament_id": "Prusa Generic PLA @CORE One", + "setting_id": "r2i4c7DsYXYIMVCX", + "filament_id": "OFDSrzZ8", "instantiation": "true", "chamber_temperature": [ "20" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.25.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.25.json index 67a5bbca62..3682a6fcb0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @MINIIS 0.25", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa MINIIS 0.25", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @MINIIS 0.25;Prusa Generic PLA MINIIS 0.25", "from": "system", - "setting_id": "GOomDjqbF1CGAy8O", + "setting_id": "t7jm6WSfRqsdSZfz", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.6.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.6.json index 7bb32fd4d9..ae982f46bc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @MINIIS 0.6", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa MINIIS 0.6", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @MINIIS 0.6;Prusa Generic PLA MINIIS 0.6", "from": "system", - "setting_id": "rKRRhdLk0Heg3slz", + "setting_id": "hWk01xYl6gu41B4w", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.8.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.8.json index 96016b318a..8a5897d741 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @MINIIS 0.8", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa MINIIS 0.8", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @MINIIS 0.8;Prusa Generic PLA MINIIS 0.8", "from": "system", - "setting_id": "XC2NBSQXjiKIXnTi", + "setting_id": "6A9NivZl5nMpNfsz", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS.json index 2de81c0947..cf2adda390 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @MINIIS", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa MINIIS", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @MINIIS;Prusa Generic PLA MINIIS", "from": "system", - "setting_id": "GUG6Ug0cZt0gs2Z2", + "setting_id": "3bPlO5U5udlu8eVv", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.25.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.25.json index ade1148e1d..b3f84dc4e1 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK3.5 0.25", + "name": "Generic PLA @Prusa MK3.5 0.25", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @MK3.5 0.25;Prusa Generic PLA MK3.5 0.25", "from": "system", - "setting_id": "mQtIWbOJ2a4TMYxU", - "filament_id": "GFL99_5", + "setting_id": "IJsZsvdG7N8uwobX", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.6.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.6.json index 6b4a104bd0..49d75d5e31 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK3.5 0.6", + "name": "Generic PLA @Prusa MK3.5 0.6", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @MK3.5 0.6;Prusa Generic PLA MK3.5 0.6", "from": "system", - "setting_id": "lSbYoT83cp2tQjk3", - "filament_id": "GFL99_3", + "setting_id": "YLx95teMRy5UQWKN", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.8.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.8.json index 13853813fb..6590e43c17 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK3.5 0.8", + "name": "Generic PLA @Prusa MK3.5 0.8", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @MK3.5 0.8;Prusa Generic PLA MK3.5 0.8", "from": "system", - "setting_id": "kZuzkEvYEluqlAfM", - "filament_id": "GFL99_4", + "setting_id": "bZ42VSqIaJlri1VH", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5.json index c1d96ae9ed..058e05e99e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK3.5", + "name": "Generic PLA @Prusa MK3.5", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @MK3.5;Prusa Generic PLA MK3.5", "from": "system", - "setting_id": "ojwcK3bKU2Jyosws", - "filament_id": "GFL99_2", + "setting_id": "5tDjTVPzE0lIEReK", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4.json similarity index 87% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4.json index 13a0df5f2b..e7cc5df0d8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa MK4", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @MK4;Prusa Generic PLA MK4", "from": "system", - "setting_id": "1aLBPgVpr7XZmmX6", + "setting_id": "cBqjSJcxcXvS8sY0", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.6.json similarity index 50% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.6.json index b8cffb4b74..bcc0847385 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S 0.6", - "inherits": "Prusa Generic PLA @MK4S", + "name": "Generic PLA @Prusa MK4S 0.6", + "inherits": "Generic PLA @Prusa MK4S", + "renamed_from": "Prusa Generic PLA @MK4S 0.6;Prusa Generic PLA MK4S 0.6", "from": "system", - "setting_id": "6pZohvVY1eUGi2k8", - "filament_id": "Generic PLA @MK4S 0.6", + "setting_id": "vLeTzdoXExkeNSdX", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.8.json similarity index 57% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.8.json index d7bf8889ea..e574ce49a5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S 0.8", - "inherits": "Prusa Generic PLA @MK4S", + "name": "Generic PLA @Prusa MK4S 0.8", + "inherits": "Generic PLA @Prusa MK4S", + "renamed_from": "Prusa Generic PLA @MK4S 0.8;Prusa Generic PLA MK4S 0.8", "from": "system", - "setting_id": "8z66T4ABcY8PLJMB", - "filament_id": "Generic PLA @MK4S 0.8", + "setting_id": "6fyFsevbPLYfgZRb", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.4.json similarity index 75% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.4.json index d9485b0a57..10e37500a8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.4.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S HF0.4", - "inherits": "Prusa Generic PLA @MK4S", + "name": "Generic PLA @Prusa MK4S HF0.4", + "inherits": "Generic PLA @Prusa MK4S", + "renamed_from": "Prusa Generic PLA @MK4S HF0.4;Prusa Generic PLA MK4S HF0.4", "from": "system", - "setting_id": "LV8qQ1t2CmhHaRSA", - "filament_id": "Generic PLA @MK4S HF0.4", + "setting_id": "BFvt90DhCobphEF9", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.5.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.5.json similarity index 50% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.5.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.5.json index 7cc2615b2b..ec1efb5aad 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.5.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S HF0.5", - "inherits": "Prusa Generic PLA @MK4S HF0.4", + "name": "Generic PLA @Prusa MK4S HF0.5", + "inherits": "Generic PLA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PLA @MK4S HF0.5;Prusa Generic PLA MK4S HF0.5", "from": "system", - "setting_id": "WH3bJGQGSliMx6ta", - "filament_id": "Generic PLA @MK4S HF0.5", + "setting_id": "IDv2UUR8EH7AVUIA", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.6.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.6.json similarity index 53% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.6.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.6.json index a5f5e8b490..8ce85314dd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S HF0.6", - "inherits": "Prusa Generic PLA @MK4S HF0.4", + "name": "Generic PLA @Prusa MK4S HF0.6", + "inherits": "Generic PLA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PLA @MK4S HF0.6;Prusa Generic PLA MK4S HF0.6", "from": "system", - "setting_id": "du6Gy8TCxk5z7hPx", - "filament_id": "Generic PLA @MK4S HF0.6", + "setting_id": "t7cAPFNPWmeHBeuD", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.8.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.8.json similarity index 55% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.8.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.8.json index f145d7c0d2..968bf56356 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S HF0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S HF0.8", - "inherits": "Prusa Generic PLA @MK4S HF0.4", + "name": "Generic PLA @Prusa MK4S HF0.8", + "inherits": "Generic PLA @Prusa MK4S HF0.4", + "renamed_from": "Prusa Generic PLA @MK4S HF0.8;Prusa Generic PLA MK4S HF0.8", "from": "system", - "setting_id": "aLcAkl8Zt2D5lOTp", - "filament_id": "Generic PLA @MK4S HF0.8", + "setting_id": "t1a58q4l6Xo6kKCC", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S HF0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S.json index e0c8ceedd4..a847cf8334 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA @MK4S", + "name": "Generic PLA @Prusa MK4S", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA @MK4S;Prusa Generic PLA MK4S", "from": "system", - "setting_id": "CqlMmArE8Llbji7t", - "filament_id": "Generic PLA @MK4S", + "setting_id": "lsjHMlvwZzImWgek", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.25 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json index 9264a2b0c1..6dbefec6be 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @XL 5T", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa XL 5T", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @XL 5T;Prusa Generic PLA XL 5T", "from": "system", - "setting_id": "orBUSq1sDBeMGMON", + "setting_id": "wDxtZLt5J2JODMBq", "instantiation": "true", "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "210", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json similarity index 90% rename from resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json index fd1ffa1425..ff8f343b41 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA @XL", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa XL", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA @XL;Prusa Generic PLA XL", "from": "system", - "setting_id": "tGG7egsphB0I1i6Z", + "setting_id": "27u5AiklUhmExsys", "instantiation": "true", "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "210", diff --git a/resources/profiles/Prusa/filament/Generic PLA @Prusa base.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa base.json new file mode 100644 index 0000000000..7246d710ab --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PLA @Prusa base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFDSrzZ8", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa.json similarity index 87% rename from resources/profiles/Prusa/filament/Prusa Generic PLA.json rename to resources/profiles/Prusa/filament/Generic PLA @Prusa.json index ae5ca3e50c..83951fb4ab 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA", - "inherits": "fdm_filament_pla", + "name": "Generic PLA @Prusa", + "inherits": "Generic PLA @Prusa base", + "renamed_from": "Prusa Generic PLA", "from": "system", - "setting_id": "pKHhR3Hx6AUoyIO3", + "setting_id": "SBviEhhXcdsIwj0y", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.6.json similarity index 60% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.6.json index 7ae24d6fe7..56c2e823b0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MINIIS 0.6", - "inherits": "fdm_filament_pla", + "name": "Generic PLA HF @Prusa MINIIS 0.6", + "inherits": "Generic PLA HF @Prusa base", + "renamed_from": "Prusa Generic PLA HF @MINIIS 0.6;Prusa Generic PLA HF MINIIS 0.6", "from": "system", - "setting_id": "A6tgkt5mCN7hFzoU", + "setting_id": "eqBN6ykUB4csEMCR", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.8.json similarity index 60% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.8.json index 10353f147e..be0722c134 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MINIIS 0.8", - "inherits": "fdm_filament_pla", + "name": "Generic PLA HF @Prusa MINIIS 0.8", + "inherits": "Generic PLA HF @Prusa base", + "renamed_from": "Prusa Generic PLA HF @MINIIS 0.8;Prusa Generic PLA HF MINIIS 0.8", "from": "system", - "setting_id": "3MSF1ZEw3D7bVhEI", + "setting_id": "FuCHQFBuP9yLUzT0", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS.json index ea67606d37..656c756e6d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MINIIS", - "inherits": "fdm_filament_pla", + "name": "Generic PLA HF @Prusa MINIIS", + "inherits": "Generic PLA HF @Prusa base", + "renamed_from": "Prusa Generic PLA HF @MINIIS;Prusa Generic PLA HF MINIIS", "from": "system", - "setting_id": "eVuV41lUXe9SEmeh", + "setting_id": "cQJUt7LR5hkKT0Za", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.6.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.6.json index fe7364310d..41dce0b5ed 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MK3.5 0.6", + "name": "Generic PLA HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA HF @MK3.5 0.6;Prusa Generic PLA HF MK3.5 0.6", "from": "system", - "setting_id": "IHOsyOhMvOcpHGtG", - "filament_id": "GFL99_6", + "setting_id": "5vgrugarZSgMZ6FT", + "filament_id": "OFZr862X", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.8.json similarity index 65% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.8.json index 26f2f013e7..b6af02d8fb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MK3.5 0.8", + "name": "Generic PLA HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA HF @MK3.5 0.8;Prusa Generic PLA HF MK3.5 0.8", "from": "system", - "setting_id": "GYne0LPI8ooQJe08", - "filament_id": "GFL99_7", + "setting_id": "CM3EYkpRcWwsw7KB", + "filament_id": "OFZr862X", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5.json index 6d89453bd8..46ed4d0752 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA HF @MK3.5", + "name": "Generic PLA HF @Prusa MK3.5", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA HF @MK3.5;Prusa Generic PLA HF MK3.5", "from": "system", - "setting_id": "Bq51JVrGGEktAqIh", - "filament_id": "GFL99_5", + "setting_id": "4N82rUxi9Bbm2Cdd", + "filament_id": "OFZr862X", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PLA HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa base.json new file mode 100644 index 0000000000..aaf85ff4a7 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PLA HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PLA HF @Prusa base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFZr862X", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.6.json similarity index 52% rename from resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.6.json index 7ec1605d58..aeeba4d5ee 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA Silk @CORE One 0.6", - "inherits": "Prusa Generic PLA Silk @CORE One", + "name": "Generic PLA Silk @Prusa CORE One 0.6", + "inherits": "Generic PLA Silk @Prusa CORE One", + "renamed_from": "Prusa Generic PLA Silk @CORE One 0.6;Prusa Generic PLA Silk CORE One 0.6", "from": "system", - "setting_id": "QUaunbCOoBxA8fyJ", - "filament_id": "Prusa Generic PLA Silk @CORE One 0.6", + "setting_id": "nBWqKjSKw2UEAmkv", + "filament_id": "OFesA6rF", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.8.json new file mode 100644 index 0000000000..82e3840d37 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One 0.8.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Generic PLA Silk @Prusa CORE One 0.8", + "inherits": "Generic PLA Silk @Prusa CORE One", + "renamed_from": "Prusa Generic PLA Silk @CORE One 0.8;Prusa Generic PLA Silk CORE One 0.8", + "from": "system", + "setting_id": "a2KWbhOMQrFTkAZh", + "filament_id": "OFesA6rF", + "instantiation": "true", + "compatible_printers": [ + "Prusa CORE One 0.8 nozzle", + "Prusa CORE One HF 0.8 nozzle" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "17" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One.json similarity index 91% rename from resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One.json rename to resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One.json index 3cdf40ad50..c11965fc72 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA Silk @CORE One", + "name": "Generic PLA Silk @Prusa CORE One", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA Silk @CORE One;Prusa Generic PLA Silk CORE One", "from": "system", - "setting_id": "CYztrVFVOPD3RHJx", - "filament_id": "Prusa Generic PLA Silk @CORE One", + "setting_id": "F9lNHyhZwZi7aD74", + "filament_id": "OFesA6rF", "instantiation": "true", "chamber_temperature": [ "20" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.6.json similarity index 55% rename from resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.6.json index a6597f5edf..82413605dc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA Silk @MK4S 0.6", - "inherits": "Prusa Generic PLA Silk @MK4S", + "name": "Generic PLA Silk @Prusa MK4S 0.6", + "inherits": "Generic PLA Silk @Prusa MK4S", + "renamed_from": "Prusa Generic PLA Silk @MK4S 0.6;Prusa Generic PLA Silk MK4S 0.6", "from": "system", - "setting_id": "e1pUu3Y5pDr7LzNu", - "filament_id": "Generic PLA Silk @MK4S 0.6", + "setting_id": "lWYrhnu1MUizrdOB", + "filament_id": "OFesA6rF", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.8.json similarity index 54% rename from resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.8.json index f9e7154bdf..e94cbdf57a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA Silk @MK4S 0.8", - "inherits": "Prusa Generic PLA Silk @MK4S", + "name": "Generic PLA Silk @Prusa MK4S 0.8", + "inherits": "Generic PLA Silk @Prusa MK4S", + "renamed_from": "Prusa Generic PLA Silk @MK4S 0.8;Prusa Generic PLA Silk MK4S 0.8", "from": "system", - "setting_id": "Yw5uZEeqmR9elIn6", - "filament_id": "Generic PLA Silk @MK4S 0.8", + "setting_id": "cyBdMwJ5sAZcQ7wP", + "filament_id": "OFesA6rF", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S.json b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S.json similarity index 82% rename from resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S.json rename to resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S.json index 1a7cb2de7f..9a3830fd4a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic PLA Silk @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA Silk @MK4S", - "inherits": "Prusa Generic PLA @MK4S", + "name": "Generic PLA Silk @Prusa MK4S", + "inherits": "Generic PLA @Prusa MK4S", + "renamed_from": "Prusa Generic PLA Silk @MK4S;Prusa Generic PLA Silk MK4S", "from": "system", - "setting_id": "ngtF8hwv8cSubcR1", - "filament_id": "Generic PLA Silk @MK4S", + "setting_id": "9VQ1YVv9EZexIUoF", + "filament_id": "OFesA6rF", "instantiation": "true", "compatible_printers": [ "Prusa MK4S 0.25 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.25.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.25.json index 8b41f21ce1..9432c36087 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MINIIS 0.25", - "inherits": "fdm_filament_pla", + "name": "Generic PLA-CF @Prusa MINIIS 0.25", + "inherits": "Generic PLA-CF @Prusa base", + "renamed_from": "Prusa Generic PLA-CF @MINIIS 0.25;Prusa Generic PLA-CF MINIIS 0.25", "from": "system", - "setting_id": "Sv0IcpOJBk95F94d", + "setting_id": "uQJghHEl91slhmEP", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.6.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.6.json index 642ec54a07..7900e25ab2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MINIIS 0.6", - "inherits": "fdm_filament_pla", + "name": "Generic PLA-CF @Prusa MINIIS 0.6", + "inherits": "Generic PLA-CF @Prusa base", + "renamed_from": "Prusa Generic PLA-CF @MINIIS 0.6;Prusa Generic PLA-CF MINIIS 0.6", "from": "system", - "setting_id": "tKAu2YX7WADQuJqv", + "setting_id": "nZEIrx6XaOFsNyHS", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.8.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.8.json index 90be6a1703..97db4345c8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MINIIS 0.8", - "inherits": "fdm_filament_pla", + "name": "Generic PLA-CF @Prusa MINIIS 0.8", + "inherits": "Generic PLA-CF @Prusa base", + "renamed_from": "Prusa Generic PLA-CF @MINIIS 0.8;Prusa Generic PLA-CF MINIIS 0.8", "from": "system", - "setting_id": "dHVVnfZSJ6xEgzdQ", + "setting_id": "A3VUqeRysd3c5Txq", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS.json index 1be8101e9a..4c08a4b23c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MINIIS", - "inherits": "fdm_filament_pla", + "name": "Generic PLA-CF @Prusa MINIIS", + "inherits": "Generic PLA-CF @Prusa base", + "renamed_from": "Prusa Generic PLA-CF @MINIIS;Prusa Generic PLA-CF MINIIS", "from": "system", - "setting_id": "VESr5xWPvPIlhyKh", + "setting_id": "cNZereL1ltFYG5FZ", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.25.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.25.json index 632de6b430..436bf22209 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MK3.5 0.25", + "name": "Generic PLA-CF @Prusa MK3.5 0.25", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA-CF @MK3.5 0.25;Prusa Generic PLA-CF MK3.5 0.25", "from": "system", - "setting_id": "Pi3x8Wj5sdB7TDDK", - "filament_id": "GFL98_5", + "setting_id": "eID2rl5MlHlkerrQ", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.6.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.6.json index ec4bb6ee6a..db1973c5c8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MK3.5 0.6", + "name": "Generic PLA-CF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA-CF @MK3.5 0.6;Prusa Generic PLA-CF MK3.5 0.6", "from": "system", - "setting_id": "vtxoJOj2lc1qxV3H", - "filament_id": "GFL98_3", + "setting_id": "FGXPEP83zLoINOZy", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.8.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.8.json index eb7f730ef5..bfcbcf2dbc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MK3.5 0.8", + "name": "Generic PLA-CF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA-CF @MK3.5 0.8;Prusa Generic PLA-CF MK3.5 0.8", "from": "system", - "setting_id": "9gYj4jTP6y4UmR9s", - "filament_id": "GFL98_4", + "setting_id": "TM5JPaNUTlZTiuCe", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5.json similarity index 68% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5.json index df82e01d98..677bbc0d27 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF @MK3.5", + "name": "Generic PLA-CF @Prusa MK3.5", "inherits": "fdm_filament_pla", + "renamed_from": "Prusa Generic PLA-CF @MK3.5;Prusa Generic PLA-CF MK3.5", "from": "system", - "setting_id": "yQASt4Ej55vgeZAN", - "filament_id": "GFL98_1", + "setting_id": "3qImFrQCon7iUj4c", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa base.json new file mode 100644 index 0000000000..552a9139c5 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PLA-CF @Prusa base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFWbdGsC", + "instantiation": "false", + "filament_type": [ + "PLA-CF" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa.json similarity index 74% rename from resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json rename to resources/profiles/Prusa/filament/Generic PLA-CF @Prusa.json index 8e24ebcd12..c572b9f67c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json +++ b/resources/profiles/Prusa/filament/Generic PLA-CF @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PLA-CF", - "inherits": "fdm_filament_pla", + "name": "Generic PLA-CF @Prusa", + "inherits": "Generic PLA-CF @Prusa base", + "renamed_from": "Prusa Generic PLA-CF", "from": "system", - "setting_id": "NqmFeHNZtfNefmvd", + "setting_id": "LIL5n1PzMoaNoJ84", "instantiation": "true", "filament_flow_ratio": [ "0.95" @@ -32,10 +33,6 @@ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", "Prusa MK4 0.6 nozzle", - "Prusa MK4 0.8 nozzle", - "Prusa MINIIS 0.4 nozzle", - "Prusa MINIIS 0.25 nozzle", - "Prusa MINIIS 0.6 nozzle", - "Prusa MINIIS 0.8 nozzle" + "Prusa MK4 0.8 nozzle" ] } diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.25.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.25.json index 7391c7c004..f74228304a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.25.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA @MINIIS 0.25", - "inherits": "fdm_filament_pva", + "name": "Generic PVA @Prusa MINIIS 0.25", + "inherits": "Generic PVA @Prusa base", + "renamed_from": "Prusa Generic PVA @MINIIS 0.25;Prusa Generic PVA MINIIS 0.25", "from": "system", - "setting_id": "B0Dmo1DvtrwBwM7U", + "setting_id": "2TecWVXOXcxW37EN", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.6.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.6.json index 3bc8a6b7aa..f25c70a70c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MINIIS 0.6", - "inherits": "fdm_filament_pva", + "name": "Generic PVA @Prusa MINIIS 0.6", + "inherits": "Generic PVA @Prusa base", + "renamed_from": "Prusa Generic PVA @MINIIS 0.6;Prusa Generic PVA MINIIS 0.6", "from": "system", - "setting_id": "4C7OAcG8LVPSTJsh", + "setting_id": "3UTClbjiwrQUCXsV", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.8.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.8.json index b26ca248ad..90c4fc2256 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MINIIS 0.8", - "inherits": "fdm_filament_pva", + "name": "Generic PVA @Prusa MINIIS 0.8", + "inherits": "Generic PVA @Prusa base", + "renamed_from": "Prusa Generic PVA @MINIIS 0.8;Prusa Generic PVA MINIIS 0.8", "from": "system", - "setting_id": "xj6xYUYJ0tAnfgao", + "setting_id": "RKxewqskgDD2DQTk", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS.json similarity index 66% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS.json index 9598a6f09b..99014f18a3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA @MINIIS", - "inherits": "fdm_filament_pva", + "name": "Generic PVA @Prusa MINIIS", + "inherits": "Generic PVA @Prusa base", + "renamed_from": "Prusa Generic PVA @MINIIS;Prusa Generic PVA MINIIS", "from": "system", - "setting_id": "rhZNRY8BNI1TskG2", + "setting_id": "XfJmxNhCJiWTWB9i", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.25.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.25.json similarity index 68% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.25.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.25.json index 440310acd7..a13990f6c7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.25.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.25.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA @MK3.5 0.25", + "name": "Generic PVA @Prusa MK3.5 0.25", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA @MK3.5 0.25;Prusa Generic PVA MK3.5 0.25", "from": "system", - "setting_id": "ciRHVEjYNqjT5EsD", - "filament_id": "GFS99_4", + "setting_id": "P9y77rdSQsCFcFwr", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.6.json similarity index 68% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.6.json index 7f54ae1a7a..8854a19282 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA @MK3.5 0.6", + "name": "Generic PVA @Prusa MK3.5 0.6", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA @MK3.5 0.6;Prusa Generic PVA MK3.5 0.6", "from": "system", - "setting_id": "G8TFM51vPvMbGSbX", - "filament_id": "GFS99_2", + "setting_id": "rvSzvHZL6FIiOQV1", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.8.json similarity index 68% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.8.json index 1b6798fd1a..718845dc9a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA @MK3.5 0.8", + "name": "Generic PVA @Prusa MK3.5 0.8", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA @MK3.5 0.8;Prusa Generic PVA MK3.5 0.8", "from": "system", - "setting_id": "hueUgJutZ71scT6F", - "filament_id": "GFS99_3", + "setting_id": "E2sA3y3Cyp0UsQD4", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5.json similarity index 69% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5.json index 9ac04757e7..6e1e1c9381 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA @MK3.5", + "name": "Generic PVA @Prusa MK3.5", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA @MK3.5;Prusa Generic PVA MK3.5", "from": "system", - "setting_id": "yaPlNuxryIpkxiOe", - "filament_id": "GFS99_1", + "setting_id": "UTyXSJox9HVdwfXR", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PVA @Prusa base.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa base.json new file mode 100644 index 0000000000..8f442bc5b0 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PVA @Prusa base", + "inherits": "fdm_filament_pva", + "from": "system", + "filament_id": "OFDvXujf", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA.json b/resources/profiles/Prusa/filament/Generic PVA @Prusa.json similarity index 80% rename from resources/profiles/Prusa/filament/Prusa Generic PVA.json rename to resources/profiles/Prusa/filament/Generic PVA @Prusa.json index 17476b1ce5..3ad6ba8337 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA.json +++ b/resources/profiles/Prusa/filament/Generic PVA @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA", - "inherits": "fdm_filament_pva", + "name": "Generic PVA @Prusa", + "inherits": "Generic PVA @Prusa base", + "renamed_from": "Prusa Generic PVA", "from": "system", - "setting_id": "yLrgUDS7cr4AkOed", + "setting_id": "uVzUlzHkXz6rH1ml", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.6.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.6.json index fadbdc53b2..f4e03d791f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.6.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA @MINIIS 0.6", - "inherits": "fdm_filament_pva", + "name": "Generic PVA HF @Prusa MINIIS 0.6", + "inherits": "Generic PVA HF @Prusa base", + "renamed_from": "Prusa Generic PVA HF @MINIIS 0.6;Prusa Generic PVA HF MINIIS 0.6", "from": "system", - "setting_id": "yGTFSZeo1sUdCpeO", + "setting_id": "qeWFOMhrKa1yezHw", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.8.json similarity index 63% rename from resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.8.json index 18e1965b76..e8935f9172 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS 0.8.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA @MINIIS 0.8", - "inherits": "fdm_filament_pva", + "name": "Generic PVA HF @Prusa MINIIS 0.8", + "inherits": "Generic PVA HF @Prusa base", + "renamed_from": "Prusa Generic PVA HF @MINIIS 0.8;Prusa Generic PVA HF MINIIS 0.8", "from": "system", - "setting_id": "ISdXFzAcVUj3ZIfQ", + "setting_id": "h0RQ3XME0UFEeZVA", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS.json similarity index 64% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS.json index cd7b4f7b7d..a4a131da97 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MINIIS", - "inherits": "fdm_filament_pva", + "name": "Generic PVA HF @Prusa MINIIS", + "inherits": "Generic PVA HF @Prusa base", + "renamed_from": "Prusa Generic PVA HF @MINIIS;Prusa Generic PVA HF MINIIS", "from": "system", - "setting_id": "9MNzR7N4A1k64jne", + "setting_id": "VZcvmjCAtivpMepD", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.6.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.6.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.6.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.6.json index bcd14e6b66..1b78b6b0bc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.6.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MK3.5 0.6", + "name": "Generic PVA HF @Prusa MK3.5 0.6", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA HF @MK3.5 0.6;Prusa Generic PVA HF MK3.5 0.6", "from": "system", - "setting_id": "NfhvtCbeYlQ3el2O", - "filament_id": "GFS99_5", + "setting_id": "8R3yU9OjRFBIp1nU", + "filament_id": "OFDwBwO5", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.8.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.8.json similarity index 67% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.8.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.8.json index 8495914c13..94f635382e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5 0.8.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MK3.5 0.8", + "name": "Generic PVA HF @Prusa MK3.5 0.8", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA HF @MK3.5 0.8;Prusa Generic PVA HF MK3.5 0.8", "from": "system", - "setting_id": "J5PBEm3LvfpztfXU", - "filament_id": "GFS99_6", + "setting_id": "OOUVHHPIB95wqeTB", + "filament_id": "OFDwBwO5", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5.json similarity index 68% rename from resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5.json index 97b2d1ff89..c3749316e9 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic PVA HF @MK3.5", + "name": "Generic PVA HF @Prusa MK3.5", "inherits": "fdm_filament_pva", + "renamed_from": "Prusa Generic PVA HF @MK3.5;Prusa Generic PVA HF MK3.5", "from": "system", - "setting_id": "X2k0n055aaG1zc0u", - "filament_id": "GFS99_4", + "setting_id": "gTh9PfBYkibWdknz", + "filament_id": "OFDwBwO5", "instantiation": "true", "filament_flow_ratio": [ "1" diff --git a/resources/profiles/Prusa/filament/Generic PVA HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa base.json new file mode 100644 index 0000000000..bd599d74b3 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic PVA HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic PVA HF @Prusa base", + "inherits": "fdm_filament_pva", + "from": "system", + "filament_id": "OFDwBwO5", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.6.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.6.json similarity index 51% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.6.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.6.json index fff78aec9f..dc68ea318c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.6.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU @CORE One 0.6", - "inherits": "Prusa Generic TPU @CORE One", + "name": "Generic TPU @Prusa CORE One 0.6", + "inherits": "Generic TPU @Prusa CORE One", + "renamed_from": "Prusa Generic TPU @CORE One 0.6;Prusa Generic TPU CORE One 0.6", "from": "system", - "setting_id": "OulnL3bWrEpRJbgJ", - "filament_id": "Prusa Generic TPU @CORE One 0.6", + "setting_id": "VvvSk3OsXXxyerAX", + "filament_id": "OFgbpcy9", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.8.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.8.json similarity index 51% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.8.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.8.json index 4ba3f08222..93b68e0afa 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One 0.8.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU @CORE One 0.8", - "inherits": "Prusa Generic TPU @CORE One", + "name": "Generic TPU @Prusa CORE One 0.8", + "inherits": "Generic TPU @Prusa CORE One", + "renamed_from": "Prusa Generic TPU @CORE One 0.8;Prusa Generic TPU CORE One 0.8", "from": "system", - "setting_id": "9fAhdX2hOAnUDn1I", - "filament_id": "Prusa Generic TPU @CORE One 0.8", + "setting_id": "LUUEXi6UUk0Zs5Pf", + "filament_id": "OFgbpcy9", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One.json similarity index 89% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One.json index 9cba165705..3717f8586a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @CORE One.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa CORE One.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU @CORE One", + "name": "Generic TPU @Prusa CORE One", "inherits": "fdm_filament_flex", + "renamed_from": "Prusa Generic TPU @CORE One;Prusa Generic TPU CORE One", "from": "system", - "setting_id": "VR2WfERGWPIWTRha", - "filament_id": "Prusa Generic TPU @CORE One", + "setting_id": "jsXqf9CeaXCvsrWM", + "filament_id": "OFgbpcy9", "instantiation": "true", "chamber_temperature": [ "30" @@ -72,7 +73,7 @@ "M900 K0 ; Filament gcode\n\nM142 S36 ; set heatbreak target temp" ], "filament_type": [ - "FLEX" + "TPU" ], "filament_vendor": [ "Generic" diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MINIIS.json similarity index 86% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa MINIIS.json index 8acb55983c..85c60e64a8 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic TPU @MINIIS", - "inherits": "fdm_filament_tpu", + "name": "Generic TPU @Prusa MINIIS", + "inherits": "Generic TPU @Prusa base", + "renamed_from": "Prusa Generic TPU @MINIIS;Prusa Generic TPU MINIIS", "from": "system", - "setting_id": "TUqkAb8i9HpFdiCy", + "setting_id": "bOai5Ib1dggl5Qlc", "instantiation": "true", "filament_max_volumetric_speed": [ "1.35" @@ -18,7 +19,7 @@ "50" ], "filament_type": [ - "FLEX" + "TPU" ], "nozzle_temperature_initial_layer": [ "220" diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK3.5.json similarity index 87% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa MK3.5.json index bc6d7ad126..3e72481ea7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU @MK3.5", + "name": "Generic TPU @Prusa MK3.5", "inherits": "fdm_filament_tpu", + "renamed_from": "Prusa Generic TPU @MK3.5;Prusa Generic TPU MK3.5", "from": "system", - "setting_id": "wfxLtrIAOgG7TKib", - "filament_id": "GFU99_2", + "setting_id": "j6bDPJnwtsB16yBu", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "1.8" @@ -19,7 +20,7 @@ "50" ], "filament_type": [ - "FLEX" + "TPU" ], "nozzle_temperature_initial_layer": [ "220" diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4.json similarity index 62% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa MK4.json index 01db48abbf..52c7ebf182 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic TPU @MK4", - "inherits": "fdm_filament_tpu", + "name": "Generic TPU @Prusa MK4", + "inherits": "Generic TPU @Prusa base", + "renamed_from": "Prusa Generic TPU @MK4;Prusa Generic TPU MK4", "from": "system", - "setting_id": "9KjaEcwnQA8CsnVy", + "setting_id": "9wL3LAJZ7PyqBVEb", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.6.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.6.json new file mode 100644 index 0000000000..4b5399bd89 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.6.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic TPU @Prusa MK4S 0.6", + "inherits": "Generic TPU @Prusa MK4S", + "renamed_from": "Prusa Generic TPU @MK4S 0.6;Prusa Generic TPU MK4S 0.6", + "from": "system", + "setting_id": "XM427EDbbCgt2wNZ", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.6 nozzle", + "Prusa MK4S HF0.6 nozzle" + ], + "filament_max_volumetric_speed": [ + "6" + ] +} diff --git a/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.8.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.8.json new file mode 100644 index 0000000000..3a663958f1 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S 0.8.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic TPU @Prusa MK4S 0.8", + "inherits": "Generic TPU @Prusa MK4S", + "renamed_from": "Prusa Generic TPU @MK4S 0.8;Prusa Generic TPU MK4S 0.8", + "from": "system", + "setting_id": "2UPIZFNertdlZ4o2", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "compatible_printers": [ + "Prusa MK4S 0.8 nozzle", + "Prusa MK4S HF0.8 nozzle" + ], + "filament_max_volumetric_speed": [ + "9" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S.json similarity index 87% rename from resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S.json index 3fec5776ec..75f1895c87 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa MK4S.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU @MK4S", + "name": "Generic TPU @Prusa MK4S", "inherits": "fdm_filament_tpu", + "renamed_from": "Prusa Generic TPU @MK4S;Prusa Generic TPU MK4S", "from": "system", - "setting_id": "JxNaZsG7Y2rQKATV", - "filament_id": "Generic FLEX @MK4S", + "setting_id": "wdopbtHBnMKC2rhj", + "filament_id": "OFgbpcy9", "instantiation": "true", "close_fan_the_first_x_layers": "3", "compatible_printers": [ @@ -41,7 +42,7 @@ "M900 K0 ; Filament gcode\n\nM142 S36 ; set heatbreak target temp" ], "filament_type": [ - "FLEX" + "TPU" ], "filament_wipe": "0", "filament_z_hop": "0", diff --git a/resources/profiles/Prusa/filament/Generic TPU @Prusa base.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa base.json new file mode 100644 index 0000000000..7b5668bfff --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic TPU @Prusa base", + "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "OFgbpcy9", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU.json b/resources/profiles/Prusa/filament/Generic TPU @Prusa.json similarity index 71% rename from resources/profiles/Prusa/filament/Prusa Generic TPU.json rename to resources/profiles/Prusa/filament/Generic TPU @Prusa.json index 58324d477d..95048f947c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU.json +++ b/resources/profiles/Prusa/filament/Generic TPU @Prusa.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic TPU", - "inherits": "fdm_filament_tpu", + "name": "Generic TPU @Prusa", + "inherits": "Generic TPU @Prusa base", + "renamed_from": "Prusa Generic TPU", "from": "system", - "setting_id": "l9s40Rloq4urv3Y0", + "setting_id": "bmtq13tfalfSTRrO", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU HF @MINIIS.json b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa MINIIS.json similarity index 85% rename from resources/profiles/Prusa/filament/Prusa Generic TPU HF @MINIIS.json rename to resources/profiles/Prusa/filament/Generic TPU HF @Prusa MINIIS.json index 271c36e183..4c4ab81b42 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU HF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa MINIIS.json @@ -1,9 +1,10 @@ { "type": "filament", - "name": "Prusa Generic TPU HF @MINIIS", - "inherits": "fdm_filament_tpu", + "name": "Generic TPU HF @Prusa MINIIS", + "inherits": "Generic TPU HF @Prusa base", + "renamed_from": "Prusa Generic TPU HF @MINIIS;Prusa Generic TPU HF MINIIS", "from": "system", - "setting_id": "a9fmPCI24EJoJ5OH", + "setting_id": "Jw1UjgrXtYG5rMDt", "instantiation": "true", "filament_max_volumetric_speed": [ "10" @@ -18,7 +19,7 @@ "50" ], "filament_type": [ - "FLEX" + "TPU" ], "nozzle_temperature_initial_layer": [ "220" diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU HF @MK3.5.json b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa MK3.5.json similarity index 86% rename from resources/profiles/Prusa/filament/Prusa Generic TPU HF @MK3.5.json rename to resources/profiles/Prusa/filament/Generic TPU HF @Prusa MK3.5.json index 91e97c5324..f958cac588 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU HF @MK3.5.json +++ b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa MK3.5.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Prusa Generic TPU HF @MK3.5", + "name": "Generic TPU HF @Prusa MK3.5", "inherits": "fdm_filament_tpu", + "renamed_from": "Prusa Generic TPU HF @MK3.5;Prusa Generic TPU HF MK3.5", "from": "system", - "setting_id": "Gfuy9ZSCpJw3Usa6", - "filament_id": "GFU99_3", + "setting_id": "W8pYAV5JMW70PKlw", + "filament_id": "OFnT7Qpb", "instantiation": "true", "filament_max_volumetric_speed": [ "8" @@ -19,7 +20,7 @@ "50" ], "filament_type": [ - "FLEX" + "TPU" ], "nozzle_temperature_initial_layer": [ "220" diff --git a/resources/profiles/Prusa/filament/Generic TPU HF @Prusa base.json b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa base.json new file mode 100644 index 0000000000..47b1b82c77 --- /dev/null +++ b/resources/profiles/Prusa/filament/Generic TPU HF @Prusa base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "name": "Generic TPU HF @Prusa base", + "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "OFnT7Qpb", + "instantiation": "false" +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.6.json deleted file mode 100644 index 0f666ab11b..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.6.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @CORE One 0.6", - "inherits": "Prusa Generic ABS @CORE One", - "from": "system", - "setting_id": "AADElwBWs9fzeAKC", - "filament_id": "Prusa Generic ABS @CORE One 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa CORE One 0.6 nozzle" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.8.json deleted file mode 100644 index 6c046f232f..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @CORE One 0.8.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @CORE One 0.8", - "inherits": "Prusa Generic ABS @CORE One", - "from": "system", - "setting_id": "QLaQiU2tF5ZFTVjP", - "filament_id": "Prusa Generic ABS @CORE One 0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa CORE One 0.8 nozzle" - ], - "fan_cooling_layer_time": [ - "40" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.6.json deleted file mode 100644 index fb9f1a07e7..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.6.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @MK4S 0.6", - "inherits": "Prusa Generic ABS @MK4S", - "from": "system", - "setting_id": "VVzzIN41B5ADTIeQ", - "filament_id": "Generic ABS @MK4S 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.6 nozzle" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.8.json deleted file mode 100644 index 856f2cfe6b..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S 0.8.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @MK4S 0.8", - "inherits": "Prusa Generic ABS @MK4S", - "from": "system", - "setting_id": "4705fRqWWP2GZOK8", - "filament_id": "Generic ABS @MK4S 0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.8 nozzle" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.5.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.5.json deleted file mode 100644 index 27f7e69c16..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.5.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @MK4S HF0.5", - "inherits": "Prusa Generic ABS @MK4S HF0.4", - "from": "system", - "setting_id": "bf8ANklVcC0xW1rT", - "filament_id": "Generic ABS @MK4S HF0.5", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.5 nozzle" - ], - "filament_max_volumetric_speed": [ - "27" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.6.json deleted file mode 100644 index dd6439a0e4..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.6.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @MK4S HF0.6", - "inherits": "Prusa Generic ABS @MK4S HF0.4", - "from": "system", - "setting_id": "ZB9vO7AnRqMDCrOy", - "filament_id": "Generic ABS @MK4S HF0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.6 nozzle" - ], - "filament_max_volumetric_speed": [ - "34" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.8.json deleted file mode 100644 index 3b359aa2fd..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.8.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ABS @MK4S HF0.8", - "inherits": "Prusa Generic ABS @MK4S HF0.4", - "from": "system", - "setting_id": "7cx9gZh2vUCR0ELG", - "filament_id": "Generic ABS @MK4S HF0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.8 nozzle" - ], - "fan_min_speed": "15", - "filament_max_volumetric_speed": [ - "36" - ], - "slow_down_layer_time": "25" -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.6.json deleted file mode 100644 index 5e47c117c6..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @CORE One 0.6.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ASA @CORE One 0.6", - "inherits": "Prusa Generic ASA @CORE One", - "from": "system", - "setting_id": "GB4mI21wSfo3jfnQ", - "filament_id": "Prusa Generic ASA @CORE One 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa CORE One 0.6 nozzle" - ], - "nozzle_temperature": [ - "255" - ], - "slow_down_layer_time": [ - "15" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.6.json deleted file mode 100644 index 430313b6e5..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.6.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ASA @MK4S 0.6", - "inherits": "Prusa Generic ASA @MK4S", - "from": "system", - "setting_id": "j5YvdepMw4z29kzr", - "filament_id": "Prusament ASA @MK4S 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.6 nozzle" - ], - "nozzle_temperature": "255", - "slow_down_layer_time": "15" -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.8.json deleted file mode 100644 index 5853f7bc3f..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S 0.8.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ASA @MK4S 0.8", - "inherits": "Prusa Generic ASA @MK4S", - "from": "system", - "setting_id": "FtVjP8q0MzM0vr2J", - "filament_id": "Prusament ASA @MK4S 0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.8 nozzle" - ], - "fan_max_speed": "15", - "fan_min_speed": "15", - "slow_down_layer_time": "18" -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.5.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.5.json deleted file mode 100644 index 6bf46c7fdc..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.5.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ASA @MK4S HF0.5", - "inherits": "Prusa Generic ASA @MK4S HF0.4", - "from": "system", - "setting_id": "meEXtenGq7N4dWf3", - "filament_id": "Prusament ASA @MK4S HF0.5", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.5 nozzle" - ], - "filament_max_volumetric_speed": [ - "27" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.6.json deleted file mode 100644 index bd0250e1e9..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4S HF0.6.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic ASA @MK4S HF0.6", - "inherits": "Prusa Generic ASA @MK4S HF0.4", - "from": "system", - "setting_id": "o0UhIK80Y28KX3AK", - "filament_id": "Prusament ASA @MK4S HF0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.6 nozzle" - ], - "fan_max_speed": "15", - "fan_min_speed": "15", - "filament_max_volumetric_speed": [ - "34" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.5.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.5.json deleted file mode 100644 index 3225bdfb2c..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.5.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic PETG @MK4S HF0.5", - "inherits": "Prusa Generic PETG @MK4S HF0.4", - "from": "system", - "setting_id": "vO26JgugJEsX5z6a", - "filament_id": "Generic PETG @MK4S HF0.5", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S HF0.5 nozzle" - ], - "filament_max_volumetric_speed": [ - "29" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.6.json deleted file mode 100644 index dbf1862382..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @CORE One 0.6.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic PLA @CORE One 0.6", - "inherits": "Prusa Generic PLA @CORE One", - "from": "system", - "setting_id": "8kSIJx0dpaelcAos", - "filament_id": "Prusa Generic PLA @CORE One 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa CORE One 0.6 nozzle" - ], - "nozzle_temperature": [ - "210" - ], - "slow_down_layer_time": [ - "15" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.8.json deleted file mode 100644 index fdce38720a..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA Silk @CORE One 0.8.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic PLA Silk @CORE One 0.8", - "inherits": "Prusa Generic PLA Silk @CORE One", - "from": "system", - "setting_id": "y2IZMYPduRS1mEFL", - "filament_id": "Prusa Generic PLA Silk @CORE One 0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa CORE One 0.8 nozzle", - "Prusa CORE One HF 0.8 nozzle" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "17" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.6.json deleted file mode 100644 index 89b8a94856..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.6.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic TPU @MK4S 0.6", - "inherits": "Prusa Generic TPU @MK4S", - "from": "system", - "setting_id": "3zJSkjnxFgeAbkhY", - "filament_id": "Generic FLEX @MK4S 0.6", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.6 nozzle", - "Prusa MK4S HF0.6 nozzle" - ], - "filament_max_volumetric_speed": [ - "6" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.8.json deleted file mode 100644 index 0230b22bea..0000000000 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4S 0.8.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "filament", - "name": "Prusa Generic TPU @MK4S 0.8", - "inherits": "Prusa Generic TPU @MK4S", - "from": "system", - "setting_id": "tRRHfIUwFo1C8Q3B", - "filament_id": "Generic FLEX @MK4S 0.8", - "instantiation": "true", - "compatible_printers": [ - "Prusa MK4S 0.8 nozzle", - "Prusa MK4S HF0.8 nozzle" - ], - "filament_max_volumetric_speed": [ - "9" - ] -} diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.6.json index b3fe97133a..40bb6ee291 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "XlSISsmFlPbj3BOn", - "filament_id": "Prusament ASA @CORE One 0.6", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.8.json index 330f3a7643..71c47268ba 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "89B204vxbuUqB3Os", - "filament_id": "Prusament ASA @CORE One 0.8", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.4.json index ace3c0cb55..e7977e0c94 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.4.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "tXktQXr79am1s5UL", - "filament_id": "Prusament ASA @CORE One HF 0.4", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.5.json index 365a4f56a7..26e053cd79 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.5.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "YbyojtjXvEtI4Tt3", - "filament_id": "Prusament ASA @CORE One HF 0.5", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.6.json index 9f79b6842a..5bde9d8869 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "35H9TLr1p2Jy767g", - "filament_id": "Prusament ASA @CORE One HF 0.6", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.8.json index b006ea74c1..ba5273d125 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One HF 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament ASA @CORE One", "from": "system", "setting_id": "efgN1KmROfVKa86P", - "filament_id": "Prusament ASA @CORE One HF 0.8", + "filament_id": "OFmFwUWM", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @CORE One.json b/resources/profiles/Prusa/filament/Prusament ASA @CORE One.json index 1ca5222859..b1f2dace26 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "UUTjJ4Y8St3c87jD", - "filament_id": "Prusament ASA @CORE One", + "filament_id": "OFmFwUWM", "instantiation": "true", "chamber_temperature": [ "40" diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json index 87d14f9e8f..fdb63e2e68 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "IQu91UAWOJOQcUq9", + "filament_id": "OFmFwUWM", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "260", "nozzle_temperature": "260", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL.json b/resources/profiles/Prusa/filament/Prusament ASA @XL.json index 9f3df999d4..c07021a9c3 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "RaEoFoZdXkkOz9yh", + "filament_id": "OFmFwUWM", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "260", "nozzle_temperature": "260", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.6.json index 8698746393..cbbd006468 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PA-CF @CORE One", "from": "system", "setting_id": "sEDEmqR4k65IhJ4D", - "filament_id": "Prusament PA-CF @CORE One 0.6", + "filament_id": "OF54SvEe", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.8.json index c22f07ddb4..434c534282 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PA-CF @CORE One", "from": "system", "setting_id": "gwFsNIMKGU1f2vPS", - "filament_id": "Prusament PA-CF @CORE One 0.8", + "filament_id": "OF54SvEe", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One.json b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One.json index c1c87b7041..33382b1974 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "08PdV2lMsSv1JeOt", - "filament_id": "Prusament PA-CF @CORE One", + "filament_id": "OF54SvEe", "instantiation": "true", "chamber_temperature": [ "40" @@ -60,7 +60,7 @@ "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS|MK4S|MK3.9S|CORE One).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.6}0.025{elsif nozzle_diameter[filament_extruder_id]==0.8}0.016{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" ], "filament_type": [ - "PA" + "PA11-CF" ], "filament_vendor": [ "Prusa Polymers" diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json index d287e59aa4..af306fd2a7 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pa11cf", "from": "system", "setting_id": "FYerOcjToJ3ABpu1", + "filament_id": "OF54SvEe", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json index 6735c31b8a..f843be92a0 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pa11cf", "from": "system", "setting_id": "IrL4iU2kkMBHIw3e", + "filament_id": "OF54SvEe", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.6.json index c31c409a16..5aafb38b43 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "0ytT0Ro3sAjvUPN2", - "filament_id": "Prusament PC Blend @CORE One 0.6", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.8.json index b27cac24c3..a3826bf7cc 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "WrAImqAV7odcGf8Y", - "filament_id": "Prusament PC Blend @CORE One 0.8", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.4.json index e9431a4a94..4e5b5643bd 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.4.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "pEsP537TBR5kozQB", - "filament_id": "Prusament PC Blend @CORE One HF 0.4", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.5.json index 824d9468ea..ab9a127df8 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.5.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "3IfLi1ZVCKKbEBUW", - "filament_id": "Prusament PC Blend @CORE One HF 0.5", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.6.json index 707aff7532..642f421819 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "Q8qWw2G7l2UvxGut", - "filament_id": "Prusament PC Blend @CORE One HF 0.6", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.8.json index f75f439c4a..f66f2521c5 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One HF 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC Blend @CORE One", "from": "system", "setting_id": "LDvckXo1zpccnT4g", - "filament_id": "Prusament PC Blend @CORE One HF 0.8", + "filament_id": "OFvDbkFq", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One.json b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One.json index 0fe031c276..34ecd1d759 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "x1SkWhSSkVVIPwCF", - "filament_id": "Prusament PC Blend @CORE One", + "filament_id": "OFvDbkFq", "instantiation": "true", "chamber_temperature": [ "40" diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json index 9e715f9e52..922492ce7c 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json @@ -4,7 +4,11 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "FOgpd4BtawBtmjPB", + "filament_id": "OFvDbkFq", "instantiation": "true", + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "275", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json index 8494169720..2ea273902c 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json @@ -4,7 +4,11 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "DLTlxt04GREtOiec", + "filament_id": "OFvDbkFq", "instantiation": "true", + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "275", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.6.json index e12bc8db2b..f4722bb89a 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC-CF @CORE One", "from": "system", "setting_id": "DYPBEKeKBdTenG3S", - "filament_id": "Prusament PC-CF @CORE One 0.6", + "filament_id": "OFjz0a3m", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.8.json index 90bbaf4217..2abf3ab8d7 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PC-CF @CORE One", "from": "system", "setting_id": "0J8ZuIRTB6EgSke8", - "filament_id": "Prusament PC-CF @CORE One 0.8", + "filament_id": "OFjz0a3m", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One.json b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One.json index 2d860fe307..0d5622b7ab 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "IK6Z7DVevvmR96Or", - "filament_id": "Prusament PC-CF @CORE One", + "filament_id": "OFjz0a3m", "instantiation": "true", "chamber_temperature": [ "40" @@ -60,7 +60,7 @@ "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS|MK4S|MK3.9S|CORE One).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.6}0.025{elsif nozzle_diameter[filament_extruder_id]==0.8}0.016{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" ], "filament_type": [ - "PC" + "PC-CF" ], "filament_vendor": [ "Prusa Polymers" diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json index 482a0403df..0c6d1a3cdb 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pccf", "from": "system", "setting_id": "m1YND6uz3GWeVIBG", + "filament_id": "OFjz0a3m", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "285", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json index 7081cd9523..572b970d02 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pccf", "from": "system", "setting_id": "Eq5x2CcEUUAZ5aof", + "filament_id": "OFjz0a3m", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "285", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.6.json index 83ef41e09e..974cf5b0cc 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "JVKHdd0UyFqnVj9g", - "filament_id": "Prusament PETG @CORE One 0.6", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.8.json index eb6cb9a8fa..c1f2e23890 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "0OCfuaF4u8wo5D20", - "filament_id": "Prusament PETG @CORE One 0.8", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.4.json index f2f309b90c..f34dcd29a7 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.4.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "lwT1VxW5OkY36kUX", - "filament_id": "Prusament PETG @CORE One HF 0.4", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.5.json index 08ed962fe6..71001294fa 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.5.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "XAgW7fElXxhaKaBT", - "filament_id": "Prusament PETG @CORE One HF 0.5", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.6.json index cc1fe65500..cea5ef7809 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "6aTGEZj2EmpTR1mu", - "filament_id": "Prusament PETG @CORE One HF 0.6", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.8.json index 0f2078b5b4..ec16eb9ef2 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One HF 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PETG @CORE One", "from": "system", "setting_id": "EmrFLgk6ZkTHAvN8", - "filament_id": "Prusament PETG @CORE One HF 0.8", + "filament_id": "OFkR8E2c", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @CORE One.json b/resources/profiles/Prusa/filament/Prusament PETG @CORE One.json index 1a03663b6d..00f78be204 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "LSvba9ds3XTwDMCG", - "filament_id": "Prusament PETG @CORE One", + "filament_id": "OFkR8E2c", "instantiation": "true", "chamber_temperature": [ "35" diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json index e127263ad7..e0db59fde9 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament PETG @XL 5T", - "inherits": "fdm_filament_pet", + "inherits": "Prusament PETG @base", "from": "system", "setting_id": "USigpRWuzpdkT6ZW", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL.json b/resources/profiles/Prusa/filament/Prusament PETG @XL.json index b552f9ed09..f26140a0eb 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament PETG @XL", - "inherits": "fdm_filament_pet", + "inherits": "Prusament PETG @base", "from": "system", "setting_id": "vPPD8EkKFy5j8pg5", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @base.json b/resources/profiles/Prusa/filament/Prusament PETG @base.json new file mode 100644 index 0000000000..a2d5de2e53 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PETG @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Prusament PETG @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "OFkR8E2c", + "instantiation": "false", + "filament_vendor": [ + "Prusa Polymers" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.6.json index 647940d644..b699ba216f 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "jGHl1i9Y1oJsLQY8", - "filament_id": "Prusament PLA @CORE One 0.6", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.8.json index 3af2846aa0..b1a3109180 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "ijkbGowmIm8uUYsf", - "filament_id": "Prusament PLA @CORE One 0.8", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.4.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.4.json index a44a2fd1c4..8c1d806d98 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.4.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.4.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "mf4Muog4IcsgkYoA", - "filament_id": "Prusament PLA @CORE One HF 0.4", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.4 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.5.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.5.json index ab7f5b3a37..b91fd4aae0 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.5.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.5.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "zJf1Y6eP81j3v8VV", - "filament_id": "Prusament PLA @CORE One HF 0.5", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.5 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.6.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.6.json index 7c94b57456..200666edcf 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "UAvqLPGHYOT1B2lC", - "filament_id": "Prusament PLA @CORE One HF 0.6", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.6 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.8.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.8.json index 3ba0a21670..84d55886d6 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One HF 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PLA @CORE One", "from": "system", "setting_id": "0N17rx4NFmuHYLQl", - "filament_id": "Prusament PLA @CORE One HF 0.8", + "filament_id": "OFnO4wnf", "instantiation": "true", "compatible_printers": [ "Prusa CORE One HF 0.8 nozzle" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @CORE One.json b/resources/profiles/Prusa/filament/Prusament PLA @CORE One.json index 78b1f80425..ddf62b89ac 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "PuujUMjNKLZvZNAH", - "filament_id": "Prusament PLA @CORE One", + "filament_id": "OFnO4wnf", "instantiation": "true", "chamber_temperature": [ "20" diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json index d74ad3f865..efda9cf4e3 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament PLA @XL 5T", - "inherits": "fdm_filament_pla", + "inherits": "Prusament PLA @base", "from": "system", "setting_id": "3xyT73BMaAvbb1Ej", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL.json b/resources/profiles/Prusa/filament/Prusament PLA @XL.json index 60825e3109..9d02a67491 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament PLA @XL", - "inherits": "fdm_filament_pla", + "inherits": "Prusament PLA @base", "from": "system", "setting_id": "PlHq1KqHrreo5W8m", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @base.json b/resources/profiles/Prusa/filament/Prusament PLA @base.json new file mode 100644 index 0000000000..fad8c00435 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PLA @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Prusament PLA @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFnO4wnf", + "instantiation": "false", + "filament_vendor": [ + "Prusa Polymers" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.6.json index 8c979342b3..6516085280 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament PVB @CORE One", "from": "system", "setting_id": "GnslGWS97HuaWX76", - "filament_id": "Prusament PVB @CORE One 0.6", + "filament_id": "OFh7mvPO", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.8.json index 2496ec966d..a001c24fe7 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament PVB @CORE One", "from": "system", "setting_id": "Nn7eVPawILDH4BRW", - "filament_id": "Prusament PVB @CORE One 0.8", + "filament_id": "OFh7mvPO", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @CORE One.json b/resources/profiles/Prusa/filament/Prusament PVB @CORE One.json index c3c5cf16c8..4504aa77bf 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pvb", "from": "system", "setting_id": "085dGkrnPhatF07x", - "filament_id": "Prusament PVB @CORE One", + "filament_id": "OFh7mvPO", "instantiation": "true", "chamber_temperature": [ "20" diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json index 280a722bb3..366c6043cd 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pvb", "from": "system", "setting_id": "DIrPylH6rmu6YA43", + "filament_id": "OFh7mvPO", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "215", "hot_plate_temp_initial_layer": "75", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL.json b/resources/profiles/Prusa/filament/Prusament PVB @XL.json index 1ac285be6e..4a9a858c06 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL.json @@ -4,7 +4,9 @@ "inherits": "fdm_filament_pvb", "from": "system", "setting_id": "RF55nfxQwqUqe00Q", + "filament_id": "OFh7mvPO", "instantiation": "true", + "filament_vendor": ["Prusa Polymers"], "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "215", "hot_plate_temp_initial_layer": "75", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.6.json b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.6.json index 19f2eb0962..adbf76e56d 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.6.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.6.json @@ -4,7 +4,7 @@ "inherits": "Prusament rPLA @CORE One", "from": "system", "setting_id": "BY8gwU1VY0hFBPSc", - "filament_id": "Prusament rPLA @CORE One 0.6", + "filament_id": "OFWRITFw", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.6 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.8.json b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.8.json index 23f10a2927..3c71431160 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.8.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One 0.8.json @@ -4,7 +4,7 @@ "inherits": "Prusament rPLA @CORE One", "from": "system", "setting_id": "dNK9a3tZOFeUZm60", - "filament_id": "Prusament rPLA @CORE One 0.8", + "filament_id": "OFWRITFw", "instantiation": "true", "compatible_printers": [ "Prusa CORE One 0.8 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One.json b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One.json index c32d3baf7f..b520bf4a22 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @CORE One.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @CORE One.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Bw6H4vFnq7YExyLd", - "filament_id": "Prusament rPLA @CORE One", + "filament_id": "OFWRITFw", "instantiation": "true", "chamber_temperature": [ "20" diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json index cb1d9258c9..8bfc482af6 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament rPLA @XL 5T", - "inherits": "fdm_filament_pla", + "inherits": "Prusament rPLA @base", "from": "system", "setting_id": "yAiHzmW4pa8deage", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json index ab5867979b..9ed3d9af74 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json @@ -1,7 +1,7 @@ { "type": "filament", "name": "Prusament rPLA @XL", - "inherits": "fdm_filament_pla", + "inherits": "Prusament rPLA @base", "from": "system", "setting_id": "j2BSXHFa7D3Gze7C", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @base.json b/resources/profiles/Prusa/filament/Prusament rPLA @base.json new file mode 100644 index 0000000000..32df471fc6 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament rPLA @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Prusament rPLA @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFWRITFw", + "instantiation": "false", + "filament_vendor": [ + "Prusa Polymers" + ] +} diff --git a/resources/profiles/Prusa/filament/fdm_filament_abs.json b/resources/profiles/Prusa/filament/fdm_filament_abs.json index 50945a12e0..35c4d94e0e 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_abs.json +++ b/resources/profiles/Prusa/filament/fdm_filament_abs.json @@ -3,7 +3,6 @@ "name": "fdm_filament_abs", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFB99", "instantiation": "false", "cool_plate_temp": [ "105" diff --git a/resources/profiles/Prusa/filament/fdm_filament_asa.json b/resources/profiles/Prusa/filament/fdm_filament_asa.json index 865b195578..1236ab3286 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_asa.json +++ b/resources/profiles/Prusa/filament/fdm_filament_asa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_asa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFB98", "instantiation": "false", "cool_plate_temp": [ "105" diff --git a/resources/profiles/Prusa/filament/fdm_filament_flex.json b/resources/profiles/Prusa/filament/fdm_filament_flex.json index 4e0e96e59b..139c475174 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_flex.json +++ b/resources/profiles/Prusa/filament/fdm_filament_flex.json @@ -3,7 +3,6 @@ "name": "fdm_filament_flex", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFU99", "instantiation": "false", "hot_plate_temp_initial_layer": [ "50" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pa.json b/resources/profiles/Prusa/filament/fdm_filament_pa.json index 050df1ed25..8e2337a0bd 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pa.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFN99", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json b/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json index 4a3d06afeb..8367e9dce3 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pa11cf", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFN98", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pc.json b/resources/profiles/Prusa/filament/fdm_filament_pc.json index 01a376d817..bc1b6a3a3a 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pc.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pc.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pc", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFC99", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pccf.json b/resources/profiles/Prusa/filament/fdm_filament_pccf.json index 50b33b2380..7903295158 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pccf.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pccf.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pccf", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFC98", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pet.json b/resources/profiles/Prusa/filament/fdm_filament_pet.json index b7d8b3d957..9d20738d06 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pet.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pet.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pet", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFT02", "instantiation": "false", "cool_plate_temp": [ "60" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pla.json b/resources/profiles/Prusa/filament/fdm_filament_pla.json index a00cd395a1..573c92fede 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pla.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pla.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pla", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFL99", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pva.json b/resources/profiles/Prusa/filament/fdm_filament_pva.json index b6bf5b64a1..b25a8332cc 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pva.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pva.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pva", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFS99", "instantiation": "false", "cool_plate_temp": [ "35" diff --git a/resources/profiles/Prusa/filament/fdm_filament_pvb.json b/resources/profiles/Prusa/filament/fdm_filament_pvb.json index a7365e16bd..ef5a5cdcd4 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pvb.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pvb.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pvb", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFS98", "instantiation": "false", "cool_plate_temp": [ "35" diff --git a/resources/profiles/Prusa/filament/fdm_filament_tpu.json b/resources/profiles/Prusa/filament/fdm_filament_tpu.json index cca57e64fa..dff9bf8f73 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_tpu.json +++ b/resources/profiles/Prusa/filament/fdm_filament_tpu.json @@ -3,7 +3,6 @@ "name": "fdm_filament_tpu", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFU99", "instantiation": "false", "cool_plate_temp": [ "30" diff --git a/resources/profiles/Prusa/machine/Prusa CORE One HF.json b/resources/profiles/Prusa/machine/Prusa CORE One HF.json index cabd5b0cb4..027ef3e2d0 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One HF.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One HF.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One HF", "bed_model": "coreone_bed.stl", "bed_texture": "coreone.svg", - "default_materials": "Prusa Generic ABS @CORE One;Prusa Generic ASA @CORE One;Prusa Generic PETG @CORE One;Prusa Generic PLA @CORE One;Prusa Generic PLA Silk @CORE One;Prusa Generic TPU @CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One L HF.json b/resources/profiles/Prusa/machine/Prusa CORE One L HF.json index c176e5961b..57287f0380 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One L HF.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One L HF.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One L HF", "bed_model": "coreonel_bed.stl", "bed_texture": "coreonel.svg", - "default_materials": "Prusa Generic PLA @CORE One", + "default_materials": "Generic PLA @Prusa CORE One", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One L.json b/resources/profiles/Prusa/machine/Prusa CORE One L.json index 4ba199b10f..87bc587830 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One L.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One L.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One L", "bed_model": "coreonel_bed.stl", "bed_texture": "coreonel.svg", - "default_materials": "Prusa Generic ABS @CORE One;Prusa Generic ASA @CORE One;Prusa Generic PETG @CORE One;Prusa Generic PLA @CORE One;Prusa Generic PLA Silk @CORE One;Prusa Generic TPU @CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One.json b/resources/profiles/Prusa/machine/Prusa CORE One.json index 7fbe05d11d..b9907aca2e 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One", "bed_model": "coreone_bed.stl", "bed_texture": "coreone.svg", - "default_materials": "Prusa Generic ABS @CORE One;Prusa Generic ASA @CORE One;Prusa Generic PETG @CORE One;Prusa Generic PLA @CORE One;Prusa Generic PLA Silk @CORE One;Prusa Generic TPU @CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa MINI 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINI 0.25 nozzle.json index b5f9d8392b..dbfa34e816 100644 --- a/resources/profiles/Prusa/machine/Prusa MINI 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINI 0.25 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI", "printer_variant": "0.25", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Standard @MINI 0.25", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINI 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINI 0.4 nozzle.json index 488734582c..4bc7af6bab 100644 --- a/resources/profiles/Prusa/machine/Prusa MINI 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINI 0.4 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI", "printer_variant": "0.4", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Standard @MINI", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINI 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINI 0.6 nozzle.json index ea851b9dcf..6eed0480a6 100644 --- a/resources/profiles/Prusa/machine/Prusa MINI 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINI 0.6 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI", "printer_variant": "0.6", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Standard @MINI 0.6", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINI 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINI 0.8 nozzle.json index 30394e8eef..8168f195fa 100644 --- a/resources/profiles/Prusa/machine/Prusa MINI 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINI 0.8 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI", "printer_variant": "0.8", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Standard @MINI 0.8", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINI.json b/resources/profiles/Prusa/machine/Prusa MINI.json index 367b75a727..a7ce538229 100644 --- a/resources/profiles/Prusa/machine/Prusa MINI.json +++ b/resources/profiles/Prusa/machine/Prusa MINI.json @@ -8,5 +8,5 @@ "bed_model": "mini_bed.stl", "bed_texture": "mini.svg", "hotend_model": "", - "default_materials": "Prusa Generic ABS;Prusa Generic PLA;Prusa Generic PLA-CF;Prusa Generic PETG;Prusa Generic TPU;Prusa Generic ASA;Prusa Generic PC;Prusa Generic PVA;Prusa Generic PA;Prusa Generic PA-CF" + "default_materials": "Generic ABS @Prusa;Generic PLA @Prusa;Generic PLA-CF @Prusa;Generic PETG @Prusa;Generic TPU @Prusa;Generic ASA @Prusa;Generic PC @Prusa;Generic PVA @Prusa;Generic PA @Prusa;Generic PA-CF @Prusa" } diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINIIS 0.25 nozzle.json index c800a8a409..06b10cc244 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS 0.25 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI IS", "printer_variant": "0.25", "default_filament_profile": [ - "Prusa Generic PLA @MINIIS 0.25" + "Generic PLA @Prusa MINIIS 0.25" ], "default_print_profile": "0.12mm Standard @MINIIS", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json index d2d6c18f39..18fe72ef3f 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI IS", "printer_variant": "0.4", "default_filament_profile": [ - "Prusa Generic PLA @MINIIS" + "Generic PLA @Prusa MINIIS" ], "default_print_profile": "0.20mm Standard @MINIIS", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINIIS 0.6 nozzle.json index c7ebd42263..7dc21fb981 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS 0.6 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI IS", "printer_variant": "0.6", "default_filament_profile": [ - "Prusa Generic PLA @MINIIS 0.6" + "Generic PLA @Prusa MINIIS 0.6" ], "default_print_profile": "0.25mm Standard @MINIIS", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINIIS 0.8 nozzle.json index 0ae5a7bbbd..4ab6daa76d 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS 0.8 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MINI IS", "printer_variant": "0.8", "default_filament_profile": [ - "Prusa Generic PLA @MINIIS 0.8" + "Generic PLA @Prusa MINIIS 0.8" ], "default_print_profile": "0.40mm Standard @MINIIS", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS.json b/resources/profiles/Prusa/machine/Prusa MINIIS.json index 123f0a3665..ae5282a129 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS.json @@ -8,5 +8,5 @@ "bed_model": "miniis_bed.stl", "bed_texture": "miniis.svg", "hotend_model": "", - "default_materials": "Prusa Generic PLA-CF @MINIIS;Prusa Generic PC @MINIIS;Prusa Generic PVA @MINIIS;Prusa Generic PA @MINIIS;Prusa Generic PA-CF @MINIIS;Prusa Generic ABS @MINIIS;Prusa Generic PLA @MINIIS;Prusa Generic PLA @MINIIS 0.6;Prusa Generic PLA @MINIIS 0.8;Prusa Generic PETG @MINIIS;Prusa Generic PETG @MINIIS 0.6;Prusa Generic PETG @MINIIS 0.8;Prusa Generic TPU @MINIIS;Prusa Generic ASA @MINIIS;" + "default_materials": "Generic PLA-CF @Prusa MINIIS;Generic PC @Prusa MINIIS;Generic PVA @Prusa MINIIS;Generic PA @Prusa MINIIS;Generic PA-CF @Prusa MINIIS;Generic ABS @Prusa MINIIS;Generic PLA @Prusa MINIIS;Generic PLA @Prusa MINIIS 0.6;Generic PLA @Prusa MINIIS 0.8;Generic PETG @Prusa MINIIS;Generic PETG @Prusa MINIIS 0.6;Generic PETG @Prusa MINIIS 0.8;Generic TPU @Prusa MINIIS;Generic ASA @Prusa MINIIS;" } diff --git a/resources/profiles/Prusa/machine/Prusa MK3.5 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3.5 0.25 nozzle.json index d2fefedc6f..77ca6aa9e3 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3.5 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3.5 0.25 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MK3.5", "printer_variant": "0.25", "default_filament_profile": [ - "Prusa Generic PLA @MK3.5 0.25" + "Generic PLA @Prusa MK3.5 0.25" ], "default_print_profile": "0.12mm Standard @MK3.5", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3.5 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3.5 0.4 nozzle.json index 6d473ce765..ae7df2e583 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3.5 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3.5 0.4 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MK3.5", "printer_variant": "0.4", "default_filament_profile": [ - "Prusa Generic PLA @MK3.5" + "Generic PLA @Prusa MK3.5" ], "default_print_profile": "0.20mm Standard @MK3.5", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3.5 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3.5 0.6 nozzle.json index 3631749c53..742b172254 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3.5 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3.5 0.6 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MK3.5", "printer_variant": "0.6", "default_filament_profile": [ - "Prusa Generic PLA @MK3.5 0.6" + "Generic PLA @Prusa MK3.5 0.6" ], "default_print_profile": "0.25mm Standard @MK3.5", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3.5 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3.5 0.8 nozzle.json index 1dd7d455d4..c67665fefa 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3.5 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3.5 0.8 nozzle.json @@ -9,7 +9,7 @@ "printer_model": "Prusa MK3.5", "printer_variant": "0.8", "default_filament_profile": [ - "Prusa Generic PLA @MK3.5 0.8" + "Generic PLA @Prusa MK3.5 0.8" ], "default_print_profile": "0.40mm Standard @MK3.5", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3.5.json b/resources/profiles/Prusa/machine/Prusa MK3.5.json index 4438d3d478..2893862789 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3.5.json +++ b/resources/profiles/Prusa/machine/Prusa MK3.5.json @@ -8,5 +8,5 @@ "bed_model": "mk3.5_bed.stl", "bed_texture": "mk3.5.svg", "hotend_model": "", - "default_materials": "Prusa Generic PLA-CF @MK3.5;Prusa Generic PC @MK3.5;Prusa Generic PVA @MK3.5;Prusa Generic PA @MK3.5;Prusa Generic PA-CF @MK3.5;Prusa Generic ABS @MK3.5;Prusa Generic PLA @MK3.5;Prusa Generic PLA @MK3.5 0.6;Prusa Generic PLA @MK3.5 0.8;Prusa Generic PETG @MK3.5;Prusa Generic PETG @MK3.5 0.6;Prusa Generic PETG @MK3.5 0.8;Prusa Generic TPU @MK3.5;Prusa Generic ASA @MK3.5;" + "default_materials": "Generic PLA-CF @Prusa MK3.5;Generic PC @Prusa MK3.5;Generic PVA @Prusa MK3.5;Generic PA @Prusa MK3.5;Generic PA-CF @Prusa MK3.5;Generic ABS @Prusa MK3.5;Generic PLA @Prusa MK3.5;Generic PLA @Prusa MK3.5 0.6;Generic PLA @Prusa MK3.5 0.8;Generic PETG @Prusa MK3.5;Generic PETG @Prusa MK3.5 0.6;Generic PETG @Prusa MK3.5 0.8;Generic TPU @Prusa MK3.5;Generic ASA @Prusa MK3.5;" } diff --git a/resources/profiles/Prusa/machine/Prusa MK3S 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3S 0.25 nozzle.json index 28333578ff..31fd34848a 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S 0.25 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Prusa MK3S", "printer_variant": "0.25", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Speed @MK3S 0.25", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json index 5b86474541..036b901121 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Prusa MK3S", "printer_variant": "0.4", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.20mm Speed @MK3S 0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3S 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3S 0.6 nozzle.json index d94d5a0306..c3be2666b8 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S 0.6 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Prusa MK3S", "printer_variant": "0.6", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.30mm Quality @MK3S 0.6", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3S 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK3S 0.8 nozzle.json index 92450e95fe..ac85e1db4c 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S 0.8 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "Prusa MK3S", "printer_variant": "0.8", "default_filament_profile": [ - "Prusa Generic PLA" + "Generic PLA @Prusa" ], "default_print_profile": "0.15mm Detail @MK3S 0.8", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK3S.json b/resources/profiles/Prusa/machine/Prusa MK3S.json index d5323b5f1f..ad27bb59f6 100644 --- a/resources/profiles/Prusa/machine/Prusa MK3S.json +++ b/resources/profiles/Prusa/machine/Prusa MK3S.json @@ -8,5 +8,5 @@ "bed_model": "mk3_bed.stl", "bed_texture": "mk3.svg", "hotend_model": "", - "default_materials": "Prusa Generic ABS;Prusa Generic PLA;Prusa Generic PLA-CF;Prusa Generic PETG;Prusa Generic TPU;Prusa Generic ASA;Prusa Generic PC;Prusa Generic PVA;Prusa Generic PA;Prusa Generic PA-CF" + "default_materials": "Generic ABS @Prusa;Generic PLA @Prusa;Generic PLA-CF @Prusa;Generic PETG @Prusa;Generic TPU @Prusa;Generic ASA @Prusa;Generic PC @Prusa;Generic PVA @Prusa;Generic PA @Prusa;Generic PA-CF @Prusa" } diff --git a/resources/profiles/Prusa/machine/Prusa MK4 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4 0.25 nozzle.json index 81b75a5098..ad8bdc7676 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4 0.25 nozzle.json @@ -8,7 +8,7 @@ "gcode_flavor": "marlin2", "printer_model": "Prusa MK4", "default_filament_profile": [ - "Prusa Generic PLA @MK4" + "Generic PLA @Prusa MK4" ], "default_print_profile": "0.08mm Standard @MK4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK4 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4 0.4 nozzle.json index 89aa893547..417a953aaa 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4 0.4 nozzle.json @@ -8,7 +8,7 @@ "gcode_flavor": "marlin2", "printer_model": "Prusa MK4", "default_filament_profile": [ - "Prusa Generic PLA @MK4" + "Generic PLA @Prusa MK4" ], "default_print_profile": "0.20mm Standard @MK4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK4 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4 0.6 nozzle.json index f5991e42a9..af4b985d28 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4 0.6 nozzle.json @@ -8,7 +8,7 @@ "gcode_flavor": "marlin2", "printer_model": "Prusa MK4", "default_filament_profile": [ - "Prusa Generic PLA @MK4" + "Generic PLA @Prusa MK4" ], "default_print_profile": "0.32mm Standard @MK4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK4 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4 0.8 nozzle.json index 91e64bdbb1..f6a151581c 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4 0.8 nozzle.json @@ -8,7 +8,7 @@ "gcode_flavor": "marlin2", "printer_model": "Prusa MK4", "default_filament_profile": [ - "Prusa Generic PLA @MK4" + "Generic PLA @Prusa MK4" ], "default_print_profile": "0.40mm Standard @MK4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa MK4.json b/resources/profiles/Prusa/machine/Prusa MK4.json index dc14d1477c..a5a01b2f2e 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4.json +++ b/resources/profiles/Prusa/machine/Prusa MK4.json @@ -8,5 +8,5 @@ "bed_model": "mk4_bed.stl", "bed_texture": "mk4is.svg", "hotend_model": "", - "default_materials": "Prusa Generic PLA-CF;Prusa Generic PC;Prusa Generic PVA;Prusa Generic PA;Prusa Generic PA-CF;Prusa Generic ABS @MK4;Prusa Generic PLA @MK4;Prusa Generic PETG @MK4;Prusa Generic TPU @MK4;Prusa Generic ASA @MK4;" + "default_materials": "Generic PLA-CF @Prusa;Generic PC @Prusa;Generic PVA @Prusa;Generic PA @Prusa;Generic PA-CF @Prusa;Generic ABS @Prusa MK4;Generic PLA @Prusa MK4;Generic PETG @Prusa MK4;Generic TPU @Prusa MK4;Generic ASA @Prusa MK4;" } diff --git a/resources/profiles/Prusa/machine/Prusa MK4S 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4S 0.4 nozzle.json index e9824d1ed6..4f0a79173a 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S 0.4 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "8tL4SMT6bHqG2Ql1", "instantiation": "true", - "default_filament_profile": "Prusa Generic PLA @MK4S", + "default_filament_profile": "Generic PLA @Prusa MK4S", "default_print_profile": "0.20mm SPEED @MK4S 0.4", "nozzle_diameter": [ "0.4" diff --git a/resources/profiles/Prusa/machine/Prusa MK4S 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4S 0.6 nozzle.json index 0f454ca38f..22acff8dbe 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "m0ALiNI26ncFxsY2", "instantiation": "true", - "default_filament_profile": "Prusa Generic PLA @MK4S 0.6", + "default_filament_profile": "Generic PLA @Prusa MK4S 0.6", "default_print_profile": "0.25mm SPEED @MK4S 0.6", "max_layer_height": "0.40", "min_layer_height": "0.15", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4S 0.8 nozzle.json index d460517983..8799a148b4 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "rMzjWvSpqLsRK0gP", "instantiation": "true", - "default_filament_profile": "Prusa Generic PLA @MK4S 0.8", + "default_filament_profile": "Generic PLA @Prusa MK4S 0.8", "default_print_profile": "0.40mm QUALITY @MK4S 0.8", "deretraction_speed": "15", "max_layer_height": "0.6", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S HF.json b/resources/profiles/Prusa/machine/Prusa MK4S HF.json index b49fde2dde..088715b835 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S HF.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S HF.json @@ -3,7 +3,7 @@ "name": "Prusa MK4S HF", "bed_model": "mk4_bed.stl", "bed_texture": "mk4s.svg", - "default_materials": "Prusa Generic ABS @MK4S;Prusa Generic ASA @MK4S;Prusa Generic PETG @MK4S;Prusa Generic PLA @MK4S;Prusa Generic PLA Silk @MK4S;Prusa Generic TPU @MK4S", + "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S HF0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4S HF0.4 nozzle.json index abc0f71d50..f417814bbd 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S HF0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S HF0.4 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "zMYcZUEYGqFVXcPo", "instantiation": "true", - "default_filament_profile": "Prusa Generic PLA @MK4S HF0.4", + "default_filament_profile": "Generic PLA @Prusa MK4S HF0.4", "default_print_profile": "0.20mm SPEED @MK4S HF0.4", "machine_start_gcode": [ "M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle check\nM862.3 P \"MK4S\" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.1.3+7898\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X42 Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]==\"FLEX\"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X48 Z0.05 F8000 ; wipe, move close to the bed\nG0 X51 Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%" diff --git a/resources/profiles/Prusa/machine/Prusa MK4S HF0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa MK4S HF0.8 nozzle.json index dd6cf098d4..37ea0e1f7c 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S HF0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S HF0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "UygX2hdbWqKzY6Nn", "instantiation": "true", - "default_filament_profile": "Prusa Generic PLA @MK4S HF0.8", + "default_filament_profile": "Generic PLA @Prusa MK4S HF0.8", "default_print_profile": "0.40mm STRUCTURAL @MK4S HF0.8", "deretraction_speed": "15", "max_layer_height": "0.6", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S.json b/resources/profiles/Prusa/machine/Prusa MK4S.json index 18f669594a..2f6bd3e45f 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S.json @@ -3,7 +3,7 @@ "name": "Prusa MK4S", "bed_model": "mk4_bed.stl", "bed_texture": "mk4s.svg", - "default_materials": "Prusa Generic ABS @MK4S;Prusa Generic ASA @MK4S;Prusa Generic PETG @MK4S;Prusa Generic PLA @MK4S;Prusa Generic PLA Silk @MK4S;Prusa Generic TPU @MK4S", + "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.25 nozzle.json index 8a2ef4ecbb..e259346b94 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.25 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.15mm Speed @Prusa XL 0.25", "printer_variant": "0.25", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json index 7b6192e64c..afbd0b421c 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.20mm Speed @Prusa XL 0.3", "printer_variant": "0.3", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json index ae5add4f6a..20e8694545 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.20mm Speed @Prusa XL 0.4", "printer_variant": "0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json index 5d470138ca..d4dafc32a1 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.25mm Speed @Prusa XL 0.5", "printer_variant": "0.5", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json index 050b6b5106..4e43982b7d 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.32mm Speed @Prusa XL 0.6", "printer_variant": "0.6", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json index 3d64a2420d..2594b57060 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", + "default_filament_profile": "Generic PLA @Prusa XL", "default_print_profile": "0.40mm Quality @Prusa XL 0.8", "printer_variant": "0.8", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json index 42916b3a27..8a29e7dadf 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.15mm Speed @Prusa XL 5T 0.25", "printer_variant": "0.25", "max_layer_height": "0.15", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json index 7a07b277e2..d380fe5434 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.20mm Speed @Prusa XL 5T 0.3", "printer_variant": "0.3", "max_layer_height": "0.22", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json index 8642ac9ac7..3b29778f29 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.20mm Speed @Prusa XL 5T 0.4", "printer_variant": "0.4", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json index fe51f7f4f8..e795d8f8b0 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.25mm Speed @Prusa XL 5T 0.5", "printer_variant": "0.5", "max_layer_height": "0.32", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json index 1492cf6a6d..76569ca735 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.32mm Speed @Prusa XL 5T 0.6", "printer_variant": "0.6", "max_layer_height": "0.4", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json index 14277e59fe..d72bfeccad 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json @@ -7,7 +7,7 @@ "instantiation": "true", "gcode_flavor": "marlin2", "printer_model": "Prusa XL 5T", - "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_filament_profile": "Generic PLA @Prusa XL 5T", "default_print_profile": "0.40mm Quality @Prusa XL 5T 0.8", "printer_variant": "0.8", "max_layer_height": "0.6", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T.json b/resources/profiles/Prusa/machine/Prusa XL 5T.json index 20dfce5046..02e93a78b5 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T.json @@ -8,5 +8,5 @@ "bed_model": "Prusa XL_bed.stl", "bed_texture": "Prusa XL.svg", "hotend_model": "", - "default_materials": "Prusa Generic PLA @XL 5T;Prusament PLA @XL 5T;Prusament rPLA @XL 5T;Prusa Generic PETG @XL 5T;Prusament PETG @XL 5T;Prusa Generic ABS @XL 5T;Prusament ASA @XL 5T;Prusament PC Blend @XL 5T;Prusament PC-CF @XL 5T;Prusament PVB @XL 5T;Prusament PA-CF @XL 5T;Prusa Generic FLEX @XL 5T" + "default_materials": "Generic PLA @Prusa XL 5T;Prusament PLA @XL 5T;Prusament rPLA @XL 5T;Generic PETG @Prusa XL 5T;Prusament PETG @XL 5T;Generic ABS @Prusa XL 5T;Prusament ASA @XL 5T;Prusament PC Blend @XL 5T;Prusament PC-CF @XL 5T;Prusament PVB @XL 5T;Prusament PA-CF @XL 5T;Generic FLEX @Prusa XL 5T" } diff --git a/resources/profiles/Prusa/machine/Prusa XL.json b/resources/profiles/Prusa/machine/Prusa XL.json index 9a7ba66066..17cc16e486 100644 --- a/resources/profiles/Prusa/machine/Prusa XL.json +++ b/resources/profiles/Prusa/machine/Prusa XL.json @@ -8,5 +8,5 @@ "bed_model": "Prusa XL_bed.stl", "bed_texture": "Prusa XL.svg", "hotend_model": "", - "default_materials": "Prusa Generic PLA @XL;Prusament PLA @XL;Prusament rPLA @XL;Prusa Generic PETG @XL;Prusament PETG @XL;Prusa Generic ABS @XL;Prusament ASA @XL;Prusament PC Blend @XL;Prusament PC-CF @XL;Prusament PVB @XL;Prusament PA-CF @XL;Prusa Generic FLEX @XL" + "default_materials": "Generic PLA @Prusa XL;Prusament PLA @XL;Prusament rPLA @XL;Generic PETG @Prusa XL;Prusament PETG @XL;Generic ABS @Prusa XL;Prusament ASA @XL;Prusament PC Blend @XL;Prusament PC-CF @XL;Prusament PVB @XL;Prusament PA-CF @XL;Generic FLEX @Prusa XL" } diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json b/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json index daec78bc4e..0cbde13d89 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common_mk4s.json @@ -10,7 +10,7 @@ "change_filament_gcode": [ "" ], - "default_filament_profile": "Prusa Generic PLA @MK4S", + "default_filament_profile": "Generic PLA @Prusa MK4S", "default_print_profile": "0.20mm SPEED @MK4IS 0.4", "deretraction_speed": "25", "extruder_clearance_height_to_lid": "220", diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index ecceff5a8a..f49413601a 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -1,6 +1,6 @@ { "name": "Qidi", - "version": "02.04.00.11", + "version": "02.04.00.12", "force_update": "0", "description": "Qidi configurations", "machine_model_list": [ @@ -1753,8 +1753,8 @@ "sub_path": "filament/QIDI ABS-GF25.json" }, { - "name": "Qidi Generic ABS", - "sub_path": "filament/Qidi Generic ABS.json" + "name": "Generic ABS @Qidi", + "sub_path": "filament/Generic ABS @Qidi.json" }, { "name": "Qidi PC-ABS-FR", @@ -1769,8 +1769,8 @@ "sub_path": "filament/Qidi ASA-Aero.json" }, { - "name": "Qidi Generic ASA", - "sub_path": "filament/Qidi Generic ASA.json" + "name": "Generic ASA @Qidi", + "sub_path": "filament/Generic ASA @Qidi.json" }, { "name": "QIDI PA-Ultra", @@ -1817,16 +1817,16 @@ "sub_path": "filament/QIDI UltraPA-CF25.json" }, { - "name": "Qidi Generic PA", - "sub_path": "filament/Qidi Generic PA.json" + "name": "Generic PA @Qidi", + "sub_path": "filament/Generic PA @Qidi.json" }, { - "name": "Qidi Generic PA-CF", - "sub_path": "filament/Qidi Generic PA-CF.json" + "name": "Generic PA-CF @Qidi", + "sub_path": "filament/Generic PA-CF @Qidi.json" }, { - "name": "Qidi Generic PC", - "sub_path": "filament/Qidi Generic PC.json" + "name": "Generic PC @Qidi", + "sub_path": "filament/Generic PC @Qidi.json" }, { "name": "Bambu PETG", @@ -1861,12 +1861,12 @@ "sub_path": "filament/QIDI PETG-GF.json" }, { - "name": "Qidi Generic PETG", - "sub_path": "filament/Qidi Generic PETG.json" + "name": "Generic PETG @Qidi", + "sub_path": "filament/Generic PETG @Qidi.json" }, { - "name": "Qidi Generic PETG-CF", - "sub_path": "filament/Qidi Generic PETG-CF.json" + "name": "Generic PETG-CF @Qidi", + "sub_path": "filament/Generic PETG-CF @Qidi.json" }, { "name": "Tinmorry PETG-ECO", @@ -1917,28 +1917,28 @@ "sub_path": "filament/QIDI WOOD Rapido.json" }, { - "name": "Qidi Generic PLA", - "sub_path": "filament/Qidi Generic PLA.json" + "name": "Generic PLA @Qidi", + "sub_path": "filament/Generic PLA @Qidi.json" }, { - "name": "Qidi Generic PLA Silk", - "sub_path": "filament/Qidi Generic PLA Silk.json" + "name": "Generic PLA Silk @Qidi", + "sub_path": "filament/Generic PLA Silk @Qidi.json" }, { - "name": "Qidi Generic PLA+", - "sub_path": "filament/Qidi Generic PLA+.json" + "name": "Generic PLA+ @Qidi", + "sub_path": "filament/Generic PLA+ @Qidi.json" }, { - "name": "Qidi Generic PLA-CF", - "sub_path": "filament/Qidi Generic PLA-CF.json" + "name": "Generic PLA-CF @Qidi", + "sub_path": "filament/Generic PLA-CF @Qidi.json" }, { "name": "Qidi PLA-CF", "sub_path": "filament/Qidi PLA-CF.json" }, { - "name": "Qidi Generic PVA", - "sub_path": "filament/Qidi Generic PVA.json" + "name": "Generic PVA @Qidi", + "sub_path": "filament/Generic PVA @Qidi.json" }, { "name": "QIDI PEBA 95A", @@ -1953,12 +1953,12 @@ "sub_path": "filament/QIDI TPU-GF.json" }, { - "name": "Qidi Generic TPU", - "sub_path": "filament/Qidi Generic TPU.json" + "name": "Generic TPU @Qidi", + "sub_path": "filament/Generic TPU @Qidi.json" }, { - "name": "Qidi Generic TPU 95A", - "sub_path": "filament/Qidi Generic TPU 95A.json" + "name": "Generic TPU 95A @Qidi", + "sub_path": "filament/Generic TPU 95A @Qidi.json" }, { "name": "Qidi TPU 95A-HF", @@ -4553,48 +4553,48 @@ "sub_path": "filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic ABS @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic ABS @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic ABS @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic ABS @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle.json" + "name": "Generic ABS @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle.json" + "name": "Generic ABS @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic ABS @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic ABS @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic ABS @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic ABS @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle.json" + "name": "Generic ABS @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json" }, { "name": "Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle", @@ -4673,48 +4673,48 @@ "sub_path": "filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic ASA @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic ASA @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic ASA @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic ASA @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle.json" + "name": "Generic ASA @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle.json" + "name": "Generic ASA @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic ASA @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic ASA @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic ASA @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic ASA @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle.json" + "name": "Generic ASA @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json" }, { "name": "QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle", @@ -4981,44 +4981,44 @@ "sub_path": "filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PC @0.2 nozzle", - "sub_path": "filament/Qidi Generic PC @0.2 nozzle.json" + "name": "Generic PC @Qidi 0.2 nozzle", + "sub_path": "filament/Generic PC @Qidi 0.2 nozzle.json" }, { - "name": "Qidi Generic PC @0.8 nozzle", - "sub_path": "filament/Qidi Generic PC @0.8 nozzle.json" + "name": "Generic PC @Qidi 0.8 nozzle", + "sub_path": "filament/Generic PC @Qidi 0.8 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic PC @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PC @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic PC @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PC @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic PC @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PC @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic PC @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PC @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic PC @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PC @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PC @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PC @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic PC @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PC @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic PC @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PC @Qidi X-Plus 4 0.8 nozzle.json" }, { "name": "Bambu PETG @0.2 nozzle", @@ -5333,48 +5333,48 @@ "sub_path": "filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic PETG @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic PETG @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic PETG @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic PETG @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle.json" + "name": "Generic PETG @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle.json" + "name": "Generic PETG @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic PETG @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PETG @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic PETG @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic PETG @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle.json" + "name": "Generic PETG @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json" }, { "name": "Bambu PLA @0.2 nozzle", @@ -5825,148 +5825,148 @@ "sub_path": "filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic PLA @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic PLA @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic PLA @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic PLA @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle.json" + "name": "Generic PLA @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle.json" + "name": "Generic PLA @Qidi X-Max 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle.json" + "name": "Generic PLA @Qidi X-Max 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic PLA @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle.json" + "name": "Generic PLA @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle.json" + "name": "Generic PLA @Qidi X-Smart 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle.json" + "name": "Generic PLA @Qidi X-Smart 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json" + "name": "Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json" + "name": "Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json" + "name": "Generic PLA+ @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json" + "name": "Generic PLA+ @Qidi X-Max 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json" + "name": "Generic PLA+ @Qidi X-Max 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json" + "name": "Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json" + "name": "Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json" + "name": "Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json" }, { "name": "QIDI PLA-CF @0.6 nozzle", @@ -6057,20 +6057,20 @@ "sub_path": "filament/QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle.json" + "name": "Generic TPU @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json" }, { - "name": "Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic TPU @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json" + "name": "Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json" }, { - "name": "Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json" }, { "name": "Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle", @@ -6089,20 +6089,20 @@ "sub_path": "filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.8 nozzle.json" }, { - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json" + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json" }, { - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json" + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json" }, { - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json" + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json" }, { - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json" + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json" }, { "name": "fdm_filament_x5_common", diff --git a/resources/profiles/Qidi/filament/Bambu ABS @0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @0.2 nozzle.json index 5a6b2f07b2..da2184d76f 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "UWRDko6WCvXczl33", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @0.6 nozzle.json index 1a6930ff43..933dddacde 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "LUEO7LVrgko3oXzg", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @0.8 nozzle.json index 9ceb5904ff..42c415e15b 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "NKhfqNQIcfKQBYAK", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json index c773f1f723..31d428337d 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "sZn12as9SQDNFDO3", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json index 1930af3ebd..3fb7ac7709 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "coopc46hemdV9QIv", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json index 2560aa37f1..09d445c402 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "qvYl7pfvtgF2y25O", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json index a27d0bbfb2..b5d438e789 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "AzHGQIE0dGXjOhqG", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json index bddac012dc..eb82b82579 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "CoYm8sbAVmpmJNIV", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json index f6f867f6b6..748e5e2919 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "FnQb4cNqORpQ3Wkq", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json index 35ed106798..8b0a54e060 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "94qvrRFOKOACTK2g", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json index 9fd1b1d878..077da196cf 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu ABS", "from": "system", "setting_id": "ehJ163zLubzIrWzf", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Bambu ABS.json b/resources/profiles/Qidi/filament/Bambu ABS.json index bc8e84d0d0..ee4586555a 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS.json +++ b/resources/profiles/Qidi/filament/Bambu ABS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "aZylcH8GeCJOqtTy", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @0.2 nozzle.json index c1b4ec3fc1..ba65e6a896 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "cZhyWv8zbkM3fgAS", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -48,7 +48,6 @@ "compatible_printers": [ "Qidi X-Smart 3 0.2 nozzle", "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle", - "Qidi Q1 Pro 0.2 nozzle" + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/Bambu PETG @0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @0.6 nozzle.json index e97ce167f1..984bf0ca94 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "PfIdpsKf0Xw5admE", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @0.8 nozzle.json index ca2475da91..a5e6576981 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "czi4981YiirKP6Yy", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json index 123128a303..8745f9b7f4 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "1BV8aedNHRa3h7rp", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json index 2b3f40032f..ea82a7a259 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "eNHYNrSKn90P4GdZ", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json index 5c2b0ccecb..274d012a16 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "VU3PW2x6pfQ9Ayqo", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json index b3b16a0ef2..497cdc3212 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "2ezevTOIexxkTBJ2", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json index 549a7c4055..855bdcc901 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "2vTNJwgFvUFq7oS9", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json index 63080da56e..5dce4c4998 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "Q5ToVl9Yb4GGoNXC", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json index 0ce417dc1d..77e61eb8b4 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "XpLJtB1WhRyb1C75", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json index 89e531f65e..ef8ff48a3c 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PETG", "from": "system", "setting_id": "PiYLOckPVRFKFTS6", - "filament_id": "GFB99", + "filament_id": "OFLYDngx", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/Bambu PETG.json b/resources/profiles/Qidi/filament/Bambu PETG.json index 70d61730fa..8f69df52f3 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG.json +++ b/resources/profiles/Qidi/filament/Bambu PETG.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "5ZkReXpCOi19xuJg", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @0.2 nozzle.json index 95434aff3a..39c01a3e51 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "xY62JrDaYjjSb3lh", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @0.6 nozzle.json index ea5ef9b75d..6a5dc5dc2f 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "HjjvZoWwpjZ2gwDO", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @0.8 nozzle.json index 3d978affa5..a6c420c613 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "5dZqeodmshu33k4e", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json index 5d51f1eafc..2c700d3b7b 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "6kHEv9BjLlJi4E9T", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json index 9451f422a2..83e71e07f2 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "G28Bah0iOaahWlPE", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json index 3e93b99515..afa945e307 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "ioH4lDHLbCw65TIg", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json index 02f5bab7f6..bdfdf0e47a 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "oAUHAhSZkmCjhJEP", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json index 9677e7fa31..cb39244927 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "mT6I8HUJsMgYCjb4", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json index d9a8aa89ab..26a45e77d9 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "5sr5ABQQzrYFUxtk", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json index c2611c3679..6d77933fc8 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "CNzhUsHWT2FOW2Qe", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json index dc770d61eb..df8c6b8a5e 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Bambu PLA", "from": "system", "setting_id": "8Mosuf8MExl0g3Tz", - "filament_id": "GFB99", + "filament_id": "OF1dpPrW", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Bambu PLA.json b/resources/profiles/Qidi/filament/Bambu PLA.json index ebdf2423d6..4061aca197 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA.json +++ b/resources/profiles/Qidi/filament/Bambu PLA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "lweaPojzNVU2FJnO", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json index 2e6b6d9089..2ca51212e7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi Q1 Pro 0.2 nozzle;Qidi Generic ABS Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "BNOS859dmAw7GIZp", - "filament_id": "GFB99", + "setting_id": "IQDYfIQsv6WlnA3z", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json similarity index 63% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json index 11fb8e0fad..7c22168a8e 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle;Qidi Generic ABS Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "XfuwzYZzTauK0ADk", - "filament_id": "GFB99", + "setting_id": "YS0ov4dEWAJhRRvk", + "filament_id": "OFY9muEs", "instantiation": "true", "fan_max_speed": [ "80" @@ -13,7 +14,7 @@ "10" ], "filament_settings_id": [ - "Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle" + "Generic ABS @Qidi Q1 Pro 0.4 nozzle" ], "nozzle_temperature": [ "250" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json index 05b680a74a..b16d7783b2 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi Q1 Pro 0.6 nozzle;Qidi Generic ABS Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "ziWmRGMYOpjc7Hpo", - "filament_id": "GFB99", + "setting_id": "LQTfTgV2MBEm6DDD", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json index b9e1f23232..61f33e870a 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi Q1 Pro 0.8 nozzle;Qidi Generic ABS Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "lLXYczQE4YfPiyDO", - "filament_id": "GFB99", + "setting_id": "ZWOlrWQQwvsDV8xa", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json index 576f73e044..fcb9b9f547 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Max 3 0.2 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Max 3 0.2 nozzle;Qidi Generic ABS Qidi X-Max 3 0.2 nozzle", "from": "system", - "setting_id": "o62pcRmFnj2mIXhf", - "filament_id": "GFB99", + "setting_id": "v7w2dLJ1MtUjvy1l", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json index 10d886d12e..c52716ea4b 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Plus 3 0.2 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Plus 3 0.2 nozzle;Qidi Generic ABS Qidi X-Plus 3 0.2 nozzle", "from": "system", - "setting_id": "UBWjZCCGQrpgmlpa", - "filament_id": "GFB99", + "setting_id": "vH2jlch11zfDBUPP", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json index 7bb68abc19..521521c0fe 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Plus 4 0.2 nozzle;Qidi Generic ABS Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "qB4eDc7UuoKv5m2U", - "filament_id": "GFB99", + "setting_id": "0bwmAx9OQYm5MwVE", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json index 6da9142823..b5bbbdbf47 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle;Qidi Generic ABS Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "N3Ca9PN8nDnvhmak", - "filament_id": "GFB99", + "setting_id": "Y3yAythmKXxr76Pg", + "filament_id": "OFY9muEs", "instantiation": "true", "fan_max_speed": [ "80" @@ -13,7 +14,7 @@ "10" ], "filament_settings_id": [ - "Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle" + "Generic ABS @Qidi X-Plus 4 0.4 nozzle" ], "pressure_advance": [ "0.03" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json index d499ccf490..27ef9809e8 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Plus 4 0.6 nozzle;Qidi Generic ABS Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "UkNcVB3bJZqLN3fu", - "filament_id": "GFB99", + "setting_id": "Bt8ySpZn6WFWC00A", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json similarity index 62% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json index 0c76ed7e66..3dcc3d5889 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Plus 4 0.8 nozzle;Qidi Generic ABS Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "uK0zY0a6MpcFTZWr", - "filament_id": "GFB99", + "setting_id": "7j3bweJutseUaoZQ", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json index 06b75195a8..7503ba737d 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle", - "inherits": "Qidi Generic ABS", + "name": "Generic ABS @Qidi X-Smart 3 0.2 nozzle", + "inherits": "Generic ABS @Qidi", + "renamed_from": "Qidi Generic ABS @Qidi X-Smart 3 0.2 nozzle;Qidi Generic ABS Qidi X-Smart 3 0.2 nozzle", "from": "system", - "setting_id": "veNBpzcNYa6TAMry", - "filament_id": "GFB99", + "setting_id": "StJpaMQKORYm7i94", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS.json b/resources/profiles/Qidi/filament/Generic ABS @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic ABS.json rename to resources/profiles/Qidi/filament/Generic ABS @Qidi.json index f0ced9aabb..76a01a3fa6 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS.json +++ b/resources/profiles/Qidi/filament/Generic ABS @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ABS", + "name": "Generic ABS @Qidi", "inherits": "fdm_filament_abs", + "renamed_from": "Qidi Generic ABS", "from": "system", - "setting_id": "wcv9ZpNwvZ0ZcWKw", - "filament_id": "GFB99", + "setting_id": "iO5utPsBKAo7cHop", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json similarity index 60% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json index 7e1c6c50f4..749dddc689 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi Q1 Pro 0.2 nozzle;Qidi Generic ASA Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "OLkg128vxsk27w03", - "filament_id": "GFB99", + "setting_id": "3LUibDTlv799Gy6r", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json similarity index 68% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json index 4e79e3b9d4..f8ef61a4aa 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle;Qidi Generic ASA Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "pGOT3C5eREsHRylS", - "filament_id": "GFB99", + "setting_id": "EtjXhHzpmShNgIqj", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "16" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle" + "Generic ASA @Qidi Q1 Pro 0.4 nozzle" ], "nozzle_temperature": [ "270" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json similarity index 68% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json index 95c9fa660c..cef5172ed5 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle;Qidi Generic ASA Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "QRlzPtO4mqLKcdws", - "filament_id": "GFB99", + "setting_id": "5hlUjx0YAFTR9TYr", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "13" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi Q1 Pro 0.6 nozzle" + "Generic ASA @Qidi Q1 Pro 0.6 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json similarity index 68% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json index 81a1153f11..93b389d444 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle;Qidi Generic ASA Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "vLLCDxhI2GR76M1p", - "filament_id": "GFB99", + "setting_id": "oArSgOFOlXLGkueW", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "13" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi Q1 Pro 0.8 nozzle" + "Generic ASA @Qidi Q1 Pro 0.8 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json index f68bcca3f0..38b0088adb 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Max 3 0.2 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Max 3 0.2 nozzle;Qidi Generic ASA Qidi X-Max 3 0.2 nozzle", "from": "system", - "setting_id": "6pY4I5kAFdSYPOte", - "filament_id": "GFB99", + "setting_id": "LfT1OaNir4KZevUP", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json index 4b2cbc742d..c0e92e8f7c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Plus 3 0.2 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Plus 3 0.2 nozzle;Qidi Generic ASA Qidi X-Plus 3 0.2 nozzle", "from": "system", - "setting_id": "A85OmyjS63OgZa0V", - "filament_id": "GFB99", + "setting_id": "S2aFIcoyiIsZ5TR8", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json index e070398a5e..1f7ec6918c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Plus 4 0.2 nozzle;Qidi Generic ASA Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "1CBWjstSdMJLJWuv", - "filament_id": "GFB99", + "setting_id": "aYowi3jA3nUcr5e8", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json similarity index 67% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json index 28a74dadb1..1a42a6d075 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle;Qidi Generic ASA Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "UIsup1TGWKg0Fq72", - "filament_id": "GFB99", + "setting_id": "Qaogxqa5Zw7i7n0a", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "16" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle" + "Generic ASA @Qidi X-Plus 4 0.4 nozzle" ], "nozzle_temperature": [ "270" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json similarity index 67% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json index 422c63c216..6700a02c94 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle;Qidi Generic ASA Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "HQupWXd5yKceVrm4", - "filament_id": "GFB99", + "setting_id": "aP2WrJLkjpGFtt8I", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "13" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi X-Plus 4 0.6 nozzle" + "Generic ASA @Qidi X-Plus 4 0.6 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json similarity index 67% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json index e24a3519bf..3a1c923505 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle;Qidi Generic ASA Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "R6FcpVRhnSp0i8bK", - "filament_id": "GFB99", + "setting_id": "mx6C1Q73i0B7gpag", + "filament_id": "OFLPAxz3", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +20,7 @@ "13" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi X-Plus 4 0.8 nozzle" + "Generic ASA @Qidi X-Plus 4 0.8 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json index 2f3fa6a9d8..437ed6c7d8 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle", - "inherits": "Qidi Generic ASA", + "name": "Generic ASA @Qidi X-Smart 3 0.2 nozzle", + "inherits": "Generic ASA @Qidi", + "renamed_from": "Qidi Generic ASA @Qidi X-Smart 3 0.2 nozzle;Qidi Generic ASA Qidi X-Smart 3 0.2 nozzle", "from": "system", - "setting_id": "sE2DGjOmcjRuuh0z", - "filament_id": "GFB99", + "setting_id": "6jbwOYmS2ypqTshH", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/Qidi Generic ASA.json b/resources/profiles/Qidi/filament/Generic ASA @Qidi.json similarity index 87% rename from resources/profiles/Qidi/filament/Qidi Generic ASA.json rename to resources/profiles/Qidi/filament/Generic ASA @Qidi.json index e7878476b5..6057fbea4a 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ASA.json +++ b/resources/profiles/Qidi/filament/Generic ASA @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic ASA", + "name": "Generic ASA @Qidi", "inherits": "fdm_filament_asa", + "renamed_from": "Qidi Generic ASA", "from": "system", - "setting_id": "WTOEo36YTIFcXDaI", - "filament_id": "GFB99", + "setting_id": "IO7E03K3t2sySCAM", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_type": [ "ASA" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PA.json b/resources/profiles/Qidi/filament/Generic PA @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic PA.json rename to resources/profiles/Qidi/filament/Generic PA @Qidi.json index 4e1f0d20ba..c27771e405 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PA.json +++ b/resources/profiles/Qidi/filament/Generic PA @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PA", + "name": "Generic PA @Qidi", "inherits": "fdm_filament_pa", + "renamed_from": "Qidi Generic PA", "from": "system", - "setting_id": "S6S5nM9zZbNCyhya", - "filament_id": "GFN99", + "setting_id": "la9e4F5ns9eWv7Lg", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_type": [ "PA" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json b/resources/profiles/Qidi/filament/Generic PA-CF @Qidi.json similarity index 90% rename from resources/profiles/Qidi/filament/Qidi Generic PA-CF.json rename to resources/profiles/Qidi/filament/Generic PA-CF @Qidi.json index 880a914309..bdf39e1630 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PA-CF.json +++ b/resources/profiles/Qidi/filament/Generic PA-CF @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PA-CF", + "name": "Generic PA-CF @Qidi", "inherits": "fdm_filament_pa", + "renamed_from": "Qidi Generic PA-CF", "from": "system", - "setting_id": "aOVEazsct9L3eD2u", - "filament_id": "GFN98", + "setting_id": "qLuGt33iENH6QTjv", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PC @0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi 0.2 nozzle.json index 5b7bbeb84a..8573598189 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @0.2 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi 0.2 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @0.2 nozzle;Qidi Generic PC 0.2 nozzle", "from": "system", - "setting_id": "i4Nt0riiDwptxOIe", - "filament_id": "GFC99", + "setting_id": "Ei2Izb38mh4A4wgw", + "filament_id": "OFLakOUI", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi 0.8 nozzle.json similarity index 51% rename from resources/profiles/Qidi/filament/Qidi Generic PC @0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi 0.8 nozzle.json index d7a15d0bc0..491f5917d3 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @0.8 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi 0.8 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @0.8 nozzle;Qidi Generic PC 0.8 nozzle", "from": "system", - "setting_id": "8mJysYABmQTBlWLw", - "filament_id": "GFC99", + "setting_id": "marM5nqtpl08NP9b", + "filament_id": "OFLakOUI", "instantiation": "true", "pressure_advance": [ "0.008" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.2 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.2 nozzle.json index 1e6313bc34..fb85345598 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PC Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "be2KpgVjm4APQtrt", - "filament_id": "GFC99", + "setting_id": "5sAcMTaVI41PCs3n", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.4 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.4 nozzle.json index 0aee03bd65..b7057b6c2f 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PC Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "9aGpKzNCjXDcfmqr", - "filament_id": "GFC99", + "setting_id": "QmaeYzkbcmKJCJSv", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.6 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.6 nozzle.json index 5b348523ab..56a5a8e132 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PC Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "1BjBpSDoLs6nTHeo", - "filament_id": "GFC99", + "setting_id": "heIlhCMIZ9MXeDHE", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.8 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.8 nozzle.json index a551323664..13f13ea759 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PC Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "8ptIGtXeMSwVqkVB", - "filament_id": "GFC99", + "setting_id": "JlztE3hk1LB23o4h", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.2 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.2 nozzle.json index 8dcb9f5e4e..29c7c1658b 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi X-Plus 4 0.2 nozzle;Qidi Generic PC Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "IQCYG5yZFPsvTuHY", - "filament_id": "GFC99", + "setting_id": "2eI2cXfCN6vlk6UV", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.4 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.4 nozzle.json index 297315300a..ba52effd22 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PC Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "TPbG7zlsPowdKEVw", - "filament_id": "GFC99", + "setting_id": "kGhUT0TAXku3by9D", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.6 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.6 nozzle.json index 32c4f84112..e3f9c180ba 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi X-Plus 4 0.6 nozzle;Qidi Generic PC Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "mzsetSq0CzwqbGnP", - "filament_id": "GFC99", + "setting_id": "HzAwEYvedOi3GRMY", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.8 nozzle.json similarity index 50% rename from resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.8 nozzle.json index e3b4be943f..e6c8d1586d 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic PC", + "name": "Generic PC @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic PC @Qidi", + "renamed_from": "Qidi Generic PC @Qidi X-Plus 4 0.8 nozzle;Qidi Generic PC Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "wlnm88gEKcNzvx7W", - "filament_id": "GFC99", + "setting_id": "iq1u1nPMi9GT31p9", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PC.json b/resources/profiles/Qidi/filament/Generic PC @Qidi.json similarity index 88% rename from resources/profiles/Qidi/filament/Qidi Generic PC.json rename to resources/profiles/Qidi/filament/Generic PC @Qidi.json index a0a745246e..c69f050f5c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PC.json +++ b/resources/profiles/Qidi/filament/Generic PC @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PC", + "name": "Generic PC @Qidi", "inherits": "fdm_filament_pc", + "renamed_from": "Qidi Generic PC", "from": "system", - "setting_id": "wd4PrqXE2um46ueW", - "filament_id": "GFC99", + "setting_id": "m1fBauBqqvKdIAAr", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_type": [ "PC" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json index f40180cc1f..02004cab28 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PETG Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "GfDMSO3DjLxfMnUc", - "filament_id": "GFG99", + "setting_id": "D2QwO7VczuscejBF", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json similarity index 68% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json index 6d920bb982..10a2b2f080 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PETG Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "SzQLWO8poDxEU0ez", - "filament_id": "GFB99", + "setting_id": "GeV4szn47hD1UedT", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -22,7 +23,7 @@ "10" ], "filament_settings_id": [ - "Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle" + "Generic PETG @Qidi Q1 Pro 0.4 nozzle" ], "overhang_fan_speed": [ "90" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json index 70b8be014e..995b79eb68 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PETG Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "yyfoSMlQsvkmUGR5", - "filament_id": "GFG99", + "setting_id": "hwVzOmBJL0wnhzVj", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json index 69c74caccb..f1d1298d8d 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PETG Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "ogHITGUcn1r2bHXc", - "filament_id": "GFG99", + "setting_id": "QKyHd7rHutldls1y", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json index 1a55f38280..9eb15c7a9c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Max 3 0.2 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Max 3 0.2 nozzle;Qidi Generic PETG Qidi X-Max 3 0.2 nozzle", "from": "system", - "setting_id": "CVyv3PHeZaSGmD6E", - "filament_id": "GFG99", + "setting_id": "afJiGzHpK1vEgb0S", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json index e820fe24b2..7994ab710f 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Plus 3 0.2 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Plus 3 0.2 nozzle;Qidi Generic PETG Qidi X-Plus 3 0.2 nozzle", "from": "system", - "setting_id": "tNl6q6MadSoFZ3EH", - "filament_id": "GFG99", + "setting_id": "grlFOKGDoAo075zz", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json index 289b97e7e8..f8de246245 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Plus 4 0.2 nozzle;Qidi Generic PETG Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "1xGw8fYiSf6YzBnk", - "filament_id": "GFG99", + "setting_id": "hb1v0ytZ8KFm0KeO", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json similarity index 68% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json index 3f3fdb2dae..0419f9669d 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PETG Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "MMSCic1l0b3e5qe3", - "filament_id": "GFB99", + "setting_id": "V8YvTFXnlItPw97m", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -25,7 +26,7 @@ "10" ], "filament_settings_id": [ - "Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle" + "Generic PETG @Qidi X-Plus 4 0.4 nozzle" ], "overhang_fan_speed": [ "90" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json index 403177c5d7..f4a3448c63 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Plus 4 0.6 nozzle;Qidi Generic PETG Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "KD0ABMKuQunww07p", - "filament_id": "GFG99", + "setting_id": "X9FiUfQBLABTKIKO", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json similarity index 71% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json index adaf03f5de..6bc15f85a2 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle;Qidi Generic PETG Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "ZFkH9oLkRWDVovLu", - "filament_id": "GFG99", + "setting_id": "5XdW6h65aMPX61o9", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json similarity index 70% rename from resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json index 2afbdbde97..ac5c820791 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle", - "inherits": "Qidi Generic PETG", + "name": "Generic PETG @Qidi X-Smart 3 0.2 nozzle", + "inherits": "Generic PETG @Qidi", + "renamed_from": "Qidi Generic PETG @Qidi X-Smart 3 0.2 nozzle;Qidi Generic PETG Qidi X-Smart 3 0.2 nozzle", "from": "system", - "setting_id": "ixR5wIrehSmn8Inz", - "filament_id": "GFG99", + "setting_id": "MynfKhfKlXwFaVOJ", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG.json b/resources/profiles/Qidi/filament/Generic PETG @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic PETG.json rename to resources/profiles/Qidi/filament/Generic PETG @Qidi.json index 993b9764ba..b4747dc9df 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG.json +++ b/resources/profiles/Qidi/filament/Generic PETG @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG", + "name": "Generic PETG @Qidi", "inherits": "fdm_filament_pet", + "renamed_from": "Qidi Generic PETG", "from": "system", - "setting_id": "Yk3w834THlnAS3jr", - "filament_id": "GFG99", + "setting_id": "zRfo4sbJ3auEJtiC", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json b/resources/profiles/Qidi/filament/Generic PETG-CF @Qidi.json similarity index 92% rename from resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json rename to resources/profiles/Qidi/filament/Generic PETG-CF @Qidi.json index 3a668823ca..fbe5386405 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json +++ b/resources/profiles/Qidi/filament/Generic PETG-CF @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PETG-CF", + "name": "Generic PETG-CF @Qidi", "inherits": "fdm_filament_pet", + "renamed_from": "Qidi Generic PETG-CF", "from": "system", - "setting_id": "kjmXKWCMonhYhy8U", - "filament_id": "GFG98", + "setting_id": "1ehKRzcekplfoFdJ", + "filament_id": "OFoYSJKi", "instantiation": "true", "temperature_vitrification": [ "75" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json index 2492a8ea78..4c0c00e6ba 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PLA Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "6e0DHBzRkQvU0419", - "filament_id": "GFL99", + "setting_id": "2TNFziuyxg2X4zgY", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json similarity index 55% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json index 4569902a19..5b49e8560e 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -1,16 +1,17 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PLA Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "eCR3lbTRdkYcMZgl", - "filament_id": "GFB99", + "setting_id": "PNCPMC8uMY9h5SZr", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_max_volumetric_speed": [ "14" ], "filament_settings_id": [ - "Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle" + "Generic PLA @Qidi Q1 Pro 0.4 nozzle" ], "full_fan_speed_layer": [ "3" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json index 7aa69c184d..442f46e559 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PLA Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "JSQupeTNYtzE8l6q", - "filament_id": "GFL99", + "setting_id": "23t94qXoDPSdi7fS", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json index 017b42a781..d915ed03a8 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PLA Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "n4rp1Pooux07hwx1", - "filament_id": "GFL99", + "setting_id": "aWIicFWyadhnYKfF", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json index 46523499ee..52ee24c470 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi X-Max 3 0.2 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle;Qidi Generic PLA Qidi X-Max 3 0.2 nozzle", "from": "system", - "setting_id": "P57Nm7E7KTnHMov0", - "filament_id": "GFL99", + "setting_id": "VhP4JYzAah2X1Kr3", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json new file mode 100644 index 0000000000..76521556dd --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Max 3 0.6 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle;Qidi Generic PLA Qidi X-Max 3 0.6 nozzle", + "from": "system", + "setting_id": "uhzFvazl2rWd0YN3", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json new file mode 100644 index 0000000000..4246b7fc19 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Max 3 0.8 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle;Qidi Generic PLA Qidi X-Max 3 0.8 nozzle", + "from": "system", + "setting_id": "t7bkbAgWCK7ObiK4", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json index 96d49de862..7508b21dc3 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA @Qidi X-Plus 3 0.2 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle;Qidi Generic PLA Qidi X-Plus 3 0.2 nozzle", "from": "system", - "setting_id": "WwUGv09h9thWkzMf", - "filament_id": "GFL99", + "setting_id": "1iUDRQmhNsb4Tlag", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json new file mode 100644 index 0000000000..fcdcb48de7 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Plus 3 0.6 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle;Qidi Generic PLA Qidi X-Plus 3 0.6 nozzle", + "from": "system", + "setting_id": "qbT3T9cRjqK7aO4M", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Plus 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json new file mode 100644 index 0000000000..d42c838771 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Plus 3 0.8 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle;Qidi Generic PLA Qidi X-Plus 3 0.8 nozzle", + "from": "system", + "setting_id": "dMVLTDJInWMo2fMP", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Plus 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json index b9c1fc36d1..8124fb26b0 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle;Qidi Generic PLA Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "M0JCDyI7icGyqs43", - "filament_id": "GFL99", + "setting_id": "4OyCs9habQtGhoot", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json similarity index 54% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json index 922bef83eb..90d822953f 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PLA Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "tRztgu06hBi9IxSE", - "filament_id": "GFB99", + "setting_id": "SU5XqpfPO5g87dfL", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_max_volumetric_speed": [ "14" @@ -13,7 +14,7 @@ "0.034" ], "filament_settings_id": [ - "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle" + "Generic PLA @Qidi X-Plus 4 0.4 nozzle" ], "full_fan_speed_layer": [ "3" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json index 7c9a86cdde..2cc9b574c1 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle;Qidi Generic PLA Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "8XzQCGoYi01mIjNY", - "filament_id": "GFL99", + "setting_id": "7ALKguzkoK6KLHVv", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json index 4bb1e59e0b..2f0ab0b4c7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle;Qidi Generic PLA Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "hkeictJYR1KDX7kB", - "filament_id": "GFL99", + "setting_id": "jzfMNZP4WaNcNixD", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json index 85de90bcfc..c9af562ff6 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA @Qidi X-Smart 3 0.2 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle;Qidi Generic PLA Qidi X-Smart 3 0.2 nozzle", "from": "system", - "setting_id": "KTkq14RsduGBSdMZ", - "filament_id": "GFL99", + "setting_id": "gNbvzCkxedrQ7nQe", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json new file mode 100644 index 0000000000..497283dd4c --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Smart 3 0.6 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle;Qidi Generic PLA Qidi X-Smart 3 0.6 nozzle", + "from": "system", + "setting_id": "t8uPl9peXZRJbdLj", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Smart 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json new file mode 100644 index 0000000000..6b125ee3aa --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @Qidi X-Smart 3 0.8 nozzle", + "inherits": "Generic PLA @Qidi", + "renamed_from": "Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle;Qidi Generic PLA Qidi X-Smart 3 0.8 nozzle", + "from": "system", + "setting_id": "VsoBEmU35N8eW3CO", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Smart 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA.json b/resources/profiles/Qidi/filament/Generic PLA @Qidi.json similarity index 81% rename from resources/profiles/Qidi/filament/Qidi Generic PLA.json rename to resources/profiles/Qidi/filament/Generic PLA @Qidi.json index 2dc3b25203..e3e1f6eb48 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA.json +++ b/resources/profiles/Qidi/filament/Generic PLA @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA", + "name": "Generic PLA @Qidi", "inherits": "fdm_filament_pla", + "renamed_from": "Qidi Generic PLA", "from": "system", - "setting_id": "tmrmjsN8vDKGlNpX", - "filament_id": "GFL99", + "setting_id": "illxClFj0LphvnHh", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json new file mode 100644 index 0000000000..75f9a19364 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic PLA @Qidi X-Plus 4 0.2 nozzle", + "renamed_from": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle;Qidi Generic PLA High Speed Qidi X-Plus 4 0.2 nozzle", + "from": "system", + "setting_id": "ktWvoEzkA0mJ0Q5T", + "filament_id": "OFmpMwxS", + "instantiation": "true", + "slow_down_layer_time": [ + "6" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "pressure_advance": [ + "0.034" + ], + "nozzle_temperature": [ + "220" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json new file mode 100644 index 0000000000..7067954ef5 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PLA @Qidi X-Plus 4 0.4 nozzle", + "renamed_from": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PLA High Speed Qidi X-Plus 4 0.4 nozzle", + "from": "system", + "setting_id": "lBa0yfqPsQgr4U3m", + "filament_id": "OFmpMwxS", + "instantiation": "true", + "slow_down_layer_time": [ + "6" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "pressure_advance": [ + "0.034" + ], + "nozzle_temperature": [ + "220" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json similarity index 51% rename from resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json index 866b9b9707..d4bd50b020 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle", + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic PLA @Qidi X-Plus 4 0.6 nozzle", + "renamed_from": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.6 nozzle;Qidi Generic PLA High Speed Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "VqVyXnU77CZCKsNy", - "filament_id": "GFL99", + "setting_id": "Ls5CQx5Yf8QuC4T3", + "filament_id": "OFmpMwxS", "instantiation": "true", "slow_down_layer_time": [ "6" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json similarity index 51% rename from resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json index 47ac610743..dd77278778 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle", + "name": "Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic PLA @Qidi X-Plus 4 0.8 nozzle", + "renamed_from": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle;Qidi Generic PLA High Speed Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "0504CZkoYLx6NMI0", - "filament_id": "GFL99", + "setting_id": "VyCsuptxJnVw1KqD", + "filament_id": "OFmpMwxS", "instantiation": "true", "slow_down_layer_time": [ "6" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json similarity index 60% rename from resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json index 08b2fd475b..fbf48ad575 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic PLA Silk", + "name": "Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic PLA Silk @Qidi", + "renamed_from": "Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PLA Silk Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "lRRlOS4Xd1pGLIEq", - "filament_id": "GFA05", + "setting_id": "VusYzaMdLpjravVc", + "filament_id": "OFesA6rF", "instantiation": "true", "enable_pressure_advance": "1", "pressure_advance": [ diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json similarity index 60% rename from resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json index 0c9b1b3d15..bbfd984880 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PLA Silk", + "name": "Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PLA Silk @Qidi", + "renamed_from": "Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PLA Silk Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "DaBZGfcdheWjNdgr", - "filament_id": "GFA05", + "setting_id": "9GVORPqwLq0s3mlY", + "filament_id": "OFesA6rF", "instantiation": "true", "enable_pressure_advance": "1", "pressure_advance": [ diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json rename to resources/profiles/Qidi/filament/Generic PLA Silk @Qidi.json index 128da01c7e..c9fed29f60 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json +++ b/resources/profiles/Qidi/filament/Generic PLA Silk @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA Silk", + "name": "Generic PLA Silk @Qidi", "inherits": "fdm_filament_pla", + "renamed_from": "Qidi Generic PLA Silk", "from": "system", - "setting_id": "OATeG6kIIRyViXbn", - "filament_id": "GFA05", + "setting_id": "qmNmFB6yN23u389x", + "filament_id": "OFesA6rF", "instantiation": "true", "enable_pressure_advance": "1", "filament_type": [ diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json similarity index 55% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json index 4ea48e5379..e61e507c68 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PLA+ Qidi Q1 Pro 0.2 nozzle", "from": "system", - "setting_id": "dmKDk6Yb4zQFCWIe", - "filament_id": "GFL99", + "setting_id": "S5IihmYwqdoEXiOT", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json similarity index 51% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json index d7be267e76..842010a166 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json @@ -1,13 +1,14 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PLA+ Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "vwFHzxD2MrRieUIw", - "filament_id": "GFB99", + "setting_id": "iZYrNv7L15yrfAPR", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_settings_id": [ - "Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle" + "Generic PLA+ @Qidi Q1 Pro 0.4 nozzle" ], "full_fan_speed_layer": [ "3" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json similarity index 55% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json index 9884783666..1b48ab6b10 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PLA+ Qidi Q1 Pro 0.6 nozzle", "from": "system", - "setting_id": "wlXNWvECV8ylNVFF", - "filament_id": "GFL99", + "setting_id": "zDYfWdaJGDL64gzD", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json similarity index 55% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json index 751e859201..677620b7b7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PLA+ Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "gR4NZ8mgTNVxxjhh", - "filament_id": "GFL99", + "setting_id": "eAtbANg8BCzaurOY", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json index 3ceedcf5da..f3fa9ec4b4 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi X-Max 3 0.2 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Max 3 0.2 nozzle;Qidi Generic PLA+ Qidi X-Max 3 0.2 nozzle", "from": "system", - "setting_id": "wCdBhg6B4tQZw7dp", - "filament_id": "GFL99", + "setting_id": "ak1iDHwta1iV5CXw", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json new file mode 100644 index 0000000000..2e151c9e14 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Max 3 0.6 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle;Qidi Generic PLA+ Qidi X-Max 3 0.6 nozzle", + "from": "system", + "setting_id": "JwpYPwMfRZtymarF", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json new file mode 100644 index 0000000000..b829c40c1a --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Max 3 0.8 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle;Qidi Generic PLA+ Qidi X-Max 3 0.8 nozzle", + "from": "system", + "setting_id": "ZOuRUZf07g43ZV9u", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json index b1b1b2e9e9..2a761a1946 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 3 0.2 nozzle;Qidi Generic PLA+ Qidi X-Plus 3 0.2 nozzle", "from": "system", - "setting_id": "JJmzlY5XOz9eGO8n", - "filament_id": "GFL99", + "setting_id": "DujfIhzIsPDdHZlg", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json new file mode 100644 index 0000000000..657b16a6a4 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle;Qidi Generic PLA+ Qidi X-Plus 3 0.6 nozzle", + "from": "system", + "setting_id": "BA46FjbkAt4dhdfQ", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Plus 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json new file mode 100644 index 0000000000..9455380809 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle;Qidi Generic PLA+ Qidi X-Plus 3 0.8 nozzle", + "from": "system", + "setting_id": "TEqTy5MhYC1CLkrr", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Plus 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json similarity index 59% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json index 88086dd8e5..ecfb501bb0 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 4 0.2 nozzle;Qidi Generic PLA+ Qidi X-Plus 4 0.2 nozzle", "from": "system", - "setting_id": "XUhGdonOGCUI34EH", - "filament_id": "GFL99", + "setting_id": "TO1cgOHqLFnimX9m", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json similarity index 51% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json index 7ed74cb2d5..c0ff54ee65 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json @@ -1,16 +1,17 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle;Qidi Generic PLA+ Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "yvokLiCctDUmcDCR", - "filament_id": "GFB99", + "setting_id": "Dyf2Y7pDd4UWIIJ5", + "filament_id": "OFEWYR89", "instantiation": "true", "pressure_advance": [ "0.034" ], "filament_settings_id": [ - "Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle" + "Generic PLA+ @Qidi X-Plus 4 0.4 nozzle" ], "full_fan_speed_layer": [ "3" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json index 225c8203c7..5ddca086f7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 4 0.6 nozzle;Qidi Generic PLA+ Qidi X-Plus 4 0.6 nozzle", "from": "system", - "setting_id": "gZxafcPwX1hqI7Dm", - "filament_id": "GFL99", + "setting_id": "ty1M4Mik83FlDWKj", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json index 662d6b70e9..937e85aff4 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Plus 4 0.8 nozzle;Qidi Generic PLA+ Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "j6fJ7L02mVcZ01fO", - "filament_id": "GFL99", + "setting_id": "Wyo0NeD4dPzA365C", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json similarity index 55% rename from resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json index f6131e0ca7..a32c884550 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle", - "inherits": "Qidi Generic PLA", + "name": "Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Smart 3 0.2 nozzle;Qidi Generic PLA+ Qidi X-Smart 3 0.2 nozzle", "from": "system", - "setting_id": "4YnRWwYLWMODUHXq", - "filament_id": "GFL99", + "setting_id": "lypNmywVe3qfhs2q", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json new file mode 100644 index 0000000000..fe84ef4f8c --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle;Qidi Generic PLA+ Qidi X-Smart 3 0.6 nozzle", + "from": "system", + "setting_id": "Hxpe6y8Xo37WmcQr", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.016" + ], + "compatible_printers": [ + "Qidi X-Smart 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json new file mode 100644 index 0000000000..59a6efb166 --- /dev/null +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", + "inherits": "Generic PLA+ @Qidi", + "renamed_from": "Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle;Qidi Generic PLA+ Qidi X-Smart 3 0.8 nozzle", + "from": "system", + "setting_id": "2jjI8l22cAXTuxMl", + "filament_id": "OFEWYR89", + "instantiation": "true", + "pressure_advance": [ + "0.008" + ], + "compatible_printers": [ + "Qidi X-Smart 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+.json b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi.json similarity index 83% rename from resources/profiles/Qidi/filament/Qidi Generic PLA+.json rename to resources/profiles/Qidi/filament/Generic PLA+ @Qidi.json index cf8733d478..2c1e136f6b 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+.json +++ b/resources/profiles/Qidi/filament/Generic PLA+ @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA+", + "name": "Generic PLA+ @Qidi", "inherits": "fdm_filament_pla", + "renamed_from": "Qidi Generic PLA+", "from": "system", - "setting_id": "LNjBixpjLg5i8P1d", - "filament_id": "GFL99", + "setting_id": "JhZ9hP9n1gBNGwBq", + "filament_id": "OFEWYR89", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA-CF.json b/resources/profiles/Qidi/filament/Generic PLA-CF @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic PLA-CF.json rename to resources/profiles/Qidi/filament/Generic PLA-CF @Qidi.json index ced518b3a6..1381442943 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA-CF.json +++ b/resources/profiles/Qidi/filament/Generic PLA-CF @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PLA-CF", + "name": "Generic PLA-CF @Qidi", "inherits": "fdm_filament_pla", + "renamed_from": "Qidi Generic PLA-CF", "from": "system", - "setting_id": "bJKgxsU0tR1NDtoN", - "filament_id": "GFL98", + "setting_id": "XspRlBSqR3DsiFBM", + "filament_id": "OFWbdGsC", "instantiation": "true", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PVA.json b/resources/profiles/Qidi/filament/Generic PVA @Qidi.json similarity index 89% rename from resources/profiles/Qidi/filament/Qidi Generic PVA.json rename to resources/profiles/Qidi/filament/Generic PVA @Qidi.json index 3479b4eb41..ffd25855a1 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PVA.json +++ b/resources/profiles/Qidi/filament/Generic PVA @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic PVA", + "name": "Generic PVA @Qidi", "inherits": "fdm_filament_pva", + "renamed_from": "Qidi Generic PVA", "from": "system", - "setting_id": "8450opPMJm6GG5Cq", - "filament_id": "GFS99", + "setting_id": "dmGcoGkH9lvmgsJL", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_type": [ "PVA" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json similarity index 57% rename from resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json index 15423913f8..3fab5170d7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", - "inherits": "Qidi Generic TPU 95A", + "name": "Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", + "inherits": "Generic TPU 95A @Qidi", + "renamed_from": "Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle;Qidi Generic TPU 95A Qidi Q1 Pro 0.8 nozzle", "from": "system", - "setting_id": "0gGSrFIulk4gPLSp", - "filament_id": "GFB99", + "setting_id": "lwRnIxnWLYp1Hww4", + "filament_id": "OFjiXpyf", "instantiation": "true", "fan_cooling_layer_time": [ "60" @@ -13,7 +14,7 @@ "4" ], "filament_settings_id": [ - "Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle" + "Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle" ], "nozzle_temperature": [ "220" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json similarity index 56% rename from resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json rename to resources/profiles/Qidi/filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json index f83e24e147..7e964fd0b8 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", - "inherits": "Qidi Generic TPU 95A", + "name": "Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", + "inherits": "Generic TPU 95A @Qidi", + "renamed_from": "Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle;Qidi Generic TPU 95A Qidi X-Plus 4 0.8 nozzle", "from": "system", - "setting_id": "5fkE2aGkghsMdZ1W", - "filament_id": "GFB99", + "setting_id": "BPUUHxYPhHcPIWs9", + "filament_id": "OFjiXpyf", "instantiation": "true", "fan_cooling_layer_time": [ "60" @@ -13,7 +14,7 @@ "4" ], "filament_settings_id": [ - "Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle" + "Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle" ], "nozzle_temperature": [ "220" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A.json b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi.json similarity index 87% rename from resources/profiles/Qidi/filament/Qidi Generic TPU 95A.json rename to resources/profiles/Qidi/filament/Generic TPU 95A @Qidi.json index d83d0599af..2c9602ee2e 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A.json +++ b/resources/profiles/Qidi/filament/Generic TPU 95A @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU 95A", + "name": "Generic TPU 95A @Qidi", "inherits": "fdm_filament_tpu", + "renamed_from": "Qidi Generic TPU 95A", "from": "system", - "setting_id": "JWZrlYnOOlGpTEg6", - "filament_id": "GFU99", + "setting_id": "nXjylLuhXqtlLGEv", + "filament_id": "OFjiXpyf", "instantiation": "true", "filament_type": [ "TPU" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json index ff81ed6743..93793f8d8e 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle", - "inherits": "Qidi Generic TPU", + "name": "Generic TPU @Qidi Q1 Pro 0.4 nozzle", + "inherits": "Generic TPU @Qidi", + "renamed_from": "Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle;Qidi Generic TPU Qidi Q1 Pro 0.4 nozzle", "from": "system", - "setting_id": "s0MMbJlTt9Cbh8FQ", - "filament_id": "GFB99", + "setting_id": "ToMKfKFZDCHyEHw9", + "filament_id": "OFgbpcy9", "instantiation": "true", "fan_cooling_layer_time": [ "60" @@ -13,7 +14,7 @@ "4" ], "filament_settings_id": [ - "Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle" + "Generic TPU @Qidi Q1 Pro 0.4 nozzle" ], "nozzle_temperature": [ "230" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json similarity index 53% rename from resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle.json rename to resources/profiles/Qidi/filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json index 4e9f07c0c5..f1c8117c47 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic TPU", + "name": "Generic TPU @Qidi X-Plus 4 0.4 nozzle", + "inherits": "Generic TPU @Qidi", + "renamed_from": "Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle;Qidi Generic TPU Qidi X-Plus 4 0.4 nozzle", "from": "system", - "setting_id": "KqdGTkLW1x7oZpvj", - "filament_id": "GFB99", + "setting_id": "AACIHxmLhuNAGo6d", + "filament_id": "OFgbpcy9", "instantiation": "true", "fan_cooling_layer_time": [ "60" @@ -13,7 +14,7 @@ "4" ], "filament_settings_id": [ - "Qidi Generic TPU @Qidi X-Plus 4 0.4 nozzle" + "Generic TPU @Qidi X-Plus 4 0.4 nozzle" ], "nozzle_temperature": [ "230" diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU.json b/resources/profiles/Qidi/filament/Generic TPU @Qidi.json similarity index 87% rename from resources/profiles/Qidi/filament/Qidi Generic TPU.json rename to resources/profiles/Qidi/filament/Generic TPU @Qidi.json index 8c57a5d28a..a525b49520 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU.json +++ b/resources/profiles/Qidi/filament/Generic TPU @Qidi.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Qidi Generic TPU", + "name": "Generic TPU @Qidi", "inherits": "fdm_filament_tpu", + "renamed_from": "Qidi Generic TPU", "from": "system", - "setting_id": "qvJXA6V5mxiOguUj", - "filament_id": "GFU99", + "setting_id": "0jwJs0mTFs0904VK", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_type": [ "TPU" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.2 nozzle.json index 37749f7ca1..29a1578964 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "QASmOwd2vpLRwI9I", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.6 nozzle.json index 7aea599422..42e761ca25 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "FETCvNKTRyxJujEs", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.8 nozzle.json index 2a465f6e24..1186b13dad 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "ywzSdHmCxIwmIFVS", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json index b5c25a1bce..603023a014 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "EwhasEiqLRcN5gBN", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json index 4a0b67f0a0..6527685bab 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "0NVX3dTScYTIebm3", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json index 2c8d4bc22d..69ac1b6b11 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "HCU0TmDPYF39Gc3X", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json index 62bb876608..008671a374 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "Pf6oZn5QrYSbJhdm", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json index b6f03502b3..b777c29a9b 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "6LSdExBaTT0Mc3rY", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json index a4ebcb6a7b..fbea89c0fb 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "vc2R90RYyDuY8vQn", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json index 1d4d13d416..6b612e4461 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "1HVRVgHeXWVj3T0v", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json index b16ce365f8..50b05d928d 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX ABS @Qidi", "from": "system", "setting_id": "aJxjGxHK8UJOqYPV", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi.json index 5e4fd7cf10..7a3ee8c8ce 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "0fchNQsqRqwI6whN", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.2 nozzle.json index ffb2cc0e34..5b63882b5b 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "Cw3CaLrsjVfJKoWI", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -48,7 +48,6 @@ "compatible_printers": [ "Qidi X-Smart 3 0.2 nozzle", "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle", - "Qidi Q1 Pro 0.2 nozzle" + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.6 nozzle.json index e6b90b25f2..88a9ffa985 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "eLmXN4kJvaoq5Ude", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.8 nozzle.json index 6a763393a7..8c4767360d 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "mndT3gxOniftGEEZ", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json index 8e0f9576fb..9737c4de7a 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "L8aHH2WqnlOYuyfd", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json index cf9da5b3c1..66da1ce3b3 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "LMva5CR9m19UAhcI", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json index 400f38d7fa..d5e9d135bf 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "5EfWTFx0dXRTREkj", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json index 44b77623c6..055b64956f 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "xeu1S6h53DRVM9Pw", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json index 0b09a46b90..d002a5db8c 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "UrZzA62PJDuvo9EC", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json index 696fddb2d8..62642bab11 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "jAykaomjQ4BS9Cg0", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json index c0203d9268..72f0ca2ae8 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "2QrBYfeT0mp048aY", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json index aee2e475e2..5f0d6a3e6b 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PETG @Qidi", "from": "system", "setting_id": "9otX3aWO4xQA72DT", - "filament_id": "GFB99", + "filament_id": "OFIWMSGX", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json index 240181288d..02b6929088 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "dqHKVy4ahTjpQFOJ", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.2 nozzle.json index 679eb2b2f1..4e21fb79ff 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "GrYmKcX6ghgUO8z0", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.6 nozzle.json index b891604161..d2b9e1f6b9 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "Fwd0BaBVmg2w9oBo", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.8 nozzle.json index af0f830e19..f09ce840a7 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "OjSAPfXD7c9LpDZI", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json index 8c0315ecd1..37e1982068 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "tNk1yBoRzuKtWamt", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json index 865f120bcb..f03e9c8053 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "oULA9qVGUD5izX9o", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json index 956fa88d62..8331e6dc6c 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "RK1LyCal04XMqidp", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json index 535b07b9b0..8eeaf11774 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "6ehhHeFIMe3KxHA1", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json index c6a9a6564a..5066c19ab1 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "i3bQYXjlGipOAop7", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json index 60b9f5318c..1dce884cfd 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "vknSksUeSeKFl8vB", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json index 89ffc6501a..7d5db3e2de 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "I5NFFjIYcoo3SkmC", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json index 6e28cd923e..16a1a42344 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "HATCHBOX PLA @Qidi", "from": "system", "setting_id": "gzDFMFaDnAVuDy3B", - "filament_id": "GFB99", + "filament_id": "OFeelsSM", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi.json index ee79175e43..2e6ed1140b 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "jWtANauqr4Azj7fo", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.2 nozzle.json index 3fb6ca6406..6ca66cc671 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "PVJaNrzYRoafHb3k", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.6 nozzle.json index 403311644b..4815755a54 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "6dP4f482dvR9Ihhu", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.8 nozzle.json index 5d43601751..d3ef4ea036 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "ol1pj7wlmGJlZHbA", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json index aa2cc8787c..7c9832acf5 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "d9bOxYmwJJ928QUm", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json index 451a97354e..56846eb0c1 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "3vOLIQxScIoHCUDQ", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json index 161cee6e4c..905d2cef0b 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "ninsIRmjQReutXjA", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json index e5e9652619..8692479cc1 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "m4sql22MWPed4UK9", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json index c6d97b1e42..9dca464248 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "SbIhXnMLo7UWLdmF", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json index ca632cb252..edba90fe27 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "Hh22vTpUyqF09bma", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json index 4419ba6577..3663179029 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "10PSPCpiTcS92auy", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json index f203d3f536..fdea3d5aeb 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture ABS @Qidi", "from": "system", "setting_id": "Xevn2nrx7W5VQX6z", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi.json index 0ae10f9086..a422baae82 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "rRuO94f0PYlPR3yu", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.2 nozzle.json index 028e0adeb3..924362c286 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "YnRI4rYCHDIi7Q0w", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "true", "pressure_advance": [ "0.057" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.6 nozzle.json index f6989b46b5..fbf2b78629 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "Jizherw9T9l0X76l", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.8 nozzle.json index c15b896bde..f265222c29 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "dHlHvcm2BjzlfUSk", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json index ad955edaeb..cd3c18c309 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "3jqdiWNWro7yFptW", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json index 9e4bad8df8..4d9a6ad8c9 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "tARHr87BkRknTQJI", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json index ae956faf9b..99a239670e 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "EEIdQ4XTkpQyRz3h", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json index c961b4b4d1..5836edcfd7 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "NBbNF6S5sQYIiS9T", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json index 299c10c9b0..8414abfcca 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "gk2D7WKoLK1xPqLC", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json index 3beb0aba29..8ee92ded5a 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "wtl6yNqJQUVhiBnB", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json index dc866429d0..c60980ba47 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "1fl42MjkwXbpjJ3r", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json index c87feb65e4..eff7da8211 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Overture PLA @Qidi", "from": "system", "setting_id": "vxGQSWw07PXnllwO", - "filament_id": "GFB99", + "filament_id": "OFc3xdm9", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi.json index f298c1f233..b3ce80842d 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "XXJ4dSi48JuA54Iv", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.2 nozzle.json index 24c3e1cf0e..250eaa3223 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "5rbxArwT1VV5BOSq", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.6 nozzle.json index 13684caa4b..082f09ffea 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "EqpfLGTZXcdjm5BM", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.8 nozzle.json index 8112c07176..087808ff18 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "Ao01rvVFfkWlwpER", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json index c4a4120209..4325782ea0 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "dfni3lzB8GJldfQD", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json index 6abfb386db..48a586618e 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "iWq2EddKO6QAUJuG", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json index ba69bacdab..bf25f2c6da 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "0EswisPwFjFmk1GT", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json index 1b0506e8dc..98ed0be9af 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "t3DcJuJsNgXKW0dP", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json index 51c39b2aba..d669116cc3 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "Ino4r7XLgTCFh4YR", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json index 1f53c30903..c586125db1 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "7NXI13ejzocjD7TO", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json index 4bcdb6bcef..2dccc6f635 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "QEJ9knURmXAGsFib", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json index 8aa1c764f4..96ed3908e3 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite ABS @Qidi", "from": "system", "setting_id": "GzEXQzyKqqnCVUBh", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi.json index ef68eb12e1..ca0e5862fc 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "Q9QYOF2UmsrK7Wof", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.2 nozzle.json index a52b240410..32839eb63d 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "uXrENPoTa7HWapCV", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "true", "pressure_advance": [ "0.057" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.6 nozzle.json index f18131f02b..5c81627600 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "XnU3X7A7kdRrfoTX", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.8 nozzle.json index 93bcd56559..874ae102f9 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "Q6H3JzOum8GYVRF9", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json index 4ef9af4534..4f2a9d85a0 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "tSR6NKHk3ietpsga", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json index 77d10b9be3..d4b17517bb 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "ZF5is6IpP0gGcqRE", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json index 1559c6d369..fe5165436d 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "bAqfoS751xDFHubU", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json index 6837abbfb2..d277bafea9 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "2rWOMrYc40ZRNLQi", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json index eabb962095..a1a970be54 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "4x8HlY906khbFsG0", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json index b4c8988c1d..3ee5d4697f 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "87QXnh5kCuQoPwjr", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json index 6a0d9383f8..4cfd0f3202 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "WsMzyALZrDylCkZ6", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json index 5d5cb7bf93..025770dea7 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "PolyLite PLA @Qidi", "from": "system", "setting_id": "sHVHjhH9FzhRjeHT", - "filament_id": "GFB99", + "filament_id": "OF5CgdDq", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi.json index b84cf7bfb4..d277778204 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Kg6WHLbWxKAE8cCr", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json index e2d1d05e99..ba454d0083 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json @@ -3,7 +3,7 @@ "name": "Bambu ABS@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json index dfb6609b1c..6ef3859314 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json @@ -3,7 +3,7 @@ "name": "Bambu ABS@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json index d1898e4363..a677387d1b 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json @@ -3,7 +3,7 @@ "name": "Bambu PETG@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json index 6a28da194b..ac1ed2e4bc 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json @@ -3,7 +3,7 @@ "name": "Bambu PETG@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json index 1277eab3e3..1eee11b706 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json @@ -3,7 +3,7 @@ "name": "Bambu PLA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json index b1f2cdde9f..398a45ac25 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json @@ -3,7 +3,7 @@ "name": "Bambu PLA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json index 9e42298338..1dc3825126 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json @@ -3,7 +3,7 @@ "name": "Generic ABS@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_11", + "filament_id": "OFY9muEs", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json index 88edeb6155..c3641af840 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic ABS@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_11", + "filament_id": "OFY9muEs", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json index 90d5f9150f..26abc6179b 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json @@ -3,7 +3,7 @@ "name": "Generic PC@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_23", + "filament_id": "OFLakOUI", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json index 55a834093d..148bc80d29 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic PC@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_23", + "filament_id": "OFLakOUI", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json index 5a8d64615a..de56662460 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json @@ -3,7 +3,7 @@ "name": "Generic PETG@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_41", + "filament_id": "OFYPdQJh", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json index 88c5c926ab..13dc11da37 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic PETG@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_41", + "filament_id": "OFYPdQJh", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json index 21ed221909..f8da1c0008 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json @@ -3,7 +3,7 @@ "name": "Generic PLA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_1", + "filament_id": "OFDSrzZ8", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json index 82423a614d..b33774304d 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic PLA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_1", + "filament_id": "OFDSrzZ8", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json index a24a0f4d6f..23d04a049a 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json @@ -3,7 +3,7 @@ "name": "Generic PLA Silk@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_4", + "filament_id": "OFesA6rF", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json index 1254b1d53a..30588be03e 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic PLA Silk@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_4", + "filament_id": "OFesA6rF", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json index 47107a8614..c3f6f6ede7 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json @@ -3,7 +3,7 @@ "name": "Generic PLA+@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFEWYR89", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json index 83d77e0781..fd06d75bd0 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic PLA+@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFEWYR89", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json index 107d337155..189c740c72 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json @@ -3,7 +3,7 @@ "name": "Generic TPU 95A@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_0_50", + "filament_id": "OFjiXpyf", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json index 8e867a26f2..bfb84c16de 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json @@ -3,7 +3,7 @@ "name": "Generic TPU 95A@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_0_50", + "filament_id": "OFjiXpyf", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json index c55ccaa1a9..429f7bc58d 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json @@ -3,7 +3,7 @@ "name": "HATCHBOX ABS@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json index 81736dcccf..a06b63de6d 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json @@ -3,7 +3,7 @@ "name": "HATCHBOX ABS@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json index 10f557a994..14cc4b1463 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PETG@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json index fd739c1779..3922b8fbbb 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PETG@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json index 880ecddb29..0de43e0804 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PLA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json index 4af2d4f816..94fb13c4a3 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PLA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json index 5c2067f362..cb96443ce7 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json @@ -3,7 +3,7 @@ "name": "Overture ABS@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json index a6639b3999..2caa6342ff 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json @@ -3,7 +3,7 @@ "name": "Overture ABS@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json index 2dbdffd469..2bb82adf5f 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json @@ -3,7 +3,7 @@ "name": "Overture PLA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json index 986e906c0c..e3db0ea728 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json @@ -3,7 +3,7 @@ "name": "Overture PLA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json index b1af2354b5..98ea19925c 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json @@ -3,7 +3,7 @@ "name": "PolyLite ABS@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json index 6d6c27b6b1..ed269d96be 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json @@ -3,7 +3,7 @@ "name": "PolyLite ABS@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json index be89bf9696..8639ef5ff7 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json index c42c4aee25..366be7a6ba 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json index 62dc85146b..19a568850c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Odorless@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_14", + "filament_id": "OFma5TXH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json index be98105a39..2c2b667fd7 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Odorless@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_14", + "filament_id": "OFma5TXH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json index 9d7e3d0e7f..c5cb2aca78 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_11", + "filament_id": "OFT2jon4", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json index da40111dc4..4e68e02cf5 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_11", + "filament_id": "OFT2jon4", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json index 46ccb9e691..e123946376 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido Metal@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_13", + "filament_id": "OFeCJqxx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json index afd2b355cb..6589613879 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido Metal@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_13", + "filament_id": "OFeCJqxx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json index a20b7bb2c1..298e063e51 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ABS-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_12", + "filament_id": "OFt3HtlG", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json index 5e6df7914d..36ec082dc3 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ABS-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_12", + "filament_id": "OFt3HtlG", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json index 88e5d964e7..4a64191f92 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ASA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_18", + "filament_id": "OFTsHNQi", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json index c68044bfaf..11cbffc08f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ASA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_18", + "filament_id": "OFTsHNQi", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json index b449906758..c32a28c5ff 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-Aero@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_19", + "filament_id": "OFu1E4ur", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json index 3c810517f6..30835ce25e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-Aero@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_19", + "filament_id": "OFu1E4ur", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json index 4d2165ffd1..44845f9c1c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_20", + "filament_id": "OF1W7c76", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json index 99e1043b46..5f100e18e7 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_20", + "filament_id": "OF1W7c76", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json index c15cf5ca65..454bb935c1 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PA12-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_27", + "filament_id": "OFn6WpN7", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json index 3dbd928222..ae7dce989c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PA12-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_27", + "filament_id": "OFn6WpN7", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json index fe908219a5..86d433078a 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_30", + "filament_id": "OFKgmsqE", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json index d76e92349e..d456e57eea 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_30", + "filament_id": "OFKgmsqE", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json index e694512bc7..2f4d499ddd 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_31", + "filament_id": "OFo15hcT", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json index cb8c2640a3..c64465630c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_31", + "filament_id": "OFo15hcT", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json index d4639142de..67c1da6278 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PC-ABS-FR@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_34", + "filament_id": "OFFAWVf0", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json index b0e25aa480..b5ccaf706c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PC-ABS-FR@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_34", + "filament_id": "OFFAWVf0", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json index 9dd9600bf9..23717031de 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PEBA 95A@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_36", + "filament_id": "OFhiJE7Y", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json index e1c1441da1..ec065181d8 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PEBA 95A@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_36", + "filament_id": "OFhiJE7Y", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json index 211f90a3a6..e6c29cea5c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PET-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_37", + "filament_id": "OFKfJTwL", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json index 59f7315e29..62461cb73a 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PET-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_37", + "filament_id": "OFKfJTwL", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json index 85fc6f5847..424b78379d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PET-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_38", + "filament_id": "OFhx4uOG", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json index c7e66b7972..f178094458 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PET-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_38", + "filament_id": "OFhx4uOG", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json index ba87c9a3b7..58a0fd7dbf 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Basic@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_39", + "filament_id": "OFuJ49uH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json index a08ec8af68..8cb18721e2 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Basic@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_39", + "filament_id": "OFuJ49uH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json index 9815a8eb64..2e3d793089 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Rapido@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_41", + "filament_id": "OF4S3To3", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json index 1c50f16b51..96a2ec23e6 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Rapido@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_41", + "filament_id": "OF4S3To3", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json index b8f8c4ec5f..ed639e45a3 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Tough@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_40", + "filament_id": "OFQ40XeN", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json index 3f272efaee..f3886ffbdd 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Tough@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_40", + "filament_id": "OFQ40XeN", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json index 64a56ca919..d996077b6e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Translucent@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_45", + "filament_id": "OFf0MkD5", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json index 6010799fff..31a8543037 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Translucent@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_45", + "filament_id": "OFf0MkD5", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json index 475b8f2a78..8f424ae68d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_42", + "filament_id": "OF4iWKrE", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json index 4ba3a94c25..3b0175abd0 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_42", + "filament_id": "OF4iWKrE", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json index d510eb7fe8..cb45a7126e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_43", + "filament_id": "OFdtPd9h", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json index 353d2eb3ee..2b37be4655 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_43", + "filament_id": "OFdtPd9h", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json index c2799f2f9e..9681191225 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Basic@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_7", + "filament_id": "OF4nQ62r", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json index 4597470db3..7b5d0b42e9 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Basic@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_7", + "filament_id": "OF4nQ62r", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json index 4a25bf91f3..86320677b5 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Matte Basic@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_8", + "filament_id": "OFughwKn", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json index 824ff1d846..49a420c205 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Matte Basic@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_8", + "filament_id": "OFughwKn", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json index 3f57b73a1f..3e61216161 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_1", + "filament_id": "OFKIQO2W", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json index d3afa29ba4..6bcc1465f8 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_1", + "filament_id": "OFKIQO2W", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json index e4432822ad..3b0813506f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Matte@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_2", + "filament_id": "OF3IKafc", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json index b8cf01a822..1fdd0cbfe0 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Matte@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_2", + "filament_id": "OF3IKafc", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json index 9728e57f4c..b06fcf26cb 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Metal@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_3", + "filament_id": "OFANFm4x", "instantiation": "false", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json index 2e3295cd86..ac5ef39d81 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Metal@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_3", + "filament_id": "OFANFm4x", "instantiation": "false", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json index ae38a9189f..d74b31e3b6 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Silk@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_4", + "filament_id": "OFW5FqkL", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json index 9d07d3375e..2cd6d5206b 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Silk@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_4", + "filament_id": "OFW5FqkL", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json index 4e1b88726e..68a6fe3591 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PLA-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_5", + "filament_id": "OFhWrAuP", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json index 67832cba33..1547635255 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PLA-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_5", + "filament_id": "OFhWrAuP", "instantiation": "false", "filament_adhesiveness_category": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json index dc4e1fd221..6f4ec50f8b 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-CF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_44", + "filament_id": "OFZOuWrO", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json index 2f27693f04..b582d662f8 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-CF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_44", + "filament_id": "OFZOuWrO", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json index f1de945749..7d0507a4d7 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_46", + "filament_id": "OFp57RRC", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json index 3fda14c322..0412893632 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_46", + "filament_id": "OFp57RRC", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json index 7e12181e9d..36ef25367a 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PAHT@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json index 1dfffa1bd7..1252ad814e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PAHT@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json index 25dca621ad..16dba7f79a 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PET/PA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_33", + "filament_id": "OFqcL5UF", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json index f126a37f8e..759e704f3f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PET/PA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_33", + "filament_id": "OFqcL5UF", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json index b31512f047..ca94f5a4d1 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI TPU 95A-HF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_50", + "filament_id": "OFR1XLMN", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json index dd9b428fed..80bde58289 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI TPU 95A-HF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_50", + "filament_id": "OFR1XLMN", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json index 38a1c1883a..58c2776f6e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-Aero@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_49", + "filament_id": "OFMDHOcT", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json index 525aebb88f..580060e6fe 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-Aero@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_49", + "filament_id": "OFMDHOcT", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json index 5e995b72be..c4a3c31413 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_15", + "filament_id": "OF9EHUKK", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json index b17c65d3e7..887a0fa639 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_15", + "filament_id": "OF9EHUKK", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json index 5b9881cb9f..27942a7e1d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_24", + "filament_id": "OFWDe7YH", "instantiation": "false", "box_temperature_range_high": [ "55" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json index 7f11a52b7c..925c18aa11 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_24", + "filament_id": "OFWDe7YH", "instantiation": "false", "box_temperature_range_high": [ "55" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json index 194fe42853..3c9c558f77 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA-CF25@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_26", + "filament_id": "OF9PELEb", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json index 1593decfea..ebcabb0fa6 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA-CF25@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_26", + "filament_id": "OF9PELEb", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json index 380d48bcb1..5b31143e00 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json @@ -3,7 +3,7 @@ "name": "QIDI WOOD Rapido@Q2-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_1_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json index 5a7882bd68..a4b1c223db 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json @@ -3,7 +3,7 @@ "name": "QIDI WOOD Rapido@Q2C-Series", "inherits": "fdm_filament_q_common", "from": "system", - "filament_id": "QD_2_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.2 nozzle.json index 9340c8b402..ac901e85ad 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "Z0J9YPS8382vLms4", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.6 nozzle.json index 651828c165..0c5834be33 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "SA5qLMqlZg0lBV9u", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.8 nozzle.json index 951ebcacd6..9f276e1282 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "MzM45pddZsnN8jk4", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json index c59b3a85ee..4f5a081162 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "Tq1aLmF5jT1fx5mZ", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json index e68e7cf3fa..0cb80c93c1 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "1hhkoG2E1z6ya5hY", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "during_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json index 395f1dc934..98f2689236 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "Vr1wXzAo5OR2PASA", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json index 5416a7b580..c8965e1ade 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "OCg8c9SWQrZP0SrH", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json index ac47e75f00..2d6cfd79a6 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "3fkdGYKFpaJ8yjwg", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json index b0467052ef..228a2b7441 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "Tkh7jC3ZhD7qchMF", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json index e259f79655..e9139c0464 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "wOJOXhIjWFMUvDsB", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json index b3b3c6007f..c0934114e4 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Odorless", "from": "system", "setting_id": "WqbBySroQTCBWMoz", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless.json index 9b2cc8c8fd..d53b7c2bee 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "5GyjZE2Ukzo3BDdg", - "filament_id": "GFB99", + "filament_id": "OFma5TXH", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.2 nozzle.json index eda2713729..1f30fa81e6 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "CeOohxHZCLelVMCk", - "filament_id": "GFB99", + "filament_id": "OFOuEEvv", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.6 nozzle.json index 96ad8b214c..2ebe9f8df4 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "VzAotqGZviabVuS4", - "filament_id": "GFB99", + "filament_id": "OF0wz84w", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.8 nozzle.json index 7678378711..aaa210c950 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "1hpYHzEDBeO8jwDr", - "filament_id": "GFB99", + "filament_id": "OF0w7OpJ", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json index 606a4e781d..0824c6eae0 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "2ZB4CZPo7OnsVeFj", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json index 51d96df33d..f35f44ff48 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "ANlmZnKFevlds1x9", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json index 832ace793f..2b516260c4 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "qGAb3jPiiSZqPc0W", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json index 939c2fc5bd..b1ea6553b0 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "zPlNGjze5nz0Sqtn", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json index a57fa1b64f..3ed4c50855 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "L6hmbX1bqdrGd9g2", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json index c05f92c7f4..b4cd47f8e0 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "ZKLPQIUecFL5GG2P", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json index a4838feb1d..5316755879 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "OlI3NRTSS4Vb9ABn", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json index f02644b876..8039f0046b 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido", "from": "system", "setting_id": "7AXe36Wqh6uupouS", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json index 552acb8b6e..c3dc666461 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "CQa9Ke6ku0jK7juR", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json index 695dfa0702..7f5946f4d8 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "KBXExHIJGyOE02sr", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "enable_pressure_advance": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json index b3f2dbf64d..d114ce7ed2 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "QjDN8l4fq8nrEtZS", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json index b7e9c56d7e..fc4a9099c9 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "83M8HRLtzoEyAgdd", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json index cd38da2783..fdf74d3fc5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "JWNlbq8qmrVoCjJZ", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "during_print_exhaust_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json index 2cfbfdf4de..2d0850b58f 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "igcuTXhdFT9QEkki", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json index ee01bbbb30..bc81c0f940 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "Rci7D9y258kLZl3F", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json index 98b64f2e92..1f1d71d6da 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "LClDGDpaf5l4XinA", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json index 71c73d5a26..c8e0675c3e 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "TbTSNtElyeqwuhI2", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json index a3bde06612..f7b91d1384 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "lRSAQSUdgEOvrWOZ", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json index fa0b2629ec..6aad4985d6 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS Rapido Metal", "from": "system", "setting_id": "sV1XN1EnDMTMC6eZ", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json index b3b7260b51..9c133650ab 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "EcvWsnEhikUy64mA", - "filament_id": "GFB99", + "filament_id": "OFeCJqxx", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido.json index 75518e19d5..b29a065b5a 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "sru9yX08jyTVNmOz", - "filament_id": "GFB99", + "filament_id": "OFT2jon4", "instantiation": "true", "filament_type": [ "ABS" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json index ddcb0ad389..38bd8a9438 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "BG8J7FyU5Sn6pmGk", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json index 5a8cd10de2..59c267751c 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "87bAUrovoG3W1WZK", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json index 7714206d33..ca9e5f25a4 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "v0K7uK7rq54uGbrE", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json index 8aba17e819..92db726d5d 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "OD1YZ5gmmk39jI21", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json index af4a24396d..aaf74e228f 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "QzCAZozPOpv3IOzz", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json index ab0972598b..93b5abffd9 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF", "from": "system", "setting_id": "fvB8ilSXksTr2ahl", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF.json b/resources/profiles/Qidi/filament/QIDI ABS-GF.json index a6d53698c7..f07b650913 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "FW543AnWfRtseB8W", - "filament_id": "GFB99", + "filament_id": "OFt3HtlG", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json index 4e532d3a34..f52455998b 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "uskWZUmvzYkVgG0l", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json index 464b555e28..a9e4dc2f3a 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "9laiuOlfZEWIjQ3u", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json index 92b8fbb036..7aba539d32 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "Jh3kEQrLdoGw4WLW", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json index 863ace51a5..13a7f6576c 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "3tblNpw8VgOlt8VU", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json index e22b325113..2dd3e667ff 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "tssoWES4nOoMEh90", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json index 64b7fd6f57..6f090ca606 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF10", "from": "system", "setting_id": "cgzmqzFT32UhNW5Q", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json index bffe8b53c8..39ac4a7119 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "hxsu8XybSxfesTJf", - "filament_id": "GFB99", + "filament_id": "OFQMsFfF", "instantiation": "true", "filament_type": [ "ABS-GF" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json index 1d88686ecc..15314bf743 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "Do5JLiLyzue036L8", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json index df3f122417..c0f30133ce 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "hTEx7UgX2wWanON5", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json index 2c99858ffa..ee93a959e9 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "shInwFwd1Yh5wUJB", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json index dcdb75359c..5c51beb27a 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "LQoXGFsJRpjCTBKm", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json index 43b86fdab1..0cf39c8240 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "5ONV5cuwTbSMWPMf", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json index 8f090308d5..e204c4e0c9 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ABS-GF25", "from": "system", "setting_id": "nvfnoGOwhELWArss", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json index 67eac5a65f..dbac9e9e47 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "mFWkL9nlS289XAWu", - "filament_id": "GFB99", + "filament_id": "OFZLtWYs", "instantiation": "true", "filament_type": [ "ABS-GF" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json index 1f61623cb0..078e81b02b 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "JPrwCFLO4P82f5lz", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.4 nozzle.json index fed39958bf..fc2d6d8ba6 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "zku756j16aST1ugn", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +19,7 @@ "16" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi Q1 Pro 0.4 nozzle" + "Generic ASA @Qidi Q1 Pro 0.4 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.6 nozzle.json index 5dd51ba6e3..8a5be0dcd5 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "EcewU7mP5y2vDwRn", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.8 nozzle.json index 4595c5cb56..03b5748208 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "JPCSXfcIngQGTuOz", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Max 3 0.2 nozzle.json index 53d965df8f..64e213bd94 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Max 3 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "hhkWOEdIbQrB4IR0", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 3 0.2 nozzle.json index bf52b6954e..4578f2d1dc 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 3 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "QiV5OREyiy9cb2yA", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.2 nozzle.json index 8fa1de7e85..7723cdca74 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "yOWilrQPhpvcpWM4", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "chamber_temperature": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.4 nozzle.json index 3c259e858a..f9dfff9d99 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "tohpo42HW9BLvVcH", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" @@ -19,7 +19,7 @@ "16" ], "filament_settings_id": [ - "Qidi Generic ASA @Qidi X-Plus 4 0.4 nozzle" + "Generic ASA @Qidi X-Plus 4 0.4 nozzle" ], "nozzle_temperature": [ "255" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.6 nozzle.json index 33505ecf75..0e0f51245b 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "iDF5lahr0TRvLF8F", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.8 nozzle.json index ace413d4d2..71682bf82d 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "p371tUSbBj3WOi5M", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Smart 3 0.2 nozzle.json index 8d1bb937b1..f0dd09ede0 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA @Qidi X-Smart 3 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA", "from": "system", "setting_id": "4NUwEIv3156HKgev", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json index d7fa79e31b..525810872c 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle", "inherits": "QIDI ASA-CF", "setting_id": "UZg7s2SVhCGDcdkA", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "filament_settings_id": [ "QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json index 4f166dfd1a..dccb6eb9fa 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle", "inherits": "QIDI ASA-CF", "setting_id": "x8avbSHn73PayVfR", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "filament_settings_id": [ "QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json index 7df6c822af..059390e58b 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle", "inherits": "QIDI ASA-CF", "setting_id": "FagCR4bLL1ctSXax", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "filament_settings_id": [ "QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json index 33af36c33b..84035c06d3 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "T6U1oaEsA0T3ogMM", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json index c549a01bb3..7532ce7249 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "8Xm0AjRaktaNfo4o", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json index c62d7926f9..29a88f5e45 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "4p12RphItNlfwqwT", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json index ef993b3193..8e73a8d4f2 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "346HiaeZvs3BoFUb", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json index d768ca7ab5..203856fde8 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "LROz60JZsh6GN7CK", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json index 8eb7f15885..9bcccb476a 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "5OR8LnFPipv3h4h8", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "during_print_exhaust_fan_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json index e3d8e010cd..fd6963ecb4 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "wyns97Rn3EVTl0v5", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "additional_cooling_fan_speed_unseal": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json index 20348ce7cf..de52d4fea8 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "zituWsHG83yRR1lM", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "additional_cooling_fan_speed_unseal": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json index ea8120a8d6..0c18c54f8e 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI ASA-CF", "from": "system", "setting_id": "2CgI1u8NrWGqxN1C", - "filament_id": "GFB99", + "filament_id": "OF1W7c76", "instantiation": "true", "additional_cooling_fan_speed_unseal": [ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF.json b/resources/profiles/Qidi/filament/QIDI ASA-CF.json index 9e1ac1c012..0b6906338b 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "QD_0_1_20", + "filament_id": "OF1W7c76", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/QIDI ASA.json b/resources/profiles/Qidi/filament/QIDI ASA.json index bfd6c00df7..5e0f08db8e 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA.json +++ b/resources/profiles/Qidi/filament/QIDI ASA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "v2LrEujF68PPbrux", - "filament_id": "GFB99", + "filament_id": "OFTsHNQi", "instantiation": "true", "filament_type": [ "ASA" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json index 04cc184d19..e377cff6f9 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "rDi5X7jq3PrXGeSo", - "filament_id": "GFB99", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle.json index 12696f5c4a..6921a3ac20 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "tF0ym95Eo2WVjYrv", - "filament_id": "GFB99", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle.json index 3bde720ab2..6482c628bc 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "bWc3l0t1llvWvFei", - "filament_id": "GFB99", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle.json index 56512094ca..1d8276e697 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "qdecbUennyPdmB0A", - "filament_id": "QD_0_1_24", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle.json index 3b0d9029c2..ebd5a74d26 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "oAp4leYdCEJY771O", - "filament_id": "QD_0_1_24", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle.json index 795c6dbbfc..7f36d5973b 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA-Ultra", "from": "system", "setting_id": "d5wSCLXU0dhvtbM5", - "filament_id": "QD_0_1_24", + "filament_id": "OFlN6DL1", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json index a57e564ca4..3a7512ae98 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "Rp1vbScHgwAZAwNT", - "filament_id": "GFN99", + "filament_id": "OFlN6DL1", "instantiation": "true", "filament_type": [ "UltraPA" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.4 nozzle.json index 4c287235ef..8aae289040 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "Q3votaRX4HuxZl1j", - "filament_id": "GFB99", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.6 nozzle.json index 6b57b653e1..6fb1462acb 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "aaAKfscwITCW1cIY", - "filament_id": "GFB99", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.8 nozzle.json index ba8250d7b8..df40927a88 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "nsFoTEFnTCbVM5VS", - "filament_id": "GFB99", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.4 nozzle.json index 14e508b501..271abf03e1 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "e8Lz1jXDuBS8tzvW", - "filament_id": "QD_0_1_27", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.6 nozzle.json index 8d024087cf..d82b9caf50 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "2DYXiTX67NfmBSCX", - "filament_id": "QD_0_1_27", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.8 nozzle.json index a9f43cdaee..d291f54a00 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PA12-CF", "from": "system", "setting_id": "Kkj773eEVzhT6B7Q", - "filament_id": "QD_0_1_27", + "filament_id": "OFn6WpN7", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF.json b/resources/profiles/Qidi/filament/QIDI PA12-CF.json index 7276593388..1c9670ae87 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "tDdg0DlqE4Nle5Xo", - "filament_id": "GFN98", + "filament_id": "OFn6WpN7", "instantiation": "true", "filament_type": [ "PA12-CF" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle.json index 483308828c..b4373b79b4 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "wBwy10qTZT9LPkX7", - "filament_id": "GFB99", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle.json index 559d626e6a..bb3e66d408 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "a7pcw1dTC3bXjkqQ", - "filament_id": "GFB99", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle.json index a70309e85a..c2a557e26f 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "pRBh7YZdJFYv4rED", - "filament_id": "GFB99", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle.json index 66bf7ff727..f8945441a6 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "3HTNW0nsdZy151mm", - "filament_id": "QD_0_1_30", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle.json index 0e3da99aed..d403b161f2 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "t9VMvRmLwAT37YHm", - "filament_id": "QD_0_1_30", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle.json index 1c5730c874..ab786208f2 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-CF", "from": "system", "setting_id": "F30WpUvosUoiAKry", - "filament_id": "QD_0_1_30", + "filament_id": "OFKgmsqE", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF.json index 62533cfa49..f366e23fc5 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "Hws8EIuQkAfaCJGk", - "filament_id": "GFN98", + "filament_id": "OFKgmsqE", "instantiation": "true", "filament_type": [ "PAHT-CF" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.6 nozzle.json index ea7f2a65c6..f365f39f31 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "jRV6kS5c49Jf0IBJ", - "filament_id": "GFL98", + "filament_id": "OFo15hcT", "instantiation": "true", "pressure_advance": [ "0.016" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.8 nozzle.json index 4496ed57ea..134232f846 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "ic09uwyOjmjgZhCY", - "filament_id": "GFL98", + "filament_id": "OFo15hcT", "instantiation": "true", "pressure_advance": [ "0.023" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.4 nozzle.json index 3202c6fce1..3d5b6136ba 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "BGwcBuMu2dcF1nGB", - "filament_id": "GFB99", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.6 nozzle.json index 35daa7f005..4139a0bb49 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "R8msB42rgbyfT0sG", - "filament_id": "GFB99", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.8 nozzle.json index 5c2461e535..3d10846072 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "D1nnJWlyUV0wvZnz", - "filament_id": "GFB99", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.4 nozzle.json index 0d83c21079..e2c869d923 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "xHG5cy5GGfu88GoC", - "filament_id": "QD_0_1_31", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.6 nozzle.json index d90f8c3eec..fd0fe1f926 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "z1EQUUwgsLHYgeHG", - "filament_id": "QD_0_1_31", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.8 nozzle.json index 4d1b97b8fd..3a56d3c6fa 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PAHT-GF", "from": "system", "setting_id": "yTNCP86ycfXgy8zV", - "filament_id": "QD_0_1_31", + "filament_id": "OFo15hcT", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF.json index 1ca4105b5b..2093825bbd 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "A6BaDz936RbO2EW1", - "filament_id": "GFN98", + "filament_id": "OFo15hcT", "instantiation": "true", "filament_type": [ "PAHT-GF" diff --git a/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json index 8ef70475b3..ffb254d8db 100644 --- a/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle", "inherits": "QIDI PEBA 95A", "setting_id": "VNbCsg7HAvK02shi", - "filament_id": "GFB99", + "filament_id": "OFhiJE7Y", "instantiation": "true", "filament_settings_id": [ "QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json index 153b1c8543..41d449361d 100644 --- a/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle", "inherits": "QIDI PEBA 95A", "setting_id": "SBJaM8xcxmruL8Sx", - "filament_id": "GFB99", + "filament_id": "OFhiJE7Y", "instantiation": "true", "filament_settings_id": [ "QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PEBA 95A.json b/resources/profiles/Qidi/filament/QIDI PEBA 95A.json index 4695bcf9ae..937ef89808 100644 --- a/resources/profiles/Qidi/filament/QIDI PEBA 95A.json +++ b/resources/profiles/Qidi/filament/QIDI PEBA 95A.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "qkErLCeMU5ufGB0k", - "filament_id": "QD_0_1_36", + "filament_id": "OFhiJE7Y", "instantiation": "true", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle.json index fe24beddf7..ecab417416 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "sPox9vMaLAuoZoP2", - "filament_id": "GFB99", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle.json index beaa69e235..8263cd2cf9 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "6BLOwVDtDPvTqanQ", - "filament_id": "GFB99", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle.json index 38ba31b9c2..a1f15b927a 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "znZt3ns7eHGTA3sX", - "filament_id": "GFB99", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle.json index 5a9f9e7aa5..7ebb044048 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "3k9qy3LCbhnnRRad", - "filament_id": "QD_0_1_37", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle.json index a6477c90bb..fcaf24fe9a 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "xYAAeJcC83x4RoIl", - "filament_id": "QD_0_1_37", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle.json index 4670fe40bc..6fffac3277 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-CF", "from": "system", "setting_id": "JXE7r9nJqui21eJW", - "filament_id": "QD_0_1_37", + "filament_id": "OFKfJTwL", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF.json b/resources/profiles/Qidi/filament/QIDI PET-CF.json index 561c9f0929..e187e4550d 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "X4zXjt7t9eLbESzJ", - "filament_id": "GFN98", + "filament_id": "OFKfJTwL", "instantiation": "true", "filament_type": [ "PET-CF" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @0.6 nozzle.json index 400337fbd8..e8bc3fc708 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "N9zX7M4yR8u5Jqjd", - "filament_id": "GFB99", + "filament_id": "OFhx4uOG", "instantiation": "true", "filament_settings_id": [ "QIDI PET-GF @0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @0.8 nozzle.json index f87c252aa5..9a13f2e1c5 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "ATyJ8qPoYVqi7J3I", - "filament_id": "GFB99", + "filament_id": "OFhx4uOG", "instantiation": "true", "filament_settings_id": [ "QIDI PET-GF @0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.4 nozzle.json index d5e51c6102..bff7391a88 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "I48bgbR8Rq9DDxmR", - "filament_id": "GFB99", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.6 nozzle.json index ac877dc6ca..56f49905f9 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "hGLyYZ2WBTIFnWnc", - "filament_id": "GFB99", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.8 nozzle.json index 4554a3b574..39399a1915 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "XC3F1NLZxw1v5Bh3", - "filament_id": "GFB99", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.4 nozzle.json index e7131b8b4a..3614aa9ebc 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "zSjGCRFJPKjrnxXj", - "filament_id": "QD_0_1_38", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.6 nozzle.json index 62eaf75e85..71d711d7f3 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "qKGOeBEUrafs1H1C", - "filament_id": "QD_0_1_38", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.8 nozzle.json index 96112b4283..072689464e 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PET-GF", "from": "system", "setting_id": "S3VakjOmAENmBhoU", - "filament_id": "QD_0_1_38", + "filament_id": "OFhx4uOG", "instantiation": "true", "fan_cooling_layer_time": [ "10" diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF.json b/resources/profiles/Qidi/filament/QIDI PET-GF.json index 444747342d..cef1774ed3 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "nXZR8ykt6JdxvTCd", - "filament_id": "GFN98", + "filament_id": "OFhx4uOG", "instantiation": "true", "filament_type": [ "PET-GF" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.2 nozzle.json index 9aa6df6a65..e1351c1452 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "U8Tz8l63gQMoW1TR", - "filament_id": "GFG99", + "filament_id": "OFuJ49uH", "instantiation": "true", "pressure_advance": [ "0.04" @@ -15,7 +15,6 @@ "compatible_printers": [ "Qidi X-Smart 3 0.2 nozzle", "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle", - "Qidi Q1 Pro 0.2 nozzle" + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.6 nozzle.json index 5cc5b51fd3..e2f7f3eae4 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "i5DnDzOFFFsd4ear", - "filament_id": "GFG99", + "filament_id": "OFuJ49uH", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.8 nozzle.json index a4844774cc..1c38fa0a64 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "eqwWKpJur2oPzaig", - "filament_id": "GFG99", + "filament_id": "OFuJ49uH", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json index 1c7fb7e0d3..6427dfebe7 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "ZwdzHcsJbYBI04Yn", - "filament_id": "GFB99", + "filament_id": "OFuJ49uH", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json index dbf88b47cc..bd55a96d95 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "wYE4aUeszHw1HJrZ", - "filament_id": "GFB99", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json index ae41acdb9e..81c9040a53 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "SbHnONYlR2WneAjS", - "filament_id": "GFB99", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json index 0880da2bef..03e5e299a9 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "EQrNIdbODkHki7pY", - "filament_id": "GFB99", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json index dd6e20b2ed..900c3e1f7e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "SaZRrBNZwbPUxSRv", - "filament_id": "QD_0_1_39", + "filament_id": "OFuJ49uH", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json index 853d55b506..8e63d3f56a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "33Anr90IUQGC3jJZ", - "filament_id": "QD_0_1_39", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json index 8758f39eb5..2e8f4acbb4 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "l4LT5GPolnkeEEK6", - "filament_id": "QD_0_1_39", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json index 55db9aa126..741988239b 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Basic", "from": "system", "setting_id": "r6LnysrDaSyIserx", - "filament_id": "QD_0_1_39", + "filament_id": "OFuJ49uH", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic.json b/resources/profiles/Qidi/filament/QIDI PETG Basic.json index 1899fa6b7c..61f3784f74 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "7uiFWB9SSJvhXKt0", - "filament_id": "GFG99", + "filament_id": "OFuJ49uH", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.2 nozzle.json index d925f371b2..262479a3d5 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "17nQzSvxOhC8RqMv", - "filament_id": "GFG99", + "filament_id": "OF4S3To3", "instantiation": "true", "pressure_advance": [ "0.04" @@ -15,7 +15,6 @@ "compatible_printers": [ "Qidi X-Smart 3 0.2 nozzle", "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle", - "Qidi Q1 Pro 0.2 nozzle" + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.6 nozzle.json index e1636c5d4a..0668e88303 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "TJja29CvUqlXnhWM", - "filament_id": "GFG99", + "filament_id": "OF4S3To3", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.8 nozzle.json index ad4044f181..d4f9e92e17 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "6rVVNiYVHxsxqk0M", - "filament_id": "GFG99", + "filament_id": "OF4S3To3", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json index 3aff0af94f..5ede468e69 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "MoKlaB96ptTjnoa8", - "filament_id": "GFB99", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json index 45ba611152..ceff06761e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "S2CUnrPuZuvBo19K", - "filament_id": "GFB99", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json index 8f72cf31ed..5ce3194c0c 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "kEUCaWmAo3xZC09A", - "filament_id": "GFB99", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json index bf500050a6..a64c3fba4a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "4Tse2Ycxud3qX0aQ", - "filament_id": "GFB99", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json index a2098e7af1..c0b3eb3d2d 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "O2SmSJeOq2QkMawy", - "filament_id": "QD_0_1_41", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json index c2a930616a..4df839e4d4 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "UkzoaZIuBEwTCUYL", - "filament_id": "QD_0_1_41", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json index fc64677656..00b3f5abeb 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "wMG9FBNFTJR3mI2Y", - "filament_id": "QD_0_1_41", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json index da2dbce484..480da3bd6a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Rapido", "from": "system", "setting_id": "WF4EIoqqebSQYJCL", - "filament_id": "QD_0_1_41", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido.json index 67d19f82a2..991ee37f5a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "YK77S7a06UMEQzum", - "filament_id": "GFG99", + "filament_id": "OF4S3To3", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.2 nozzle.json index 0dfd072089..cf42e76d85 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "wl53hiPD7EGYabrt", - "filament_id": "GFG99", + "filament_id": "OFVHMFJX", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.6 nozzle.json index 2f5838b537..6c1de3e610 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "QUkztHAxlI1gg1xe", - "filament_id": "GFG99", + "filament_id": "OFe8yBMG", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.8 nozzle.json index 68706bbe3c..e25eac8748 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "vtQb2QBD5ongR7vC", - "filament_id": "GFG99", + "filament_id": "OFfr6JDF", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json index 26589c581e..89415a8dc8 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "KHeb2TVAxtw6fbRm", - "filament_id": "GFB99", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json index 5317b9f51d..ad32ffa5d3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "22HUqZbuYgOGNRfN", - "filament_id": "GFB99", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json index f32ca31314..76e0071f42 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "U35fhYtgLMsDXEws", - "filament_id": "GFB99", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json index 2a524dda6a..9229387ad6 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "wqzUWt3IiEURFRYL", - "filament_id": "GFB99", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json index 5a24596ad8..6aeaf4d124 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "Mu4RDxD4sVyJwRXc", - "filament_id": "QD_0_1_40", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json index 20e2ce8605..0058311761 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "FJryx96xxfATPqls", - "filament_id": "QD_0_1_40", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json index f0676efd80..1546b821fe 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "SmywHXjvv1Ju150F", - "filament_id": "QD_0_1_40", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json index a669d37ca3..e4d84406f2 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Tough", "from": "system", "setting_id": "BwMkyVGyL0Pmqp1w", - "filament_id": "QD_0_1_40", + "filament_id": "OFQ40XeN", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough.json b/resources/profiles/Qidi/filament/QIDI PETG Tough.json index a9193be4b4..6a32ec5569 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "SrZXxBXWXda9boGv", - "filament_id": "GFG99", + "filament_id": "OFQ40XeN", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.2 nozzle.json index 126d86f7bb..719f4cb648 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "I8DmnTJey0BaBBAN", - "filament_id": "GFG99", + "filament_id": "OFf0MkD5", "instantiation": "true", "pressure_advance": [ "0.04" @@ -15,7 +15,6 @@ "compatible_printers": [ "Qidi X-Smart 3 0.2 nozzle", "Qidi X-Plus 3 0.2 nozzle", - "Qidi X-Max 3 0.2 nozzle", - "Qidi Q1 Pro 0.2 nozzle" + "Qidi X-Max 3 0.2 nozzle" ] } diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.6 nozzle.json index 79d558d34f..6b5acc46d3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "0SbgoW822S43QDoX", - "filament_id": "GFG99", + "filament_id": "OFf0MkD5", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.8 nozzle.json index 02e4793b34..92cbd91012 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "rOakaeWOHKz9immU", - "filament_id": "GFG99", + "filament_id": "OFf0MkD5", "instantiation": "true", "pressure_advance": [ "0.04" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json index 2926cfa7d4..581e9b9107 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "RBy7wrl1ZQOdKe8i", - "filament_id": "GFB99", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json index 23ed635640..69f9916106 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "Y0jCXY0Ihd6eRlm4", - "filament_id": "GFB99", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json index b2397ddb33..3fca9fa3f8 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "9yzSrCFgR00Lx8Ab", - "filament_id": "GFB99", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json index 8c86c18134..99edc43ac8 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "uMHHs1N1fLMq56FF", - "filament_id": "GFB99", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json index 5082d4d9f0..d1fc5490ca 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "6bASygXwTEKR4Twi", - "filament_id": "QD_0_1_45", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_max_volumetric_speed": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json index 22d8ffe823..a629cb862f 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "QL7Ob5qH7GBsl9ga", - "filament_id": "QD_0_1_45", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json index e1fbad24e9..d6cbc67505 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "wwodlWk71rHgZ323", - "filament_id": "QD_0_1_45", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json index 7ad9a35a0c..1ff04f026c 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG Translucent", "from": "system", "setting_id": "Nh88D1u7mMVGhqCU", - "filament_id": "QD_0_1_45", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_settings_id": [ "QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent.json index a7e1a3f943..1b00da208d 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "5k6FnlL39pSbrei2", - "filament_id": "GFG99", + "filament_id": "OFf0MkD5", "instantiation": "true", "filament_type": [ "PETG" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.4 nozzle.json index 15e4f9f4c6..1de1163020 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "6EOvD75tBRyvffZF", - "filament_id": "GFB99", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.6 nozzle.json index 06118ac128..01483c22f3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "ByHCLDgv1HFiA1Bb", - "filament_id": "GFB99", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.8 nozzle.json index aff00a2a31..1ff8be3c19 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "NBrZJME5Jt7jwU4W", - "filament_id": "GFB99", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.4 nozzle.json index 42fe672412..76176b1597 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "OSLMQVT2l2Yert5l", - "filament_id": "QD_0_1_42", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.6 nozzle.json index a0b04d61be..fbeb10bf2e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "rpJAbHlG6bJhJoAs", - "filament_id": "QD_0_1_42", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.8 nozzle.json index 91265bb6b3..92fafc92ca 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-CF", "from": "system", "setting_id": "yyB4FvX6mflpfiZd", - "filament_id": "QD_0_1_42", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-CF @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF.json b/resources/profiles/Qidi/filament/QIDI PETG-CF.json index 734b4722ca..e2b5316a51 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "vg3YJMhVaXTMTVLJ", - "filament_id": "GFN98", + "filament_id": "OF4iWKrE", "instantiation": "true", "filament_type": [ "PETG-CF" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.4 nozzle.json index c6635252e2..4528379034 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "4kBE3NMTit44g7S1", - "filament_id": "GFB99", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.6 nozzle.json index 753888565d..acb59a4b53 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "SzH90qDpFuNpG7Ud", - "filament_id": "GFB99", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.8 nozzle.json index ff22c08ab9..cdb3ab339f 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "9XoDC8DHvxvgrRor", - "filament_id": "GFB99", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.4 nozzle.json index b7f85630bd..73b3a23fab 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "I6Tg5JVz1Q0RigOW", - "filament_id": "QD_0_1_43", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.6 nozzle.json index 4b29595ea8..20d1de619e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "RmitFKegDy89lNH4", - "filament_id": "QD_0_1_43", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json index a7a0295a94..a67ef4d5a4 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PETG-GF", "from": "system", "setting_id": "AoO0ihxQmsL2up4w", - "filament_id": "QD_0_1_43", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_settings_id": [ "QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF.json b/resources/profiles/Qidi/filament/QIDI PETG-GF.json index 060219b0b0..e9f7252039 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "bex5zSdkQThZQi0s", - "filament_id": "GFN98", + "filament_id": "OFdtPd9h", "instantiation": "true", "filament_type": [ "PETG-GF" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.2 nozzle.json index 52c98be3a0..8fffe5d1a9 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "hWJXKDKNjeBqYYFk", - "filament_id": "GFL99", + "filament_id": "OF4nQ62r", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.6 nozzle.json index ab3cc9c974..9f5cfa548b 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "LMfV673NzArmzY44", - "filament_id": "GFL99", + "filament_id": "OF4nQ62r", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.8 nozzle.json index 0dc39007eb..444c03e6ea 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "CyXcxvEKE6gnCRm9", - "filament_id": "GFL99", + "filament_id": "OF4nQ62r", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json index 449e7e207a..3dc9c3c692 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "g7OVjk2xNWWNQo9D", - "filament_id": "GFB99", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json index c2f7dab865..8e446f1f83 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "EdgtTQVIiPatR9Rt", - "filament_id": "GFB99", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json index ade21c62a6..198c392cd1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "UTbL94nFN0Cx30p6", - "filament_id": "GFB99", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json index 5648eb9fd5..ff845fb81c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "INxFTcta59v2Ukpy", - "filament_id": "GFB99", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json index e49360108e..34d98b4b1c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "AOa9WW2IN1VHGXGM", - "filament_id": "QD_0_1_7", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json index 951227fba2..3dbeaf452f 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "qdagUM7IIKyfHB2g", - "filament_id": "QD_0_1_7", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json index c7f30d1c03..183fe2cf8f 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "CwsM4SCrRAhAJVfN", - "filament_id": "QD_0_1_7", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json index a255f2e368..878f91711e 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Basic", "from": "system", "setting_id": "HE3KK8QRsGrgLnr5", - "filament_id": "QD_0_1_7", + "filament_id": "OF4nQ62r", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic.json b/resources/profiles/Qidi/filament/QIDI PLA Basic.json index c5e219dd3f..5456c83805 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "UlF92qvJnOYzq0mw", - "filament_id": "GFL99", + "filament_id": "OF4nQ62r", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.2 nozzle.json index 25eeab9475..4cce2a6f5c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "vzT3dsogzkZSegM0", - "filament_id": "GFL99", + "filament_id": "OFughwKn", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.6 nozzle.json index bbea662f87..8fc9a37ed1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "rdGuWICdcIZ3fXJb", - "filament_id": "GFL99", + "filament_id": "OFughwKn", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.8 nozzle.json index 6418a8fa5e..3acc12ff0a 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "9z0BoiNtKlwPoCI4", - "filament_id": "GFL99", + "filament_id": "OFughwKn", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json index 86b7154e88..061f7526f3 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "Txg82qpCGVco78Ih", - "filament_id": "GFB99", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json index 9097ca2c19..1d921fecff 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "smHGcdmpWzQy1vW3", - "filament_id": "GFB99", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json index 69f09b85ca..8eb3335beb 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "hGKQJNUIQR0srofE", - "filament_id": "GFB99", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json index f945029342..b5f8c2a48c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "kARyA9JRV7f6Wu3E", - "filament_id": "GFB99", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json index a6d7f3b66b..4074d5a1cd 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "8JEZpQeq7FEoUQQd", - "filament_id": "QD_0_1_8", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json index 90b3876c66..ae55810f39 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "6Z2ery99xHlP2ciV", - "filament_id": "QD_0_1_8", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json index 35d11757ce..bb1c7bd1d1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "27eKOPtsQZIRwQYo", - "filament_id": "QD_0_1_8", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json index de7de4d803..59ffd6424f 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Matte Basic", "from": "system", "setting_id": "nf5VwfZ4gpGG5ufO", - "filament_id": "QD_0_1_8", + "filament_id": "OFughwKn", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic.json index 6204fd0d38..d9d99e5029 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "53yYF0gK91AQcKAy", - "filament_id": "GFL99", + "filament_id": "OFughwKn", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.2 nozzle.json index c316f431a1..a913878021 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "jpTA43XolFvODs9f", - "filament_id": "GFL99", + "filament_id": "OFhwiZ50", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.8 nozzle.json index 42556d2f6b..92819732f0 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "MGW0kfdHATaAzL1P", - "filament_id": "GFL99", + "filament_id": "OFglhKLM", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @0.6 nozzle.json index 93f8b8b239..17ecf6e992 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "eQOfNVt6OqCFj0bV", - "filament_id": "GFL99", + "filament_id": "OFKIQO2W", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json index f72a01ceda..adc3655403 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "tdL1kK6jLbREgYna", - "filament_id": "GFB99", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json index 05e66e91b6..0af8afe9a4 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "zfL5B7iAlx3PbJ1j", - "filament_id": "GFB99", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json index 29f2a5e350..5b8b3bd442 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "oZZn5VxcrwDJX9fE", - "filament_id": "GFB99", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json index 9aedb1f214..dadceacf8f 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "o1lfFStVDZMsdFtr", - "filament_id": "GFB99", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json index 49115068c6..574c3f9f38 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "xaGFbFpbrZ9v3RKy", - "filament_id": "QD_0_1_1", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json index 1a17ca5b69..466ff357d7 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "Vy1gTRsTAyLCcyTC", - "filament_id": "QD_0_1_1", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json index 03d69431af..35654f4798 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "Rt3UcmwI8R8fxKUa", - "filament_id": "QD_0_1_1", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json index e62b729ec9..ba7fd2b4b1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido", "from": "system", "setting_id": "dWb415VG0AlqTWFD", - "filament_id": "QD_0_1_1", + "filament_id": "OFKIQO2W", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.2 nozzle.json index 0392403caf..fb1959a33d 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "HK2fT6TYIIS94MZD", - "filament_id": "GFL99", + "filament_id": "OF3IKafc", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.6 nozzle.json index 34bcfbab7b..be4fc7fc47 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "User", "setting_id": "syivJeR1eO6H8wsK", - "filament_id": "GFL99", + "filament_id": "OF3IKafc", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.8 nozzle.json index 8e168e3347..e002a51409 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "User", "setting_id": "WC8KpzKwpQcHOStJ", - "filament_id": "GFL99", + "filament_id": "OF3IKafc", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json index 8cef6a51f9..a31fa6c9a5 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "RccxOqWrkZljiU5Y", - "filament_id": "GFB99", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json index 8a6e89f667..4448e4e24d 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "8KV7AfivVZHM6ReD", - "filament_id": "GFB99", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json index 648c46e717..7b9a1d8dc5 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "c5lFoguRq8sBwQ1K", - "filament_id": "GFB99", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json index 3cb87903ff..d90e8dbcdb 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "95NdLwU31HQJthJE", - "filament_id": "GFB99", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json index 28111c4f07..2c89680ccc 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "9YVeedSIviWv3n9F", - "filament_id": "QD_0_1_2", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json index dce300b652..5be44f4493 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "M7OXECFdZK4ZAoba", - "filament_id": "QD_0_1_2", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json index b95ff5f588..55b3b75f4c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "zXKa67Oj1qSsHlct", - "filament_id": "QD_0_1_2", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json index 14732dfba7..7f9c359004 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Matte", "from": "system", "setting_id": "iJ0geNRlmJkSPQfN", - "filament_id": "QD_0_1_2", + "filament_id": "OF3IKafc", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte.json index 0794ea2af4..d19017a05c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "gwmsxvv6cpmVlBDa", - "filament_id": "GFL99", + "filament_id": "OF3IKafc", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json index 92d6c1a902..9a56d85ace 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "oZC1FZ93158dUC0j", - "filament_id": "GFL99", + "filament_id": "OFANFm4x", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json index 26f96a21f6..6f37ee7eeb 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "Ix7a15ABLu7ykbMb", - "filament_id": "GFL99", + "filament_id": "OFANFm4x", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json index 4a4f0ffd10..de4e1c62fe 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "NdUtpGmW1Rl2h1Xc", - "filament_id": "GFL99", + "filament_id": "OFANFm4x", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json index a4d88bd29c..60bf1985b3 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "6obXUws35j7OkE2v", - "filament_id": "GFB99", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json index 571decc29b..c2dd7afbd9 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "Z0YSeNJQ3rKDwzsp", - "filament_id": "GFB99", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json index 4119d9da15..5fa9b63ea7 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "BoVtyU2REc0Ayzc4", - "filament_id": "GFB99", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json index 17f7a4818b..ff220ecd05 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "EKWOHWk37Yn1jS5V", - "filament_id": "GFB99", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json index 0ac378e9e8..57af588669 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "PvK39S1OvklDcZiB", - "filament_id": "QD_0_1_3", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json index 171ae933d8..4063f51d06 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "9CsEnbzkLosi8Y4Y", - "filament_id": "QD_0_1_3", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json index 46940dd8b6..7966d19908 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "kQGl05whrHW2T43U", - "filament_id": "QD_0_1_3", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json index b007ae0bf6..8b0517b09b 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Metal", "from": "system", "setting_id": "m2ctHQXA57lyjj4Q", - "filament_id": "QD_0_1_3", + "filament_id": "OFANFm4x", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json index b118bcfd02..03c9200bd0 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "yrS51y3N1ooM5ULv", - "filament_id": "GFL99", + "filament_id": "OFANFm4x", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json index dbe2d57ace..5ca5b12e28 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Silk", "from": "system", "setting_id": "AaBBTIJSMkxxTPDt", - "filament_id": "GFL99", + "filament_id": "OFW5FqkL", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json index 63cfb9c6b0..d0382ee04f 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Silk", "from": "system", "setting_id": "hnWx5ZM2ecclYvKA", - "filament_id": "GFB99", + "filament_id": "OFW5FqkL", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json index c81d897d30..5ea0e37bb8 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Silk", "from": "system", "setting_id": "bQTjglDv2qjgrUNl", - "filament_id": "GFB99", + "filament_id": "OFW5FqkL", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json index 0cb15c1cae..7e53839859 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Silk", "from": "system", "setting_id": "X0DxlkkldQnTUfLy", - "filament_id": "QD_0_1_4", + "filament_id": "OFW5FqkL", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json index bacf625ed2..4fa2ca7198 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PLA Rapido Silk", "from": "system", "setting_id": "McXMhVyp029M56kU", - "filament_id": "QD_0_1_4", + "filament_id": "OFW5FqkL", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json index b877e50774..7c90a10971 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "zifqr9yiIZKivCNu", - "filament_id": "GFL99", + "filament_id": "OFW5FqkL", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido.json index 1add171288..f1ecaf7790 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "JdGWg2Kn3T2L2Ai2", - "filament_id": "GFL99", + "filament_id": "OFKIQO2W", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @0.6 nozzle.json index 6d266568a1..44ad31c806 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "BTqlIKpYFQCC8gJt", - "filament_id": "GFL98", + "filament_id": "OFhWrAuP", "instantiation": "true", "pressure_advance": [ "0.01" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @0.8 nozzle.json index ed91757e71..f3aa8a98ac 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "0Wr2y2a7rHYbk5fS", - "filament_id": "GFL98", + "filament_id": "OFhWrAuP", "instantiation": "true", "pressure_advance": [ "0.008" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle.json index 3b236b0420..a3256ff5c8 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "xGqY059EYGUevj9G", - "filament_id": "GFL98", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle.json index cf77b2cdf0..146170c42a 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "Fh7yuJKSeYs8doRG", - "filament_id": "GFL98", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle.json index 49c9d3c0f2..fa27094b4b 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "vs5bFF3r8Kid59u9", - "filament_id": "GFL98", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle.json index 890f9d3f5a..85c8e28574 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "Uue4WvW1uAwK2o0Y", - "filament_id": "QD_0_1_5", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle.json index ed3f0d52ac..f77049928d 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "3SSQEk5a2vnHKG2g", - "filament_id": "QD_0_1_5", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json index 29df7c92ea..01650e5b11 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PLA-CF", "from": "system", "setting_id": "jlUhowcsrMLKZBHH", - "filament_id": "QD_0_1_5", + "filament_id": "OFhWrAuP", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json index d90bd4e3c8..c56717e27a 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "E30t78jBGCkTztFC", - "filament_id": "GFB99", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json index 20cbb98a2d..f5ec65de8b 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "pYmENqkzOsA9LRLW", - "filament_id": "GFB99", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json index d135252ac8..82f8ba4ac4 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "7ozi6TNb3ObLpD2v", - "filament_id": "GFB99", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json index eecd12264a..fddc4c3fe2 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "iNx7JrGG0r5s24dV", - "filament_id": "GFB99", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json index 50bc577d0e..510f62273a 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "tQnGlZa0FL2FpHho", - "filament_id": "GFB99", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json index 2060c98114..b0eba4d48b 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "HVN6Bfz9FENqgw14", - "filament_id": "QD_0_1_44", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json index 37cd2a368d..ebbadcecbc 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "T5f0IJeUy3XIzrVw", - "filament_id": "QD_0_1_44", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json index 2910fe2bd7..eccaa7c066 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI PPS-CF", "from": "system", "setting_id": "eXV1ZPiBolFIU4Ub", - "filament_id": "QD_0_1_44", + "filament_id": "OFZOuWrO", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF.json b/resources/profiles/Qidi/filament/QIDI PPS-CF.json index 13db20b99f..b6465a1de8 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "ODM3oXV1OSv3qTbZ", - "filament_id": "GFN98", + "filament_id": "OFZOuWrO", "instantiation": "true", "filament_type": [ "PPS-CF" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json index 6f520e1d27..be4cc6b611 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle", "inherits": "QIDI PPS-GF", "setting_id": "VgQiY3csDj6bBWSk", - "filament_id": "GFB99", + "filament_id": "OFp57RRC", "instantiation": "true", "filament_settings_id": [ "QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json index d7e1fa61d5..cc450abf5f 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle", "inherits": "QIDI PPS-GF", "setting_id": "8hFaMBYD7pnmsZWd", - "filament_id": "GFB99", + "filament_id": "OFp57RRC", "instantiation": "true", "filament_settings_id": [ "QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json index d3adec2da2..9245da8045 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle", "inherits": "QIDI PPS-GF", "setting_id": "BcrvpHAPx0FBvOi3", - "filament_id": "GFB99", + "filament_id": "OFp57RRC", "instantiation": "true", "filament_settings_id": [ "QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-GF.json b/resources/profiles/Qidi/filament/QIDI PPS-GF.json index 8688747e35..dcee07928b 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "uoOOXPpTEGa9bqhx", - "filament_id": "QD_0_1_46", + "filament_id": "OFp57RRC", "instantiation": "true", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle.json index 7093e58d9e..ad53eb97eb 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PAHT", "from": "system", "setting_id": "aQUPvUd9uPbi7HEx", - "filament_id": "QD_0_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.6 nozzle.json index 2d85b489c1..c214764ce8 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PAHT", "from": "system", "setting_id": "2RpRJwkUVzHwU6Ts", - "filament_id": "QD_0_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PAHT @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.8 nozzle.json index 77b6a34209..3ecffe9c54 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PAHT @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PAHT", "from": "system", "setting_id": "Arig0uL9inQi0NKf", - "filament_id": "QD_0_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PAHT @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PAHT.json b/resources/profiles/Qidi/filament/QIDI Support For PAHT.json index 338628640c..465d3239fd 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PAHT.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PAHT.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "7cd7R9xbuNtLfCHa", - "filament_id": "GFN98", + "filament_id": "OFXn3Vd9", "instantiation": "true", "filament_type": [ "PAHT-S" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.4 nozzle.json index bd6310ae72..c5717ecee8 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PET/PA", "from": "system", "setting_id": "EzPLJJzV7W1GfAuZ", - "filament_id": "QD_0_1_33", + "filament_id": "OFqcL5UF", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PET/PA @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.6 nozzle.json index 7899b0435f..4282ec8718 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PET/PA", "from": "system", "setting_id": "Nfu1o1YZL9zK1VNS", - "filament_id": "QD_0_1_33", + "filament_id": "OFqcL5UF", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PET/PA @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.8 nozzle.json index 43ffafb5bb..3791f09e5a 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PET-PA @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI Support For PET/PA", "from": "system", "setting_id": "xJQLw0SvSPItH0wa", - "filament_id": "QD_0_1_33", + "filament_id": "OFqcL5UF", "instantiation": "true", "filament_settings_id": [ "QIDI Support For PET/PA @Qidi X-Plus 4 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json b/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json index cf18d83f80..d0c8a33368 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "Am158VMH3y6FDxON", - "filament_id": "GFN98", + "filament_id": "OFqcL5UF", "instantiation": "true", "filament_type": [ "PA-S" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.4 nozzle.json index a99ea32ca7..21cc9d864e 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI TPU-Aero", "from": "system", "setting_id": "O7oxTgsH9q8jlqzd", - "filament_id": "GFB99", + "filament_id": "OFMDHOcT", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-Aero @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.6 nozzle.json index 159561dbbd..8fd94ae68b 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI TPU-Aero", "from": "system", "setting_id": "FR1LQ5DM0upGQQfs", - "filament_id": "GFB99", + "filament_id": "OFMDHOcT", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-Aero @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.4 nozzle.json index 18134da7e2..193a5d327f 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI TPU-Aero", "from": "system", "setting_id": "6PFep2VmiWoOZLSn", - "filament_id": "QD_0_1_49", + "filament_id": "OFMDHOcT", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-Aero @Qidi X-Plus 4 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle.json index fc9b28c722..9ee1ce187e 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI TPU-Aero", "from": "system", "setting_id": "cqXDJN6nwBX3xVB7", - "filament_id": "QD_0_1_49", + "filament_id": "OFMDHOcT", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero.json index 70f7e16ecd..9c8171b3b1 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "BARooxJKaDXbGd9B", - "filament_id": "GFU99", + "filament_id": "OFMDHOcT", "instantiation": "true", "filament_type": [ "TPU-AERO" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json index 897e274d70..323efc4494 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle", "inherits": "QIDI TPU-GF", "setting_id": "GufOfCCphUDzeSo1", - "filament_id": "GFB99", + "filament_id": "OF9EHUKK", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json index 0bd0d3ce6a..70c0b04f41 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle", "inherits": "QIDI TPU-GF", "setting_id": "nY6q9vd6lpaXiQpc", - "filament_id": "GFB99", + "filament_id": "OF9EHUKK", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json index 528ae87a68..4b2637fbcf 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle", "inherits": "QIDI TPU-GF", "setting_id": "67agKUajM0pFFhia", - "filament_id": "GFB99", + "filament_id": "OF9EHUKK", "instantiation": "true", "filament_settings_id": [ "QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle" diff --git a/resources/profiles/Qidi/filament/QIDI TPU-GF.json b/resources/profiles/Qidi/filament/QIDI TPU-GF.json index af3827eb77..3f2eef6661 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-GF.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-GF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "r8sdMolKGn3b52NX", - "filament_id": "QD_0_1_15", + "filament_id": "OF9EHUKK", "instantiation": "true", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.4 nozzle.json index 1921fd982c..7c3f2912e3 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "RgmbbSJpyUyTXPO9", - "filament_id": "GFB99", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.6 nozzle.json index d800b11f70..22da9225ea 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "aiGnr6fBoUCuwPS5", - "filament_id": "GFB99", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.8 nozzle.json index 082b2893a3..5c89625458 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "G0qM351aUv23WFmP", - "filament_id": "GFB99", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.4 nozzle.json index 3871891090..fcaa74f9c7 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "5Two6xier5Pt2f8V", - "filament_id": "QD_0_1_26", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.6 nozzle.json index 31b300d45f..8c8bc9d4f7 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "H011um5zj6afHdTI", - "filament_id": "QD_0_1_26", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json index 8a2ce25ae4..fc03e055ef 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI UltraPA-CF25", "from": "system", "setting_id": "26BECX2hYZ6JNFRq", - "filament_id": "QD_0_1_26", + "filament_id": "OF9PELEb", "instantiation": "true", "fan_max_speed": [ "40" diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json index 9ae8202bce..3c84e2c8e5 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "2AOnWEOsaS2w9Nmr", - "filament_id": "GFN98", + "filament_id": "OF9PELEb", "instantiation": "true", "filament_type": [ "UltraPA-CF25" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.6 nozzle.json index 60731be079..86ef520191 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "y4aq26TNkKEafwbN", - "filament_id": "GFL99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "slow_down_layer_time": [ "8" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.8 nozzle.json index a33c51e4b6..96650a289e 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "1y0tvUmMkDHYmvWC", - "filament_id": "GFL99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "slow_down_layer_time": [ "8" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.4 nozzle.json index 6a9b8b61f2..900ffdb085 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "n4ywS2KDL59hb8nA", - "filament_id": "GFB99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.6 nozzle.json index 2c556b42d6..be06885f90 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "AZB82l14yp3vT5sz", - "filament_id": "GFB99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.8 nozzle.json index 825fc4d3bd..37805be62a 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "0ZZ9ygXQqnKrrWlL", - "filament_id": "GFB99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.4 nozzle.json index ec46dd83ff..0bf0bc31f2 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "gfnllytSwMCbiB6b", - "filament_id": "QD_0_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.6 nozzle.json index 1e7359636c..260d987ec0 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "PLrMThf2TXZGtp7N", - "filament_id": "QD_0_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json index f184003ac0..d3fd897a93 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "QIDI WOOD Rapido", "from": "system", "setting_id": "ErWlv0gKexLj8wjB", - "filament_id": "QD_0_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "true", "activate_air_filtration": [ "1" diff --git a/resources/profiles/Qidi/filament/QIDI WOOD Rapido.json b/resources/profiles/Qidi/filament/QIDI WOOD Rapido.json index b80cb7bbe8..22492ba0a8 100644 --- a/resources/profiles/Qidi/filament/QIDI WOOD Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI WOOD Rapido.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "NANyXYa8NOQ45Gy2", - "filament_id": "GFL99", + "filament_id": "OFvdZ2bx", "instantiation": "true", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json index 1002faa656..1ea1175292 100644 --- a/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi ASA-Aero", "from": "system", "setting_id": "OVQGLLS3QOoDEPNp", - "filament_id": "GFB99", + "filament_id": "OFG4do34", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json index e70b832791..56af153f3d 100644 --- a/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi ASA-Aero", "from": "system", "setting_id": "FKWhpunDSV0iusbz", - "filament_id": "GFB99", + "filament_id": "OFG4do34", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi ASA-Aero.json b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json index 72e771f083..3095c0a964 100644 --- a/resources/profiles/Qidi/filament/Qidi ASA-Aero.json +++ b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "xTg8UPJXoXdyGccz", - "filament_id": "GFB99", + "filament_id": "OFG4do34", "instantiation": "true", "filament_type": [ "ASA-AERO" diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle.json deleted file mode 100644 index b10017757b..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Max 3 0.6 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "DWfVtYimjZxqyDzM", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Max 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle.json deleted file mode 100644 index e8d6372721..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Max 3 0.8 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "ausfQ4SuKLMuruFb", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Max 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle.json deleted file mode 100644 index 6cd43b3246..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.6 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "EpYu1ME5tSsFYirK", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Plus 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle.json deleted file mode 100644 index ce7016ad71..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Plus 3 0.8 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "wZ8U1Ga1bQXbd2nN", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Plus 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle.json deleted file mode 100644 index 2289deef1e..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.6 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "bKi57zeQX7mAw7kl", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Smart 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle.json deleted file mode 100644 index 15336f706a..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA @Qidi X-Smart 3 0.8 nozzle", - "inherits": "Qidi Generic PLA", - "from": "system", - "setting_id": "lscOLQTFf4Y3Ax1f", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Smart 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json deleted file mode 100644 index a27251d78a..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.2 nozzle", - "inherits": "Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle", - "from": "system", - "setting_id": "HaE0HFgjT8wysrVT", - "filament_id": "GFL99", - "instantiation": "true", - "slow_down_layer_time": [ - "6" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "pressure_advance": [ - "0.034" - ], - "nozzle_temperature": [ - "220" - ], - "compatible_printers": [ - "Qidi X-Plus 4 0.2 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json deleted file mode 100644 index 2f0e4b53b1..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA High Speed @Qidi X-Plus 4 0.4 nozzle", - "inherits": "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle", - "from": "system", - "setting_id": "vxXEJP3C4k5Zjvsx", - "filament_id": "GFL99", - "instantiation": "true", - "slow_down_layer_time": [ - "6" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "pressure_advance": [ - "0.034" - ], - "nozzle_temperature": [ - "220" - ], - "compatible_printers": [ - "Qidi X-Plus 4 0.4 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json deleted file mode 100644 index 865f18fe1d..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.6 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "7Bxn8OUT1MJbNvxC", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Max 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json deleted file mode 100644 index 320e1a5e37..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Max 3 0.8 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "miQxMqjI3odS4V1O", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Max 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json deleted file mode 100644 index 5942ed4406..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "oAIJyTMV5EnXTJDF", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Plus 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json deleted file mode 100644 index 62529fb34e..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "Ya2viE6yXmdshs75", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Plus 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json deleted file mode 100644 index 6d7b0c81e9..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "xiomvJqo2HAwsxT0", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.016" - ], - "compatible_printers": [ - "Qidi X-Smart 3 0.6 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json deleted file mode 100644 index d81651533a..0000000000 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "filament", - "name": "Qidi Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", - "inherits": "Qidi Generic PLA+", - "from": "system", - "setting_id": "3SemJWSvKeN7OXVy", - "filament_id": "GFL99", - "instantiation": "true", - "pressure_advance": [ - "0.008" - ], - "compatible_printers": [ - "Qidi X-Smart 3 0.8 nozzle" - ] -} diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json index 072f445d57..4036bc407c 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "0J1PKDesfiwmiXT3", - "filament_id": "GFB99", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json index 02776d5d00..70aff6d258 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "CYzutFjZzD3tLXwM", - "filament_id": "GFB99", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json index 60a8329be2..c0aaea29c7 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "YJvwrEo0BwfXMOqo", - "filament_id": "GFB99", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json index 6116b16149..458556f94c 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "WZuAmHHfdACv1F6k", - "filament_id": "QD_0_1_34", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json index 859df30d32..296581a97a 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "JCCjjewJVs13S08j", - "filament_id": "QD_0_1_34", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json index 63911a1567..ce939299ba 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi PC-ABS-FR", "from": "system", "setting_id": "lWfYhsmJo1Q8FmM8", - "filament_id": "QD_0_1_34", + "filament_id": "OFjD3YTW", "instantiation": "true", "activate_chamber_temp_control": [ "0" diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json index e6faf129d7..aac6e6f127 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "0pBt0usHW6MGQZXl", - "filament_id": "GFB99", + "filament_id": "OFjD3YTW", "instantiation": "true", "filament_type": [ "PC-ABS-FR" diff --git a/resources/profiles/Qidi/filament/Qidi PLA-CF.json b/resources/profiles/Qidi/filament/Qidi PLA-CF.json index 6b8a3e8899..ce37e1b42c 100644 --- a/resources/profiles/Qidi/filament/Qidi PLA-CF.json +++ b/resources/profiles/Qidi/filament/Qidi PLA-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "oqzsRA4OuCqTWPGM", - "filament_id": "GFL98", + "filament_id": "OFjoAe0R", "instantiation": "true", "filament_flow_ratio": [ "0.96" diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json index aa18a6f5e7..1121d1a200 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi TPU 95A-HF", "from": "system", "setting_id": "zqfVVsyY5ZMsfqjK", - "filament_id": "GFB99", + "filament_id": "OFzAWsca", "instantiation": "true", "fan_cooling_layer_time": [ "60" diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle.json index 7679296a7b..747a31d4bd 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi TPU 95A-HF", "from": "system", "setting_id": "fZISb4jbF8jv60dL", - "filament_id": "GFB99", + "filament_id": "OFzAWsca", "instantiation": "true", "fan_cooling_layer_time": [ "60" diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.4 nozzle.json index 469f190953..9cce69fc3b 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi TPU 95A-HF", "from": "system", "setting_id": "MQ5o43Gclt9U65x6", - "filament_id": "QD_0_1_50", + "filament_id": "OFzAWsca", "instantiation": "true", "fan_cooling_layer_time": [ "60" diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.8 nozzle.json index e56f67abf2..3c1e2d5987 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF @Qidi X-Plus 4 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Qidi TPU 95A-HF", "from": "system", "setting_id": "wNxGljiKmTzCPgzk", - "filament_id": "QD_0_1_50", + "filament_id": "OFzAWsca", "instantiation": "true", "fan_cooling_layer_time": [ "60" diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json index ba588dc809..ffbdbc9e5f 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "QCS6zw9BRMWWvrCo", - "filament_id": "GFU99", + "filament_id": "OFzAWsca", "instantiation": "true", "filament_type": [ "TPU" diff --git a/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json b/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json index 4e4424936f..ce29e0a165 100644 --- a/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json +++ b/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "uVa250OrqClMz41k", - "filament_id": "GFG99", + "filament_id": "OFYE7YZw", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" @@ -52,7 +52,7 @@ "235" ], "filament_vendor": [ - "Generic" + "Tinmorry" ], "compatible_printers": [ "Qidi X-Plus 0.4 nozzle", diff --git a/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json index 62e6a4204e..e59aa7077f 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Bambu ABS@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json index cdfabbe5a0..77ba79c419 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Bambu PETG@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json index 9db6ab9698..cb14577cc5 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Bambu PLA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json index e01dbb5296..90cac58dbe 100644 --- a/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic ABS@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_11", + "filament_id": "OFY9muEs", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json index 655713b891..6d10f9e6a6 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic PC@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_23", + "filament_id": "OFLakOUI", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json index e855840148..3c470bad37 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic PETG@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_41", + "filament_id": "OFYPdQJh", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json index a4ee80e67d..5ce7036913 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic PLA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_1", + "filament_id": "OFDSrzZ8", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json index e83be7d908..afa2c0b90b 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic PLA Silk@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_4", + "filament_id": "OFesA6rF", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json index 924752466e..281538953a 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic PLA+@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFEWYR89", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json index 10a520531d..4f96f760b2 100644 --- a/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Generic TPU 95A@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_0_50", + "filament_id": "OFjiXpyf", "instantiation": "false", "filament_adhesiveness_category": [ "600" diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json index d7e4f1c7ed..09f7e6a9a5 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json @@ -3,7 +3,7 @@ "name": "HATCHBOX ABS@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json index 9e9abfbd09..89c266e681 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PETG@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json index 2cb6be1fc3..844a9f0942 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "HATCHBOX PLA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json index 485db36e9a..acc9a9f96d 100644 --- a/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Overture ABS@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json index 289af93715..91cf8d1e35 100644 --- a/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "Overture PLA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json index 215fb00a92..603dc9da52 100644 --- a/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json @@ -3,7 +3,7 @@ "name": "PolyLite ABS@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json index e8fe4ba7f5..01d5e352ef 100644 --- a/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json index 0b89883f41..ea38a66fe4 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Odorless@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_14", + "filament_id": "OFma5TXH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json index 3ba45a14dc..89647b53d5 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_11", + "filament_id": "OFT2jon4", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json index 64dc667a44..beb4d8f07b 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ABS Rapido Metal@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_13", + "filament_id": "OFeCJqxx", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json index 218e883448..e1ddebc083 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ABS-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_12", + "filament_id": "OFt3HtlG", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json index c6937e0080..27a6187a1d 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ASA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_18", + "filament_id": "OFTsHNQi", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json index 3a66fdea86..8fc3684bfa 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-Aero@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_19", + "filament_id": "OFu1E4ur", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json index 3cc72406a4..5da0ac2e10 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI ASA-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_20", + "filament_id": "OF1W7c76", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json index e268f6081c..5d03d0f486 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PA12-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_27", + "filament_id": "OFn6WpN7", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json index 2bf1ca53fc..f76fe1157e 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_30", + "filament_id": "OFKgmsqE", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json index 37afc97c29..8a0c9f3324 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PAHT-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_31", + "filament_id": "OFo15hcT", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json index 7bffaf11b5..a3e381a55c 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PC/ABS-FR@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_34", + "filament_id": "OFDIrhbu", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json index 4745e19ad2..a78fefa651 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PEBA 95A@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_36", + "filament_id": "OFhiJE7Y", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json index 6322639eb3..6573bb507a 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PET-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_37", + "filament_id": "OFKfJTwL", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json index f18e2de950..8ee271de38 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PET-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_38", + "filament_id": "OFhx4uOG", "instantiation": "false", "box_temperature_range_high": [ "50" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json index c7261208cc..5dc9cc4cda 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Basic@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_39", + "filament_id": "OFuJ49uH", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json index 3050d4abd6..1a888d7bc6 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Rapido@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_41", + "filament_id": "OF4S3To3", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json index 783925d2b5..885ff3c1c0 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Tough@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_40", + "filament_id": "OFQ40XeN", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json index 21477a006f..a5f0628a80 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG Translucent@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_45", + "filament_id": "OFf0MkD5", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json index f3aabb1ef5..4acccce76b 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_42", + "filament_id": "OF4iWKrE", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json index 9b0379ea52..f1501c1e7e 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PETG-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_43", + "filament_id": "OFdtPd9h", "instantiation": "false", "box_temperature_range_high": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json index 2dd1d28dd4..1340cd0d03 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Basic@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_7", + "filament_id": "OF4nQ62r", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json index dd407427ce..d23f66eede 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Matte Basic@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_8", + "filament_id": "OFughwKn", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json index 1e6ea5b8e0..b072ca8019 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_1", + "filament_id": "OFKIQO2W", "instantiation": "false", "cool_plate_temp_initial_layer": [ "45" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json index 95d0666c1d..9963e2418a 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Matte@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_2", + "filament_id": "OF3IKafc", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json index 0f848e6d5b..89e966f907 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Metal@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_3", + "filament_id": "OFANFm4x", "instantiation": "false", "filament_type": [ "PLA" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json index d5f3d83679..64620cdff7 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA Rapido Silk@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_4", + "filament_id": "OFW5FqkL", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json index 7331ce75ad..f5a72549cf 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PLA-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_5", + "filament_id": "OFhWrAuP", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json index c5500bb3c0..a560f6933d 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-CF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_44", + "filament_id": "OFZOuWrO", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json index 318920501f..de93c9e149 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI PPS-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_46", + "filament_id": "OFp57RRC", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json index 2a1eddd8a2..161f9bd4c3 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PAHT@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_32", + "filament_id": "OFXn3Vd9", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json index 64fbb1eb22..c437350e37 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI Support For PET/PA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_33", + "filament_id": "OFqcL5UF", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json index fea6c771ac..9a1cafaf3c 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI TPU 95A-HF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_50", + "filament_id": "OFR1XLMN", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json index 7aeb542fec..a19ddd39ea 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-Aero@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_49", + "filament_id": "OFMDHOcT", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json index 25a934fd19..2739b9f1a0 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI TPU-GF@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_15", + "filament_id": "OF9EHUKK", "instantiation": "false", "fan_cooling_layer_time": [ "100" diff --git a/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json index 1194e6c03d..618b506251 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_24", + "filament_id": "OFWDe7YH", "instantiation": "false", "box_temperature_range_high": [ "55" diff --git a/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json index 21629d63c9..140dd98bdc 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI UltraPA-CF25@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_26", + "filament_id": "OF9PELEb", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json index d62533d44e..a8824c9917 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json @@ -3,7 +3,7 @@ "name": "QIDI WOOD Rapido@X-Max 4-Series", "inherits": "fdm_filament_x4_common", "from": "system", - "filament_id": "QD_3_1_6", + "filament_id": "OFvdZ2bx", "instantiation": "false", "additional_cooling_fan_speed": [ "100" diff --git a/resources/profiles/Qidi/filament/X5/Bambu ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Bambu ABS @X-Plus 5.json index 1464576f61..0e0fdb08b0 100644 --- a/resources/profiles/Qidi/filament/X5/Bambu ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Bambu ABS @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFhuaUQB", "name": "Bambu ABS@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Bambu PETG @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Bambu PETG @X-Plus 5.json index 0a4d2ce22c..ef6ea57354 100644 --- a/resources/profiles/Qidi/filament/X5/Bambu PETG @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Bambu PETG @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFLYDngx", "name": "Bambu PETG@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Bambu PLA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Bambu PLA @X-Plus 5.json index 7660c8174d..ad90cb8a81 100644 --- a/resources/profiles/Qidi/filament/X5/Bambu PLA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Bambu PLA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OF1dpPrW", "name": "Bambu PLA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json index 4bb0cbe387..accf79987f 100644 --- a/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_11", + "filament_id": "OFY9muEs", "name": "Generic ABS@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic PC @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic PC @X-Plus 5.json index 360f0ee803..79745adfce 100644 --- a/resources/profiles/Qidi/filament/X5/Generic PC @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic PC @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_23", + "filament_id": "OFLakOUI", "name": "Generic PC@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic PETG @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic PETG @X-Plus 5.json index ab1b23bb60..0e65fe68f7 100644 --- a/resources/profiles/Qidi/filament/X5/Generic PETG @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic PETG @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_41", + "filament_id": "OFYPdQJh", "name": "Generic PETG@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic PLA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic PLA @X-Plus 5.json index e3939b7796..3b7690cc38 100644 --- a/resources/profiles/Qidi/filament/X5/Generic PLA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic PLA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_1", + "filament_id": "OFDSrzZ8", "name": "Generic PLA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic PLA Silk @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic PLA Silk @X-Plus 5.json index 1c0d325a37..afa64cc602 100644 --- a/resources/profiles/Qidi/filament/X5/Generic PLA Silk @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic PLA Silk @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_4", + "filament_id": "OFesA6rF", "name": "Generic PLA Silk@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic PLA+ @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic PLA+ @X-Plus 5.json index e1d40b179f..72d7b6f9c6 100644 --- a/resources/profiles/Qidi/filament/X5/Generic PLA+ @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic PLA+ @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFEWYR89", "name": "Generic PLA+@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Generic TPU 95A @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic TPU 95A @X-Plus 5.json index d5f56d408b..b98a3a0a2f 100644 --- a/resources/profiles/Qidi/filament/X5/Generic TPU 95A @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic TPU 95A @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_0_50", + "filament_id": "OFjiXpyf", "name": "Generic TPU 95A@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/HATCHBOX ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/HATCHBOX ABS @X-Plus 5.json index 3f5987240c..323fcf3e90 100644 --- a/resources/profiles/Qidi/filament/X5/HATCHBOX ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/HATCHBOX ABS @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFwLBAGf", "name": "HATCHBOX ABS@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/HATCHBOX PETG @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/HATCHBOX PETG @X-Plus 5.json index 5f794e561c..6f0495c45b 100644 --- a/resources/profiles/Qidi/filament/X5/HATCHBOX PETG @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/HATCHBOX PETG @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFIWMSGX", "name": "HATCHBOX PETG@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/HATCHBOX PLA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/HATCHBOX PLA @X-Plus 5.json index 094e540793..7ee05c27f7 100644 --- a/resources/profiles/Qidi/filament/X5/HATCHBOX PLA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/HATCHBOX PLA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFeelsSM", "name": "HATCHBOX PLA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Overture ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Overture ABS @X-Plus 5.json index ea12b78ead..82863e8d80 100644 --- a/resources/profiles/Qidi/filament/X5/Overture ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Overture ABS @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFK8XHPn", "name": "Overture ABS@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Overture PLA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Overture PLA @X-Plus 5.json index 571eb2bbeb..0dbb498feb 100644 --- a/resources/profiles/Qidi/filament/X5/Overture PLA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Overture PLA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFc3xdm9", "name": "Overture PLA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/PolyLite ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/PolyLite ABS @X-Plus 5.json index 48b6caa32b..1cf57f8ce3 100644 --- a/resources/profiles/Qidi/filament/X5/PolyLite ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/PolyLite ABS @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFOvv91M", "name": "PolyLite ABS@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/PolyLite PLA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/PolyLite PLA @X-Plus 5.json index 5b37f7ae8a..4702c9ba1c 100644 --- a/resources/profiles/Qidi/filament/X5/PolyLite PLA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/PolyLite PLA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OF5CgdDq", "name": "PolyLite PLA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/Polymaker PLA-HT @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Polymaker PLA-HT @X-Plus 5.json index f3c54e81f1..233542bab1 100644 --- a/resources/profiles/Qidi/filament/X5/Polymaker PLA-HT @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Polymaker PLA-HT @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFfYHK5z", "name": "Polymaker PLA-HT@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ABS Odorless @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ABS Odorless @X-Plus 5.json index a2f14984a0..7a80b433df 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ABS Odorless @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ABS Odorless @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_14", + "filament_id": "OFma5TXH", "name": "QIDI ABS Odorless@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido @X-Plus 5.json index 0ecb9c656c..0afffa18f4 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_11", + "filament_id": "OFT2jon4", "name": "QIDI ABS Rapido@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json index f3603eda99..9614cab30f 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_13", + "filament_id": "OFeCJqxx", "name": "QIDI ABS Rapido Metal@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ABS-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ABS-GF @X-Plus 5.json index 2ab2fbfc84..5336842811 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ABS-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ABS-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_12", + "filament_id": "OFt3HtlG", "name": "QIDI ABS-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ASA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ASA @X-Plus 5.json index 97127fe57b..b8fe444dd2 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ASA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ASA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_18", + "filament_id": "OFTsHNQi", "name": "QIDI ASA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ASA-Aero @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ASA-Aero @X-Plus 5.json index 14423fd58c..73fb83834d 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ASA-Aero @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ASA-Aero @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_19", + "filament_id": "OFu1E4ur", "name": "QIDI ASA-Aero@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI ASA-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI ASA-CF @X-Plus 5.json index 9a8958c860..12606c993b 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI ASA-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI ASA-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_20", + "filament_id": "OF1W7c76", "name": "QIDI ASA-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json index 3464bed9a3..6abc420237 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_27", + "filament_id": "OFn6WpN7", "name": "QIDI PA12-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PA6-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PA6-CF @X-Plus 5.json index 9b6a66f61b..1c70ef53a0 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PA6-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PA6-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_25", + "filament_id": "OFZ3K2cL", "name": "QIDI PA6-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json index fcfccfe0f6..ca5591813d 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_30", + "filament_id": "OFKgmsqE", "name": "QIDI PAHT-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json index 3c0f1056ed..411ae26214 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_31", + "filament_id": "OFo15hcT", "name": "QIDI PAHT-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PC-ABS-FR @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PC-ABS-FR @X-Plus 5.json index b6c6fb3b64..c7e407cd2e 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PC-ABS-FR @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PC-ABS-FR @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_34", + "filament_id": "OFDIrhbu", "name": "QIDI PC/ABS-FR@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PEBA 95A @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PEBA 95A @X-Plus 5.json index 43410eabe1..bf56f12203 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PEBA 95A @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PEBA 95A @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_36", + "filament_id": "OFhiJE7Y", "name": "QIDI PEBA 95A@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PET-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PET-CF @X-Plus 5.json index 162cbec691..9163c3344e 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PET-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PET-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_37", + "filament_id": "OFKfJTwL", "name": "QIDI PET-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PET-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PET-GF @X-Plus 5.json index 84310856cc..83e68f579f 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PET-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PET-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_38", + "filament_id": "OFhx4uOG", "name": "QIDI PET-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG Basic @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG Basic @X-Plus 5.json index 46810f49c3..7254fd50bb 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG Basic @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG Basic @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_39", + "filament_id": "OFuJ49uH", "name": "QIDI PETG Basic@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG Rapido @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG Rapido @X-Plus 5.json index fd506d8e74..01a3e6cabe 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG Rapido @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG Rapido @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_41", + "filament_id": "OF4S3To3", "name": "QIDI PETG Rapido@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG Tough @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG Tough @X-Plus 5.json index 3e9f0a1cdf..ed1b218139 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG Tough @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG Tough @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_40", + "filament_id": "OFQ40XeN", "name": "QIDI PETG Tough@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG Translucent @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG Translucent @X-Plus 5.json index 62ea937028..94792b7a75 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG Translucent @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG Translucent @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_45", + "filament_id": "OFf0MkD5", "name": "QIDI PETG Translucent@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG-CF @X-Plus 5.json index fcddc636a8..19f7f473dd 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_42", + "filament_id": "OF4iWKrE", "name": "QIDI PETG-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PETG-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PETG-GF @X-Plus 5.json index fa65907d3d..3bed003091 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PETG-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PETG-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_43", + "filament_id": "OFdtPd9h", "name": "QIDI PETG-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Basic @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Basic @X-Plus 5.json index 0ee194dfb3..30e12990e3 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Basic @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Basic @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_7", + "filament_id": "OF4nQ62r", "name": "QIDI PLA Basic@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Matte Basic @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Matte Basic @X-Plus 5.json index 7796bf1faa..2843092024 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Matte Basic @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Matte Basic @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_8", + "filament_id": "OFughwKn", "name": "QIDI PLA Matte Basic@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido @X-Plus 5.json index 1aa1803258..6327908055 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_1", + "filament_id": "OFKIQO2W", "name": "QIDI PLA Rapido@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json index d8cbd06ea1..9e2380faea 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_2", + "filament_id": "OF3IKafc", "name": "QIDI PLA Rapido Matte@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json index 404b7cd1e8..bc9f655538 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_3", + "filament_id": "OFANFm4x", "name": "QIDI PLA Rapido Metal@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA Silk @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA Silk @X-Plus 5.json index 57c0c3e1dc..2b6574b104 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA Silk @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA Silk @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_4", + "filament_id": "OF2TQpOO", "name": "QIDI PLA Silk@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PLA-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PLA-CF @X-Plus 5.json index 1c4d8c99e3..390b331556 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PLA-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PLA-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_5", + "filament_id": "OFhWrAuP", "name": "QIDI PLA-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PPS-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PPS-CF @X-Plus 5.json index c6be7046f6..b482042819 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PPS-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PPS-CF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_44", + "filament_id": "OFZOuWrO", "name": "QIDI PPS-CF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json index 757d4dbf3d..615d895851 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_46", + "filament_id": "OFp57RRC", "name": "QIDI PPS-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI Support For PAHT @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI Support For PAHT @X-Plus 5.json index ed1222daa9..63941c851b 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI Support For PAHT @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI Support For PAHT @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_32", + "filament_id": "OFXn3Vd9", "name": "QIDI Support For PAHT@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI Support For PET-PA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI Support For PET-PA @X-Plus 5.json index 346c3cc3eb..969fc2bccc 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI Support For PET-PA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI Support For PET-PA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_33", + "filament_id": "OFqcL5UF", "name": "QIDI Support For PET/PA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI TPU 95A-HF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI TPU 95A-HF @X-Plus 5.json index 4721ab171c..7b06c92253 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI TPU 95A-HF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI TPU 95A-HF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_50", + "filament_id": "OFR1XLMN", "name": "QIDI TPU 95A-HF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI TPU-Aero @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI TPU-Aero @X-Plus 5.json index b6eee90916..4ede2d7d6e 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI TPU-Aero @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI TPU-Aero @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_49", + "filament_id": "OFMDHOcT", "name": "QIDI TPU-Aero@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI TPU-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI TPU-GF @X-Plus 5.json index b3f2f71866..90de30cb02 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI TPU-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI TPU-GF @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_15", + "filament_id": "OF9EHUKK", "name": "QIDI TPU-GF@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI UltraPA @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI UltraPA @X-Plus 5.json index 9d86c06f95..75a89479e2 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI UltraPA @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI UltraPA @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_24", + "filament_id": "OFWDe7YH", "name": "QIDI UltraPA@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json index 73379541b3..2ea27efa4b 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_26", + "filament_id": "OF9PELEb", "name": "QIDI UltraPA-CF25@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/filament/X5/QIDI WOOD Rapido @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI WOOD Rapido @X-Plus 5.json index 30428c7422..efbe41d51d 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI WOOD Rapido @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI WOOD Rapido @X-Plus 5.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "QD_4_1_6", + "filament_id": "OFvdZ2bx", "name": "QIDI WOOD Rapido@X-Plus 5-Series", "from": "system", "instantiation": "false", diff --git a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.2 nozzle.json index 8b4274e094..a097f39bab 100644 --- a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.2 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi Q1 Pro", "printer_variant": "0.2", "default_filament_profile": [ - "Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle" + "Generic PLA @Qidi Q1 Pro 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @Qidi Q1 Pro 0.2 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.4 nozzle.json index a97a66730b..a085ce6cfe 100644 --- a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.4 nozzle.json @@ -82,6 +82,6 @@ "machine_start_gcode": "PRINT_START BED=[hot_plate_temp_initial_layer] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature]\nM83\nM140 S[hot_plate_temp_initial_layer]\nM104 S[nozzle_temperature_initial_layer]\nG4 P3000\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0)} Z5 F6000\nG0 Z[initial_layer_print_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85), 0)} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 85} E{83 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 3} E{82 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85), 0) + 3} Z0\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85), 0) + 6}\nG1 Z1 F600\n", "thumbnails_format": "PNG", "default_filament_profile": [ - "Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle" + "Generic PLA @Qidi Q1 Pro 0.4 nozzle" ] } diff --git a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.6 nozzle.json index 3e2e07d54f..fb2d73df60 100644 --- a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.6 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi Q1 Pro", "printer_variant": "0.6", "default_filament_profile": [ - "Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle" + "Generic PLA @Qidi Q1 Pro 0.6 nozzle" ], "default_print_profile": "0.30mm Standard @Qidi Q1 Pro 0.6 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.8 nozzle.json index 5dea524660..4d99e1a77d 100644 --- a/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi Q1 Pro 0.8 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi Q1 Pro", "printer_variant": "0.8", "default_filament_profile": [ - "Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle" + "Generic PLA @Qidi Q1 Pro 0.8 nozzle" ], "default_print_profile": "0.40mm Standard @Qidi Q1 Pro 0.8 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi Q1 Pro.json b/resources/profiles/Qidi/machine/Qidi Q1 Pro.json index d6102cf61f..ef9803cbd9 100644 --- a/resources/profiles/Qidi/machine/Qidi Q1 Pro.json +++ b/resources/profiles/Qidi/machine/Qidi Q1 Pro.json @@ -8,5 +8,5 @@ "bed_model": "qidi_Q1Pro_buildplate_model.stl", "bed_texture": "qidi_Q1Pro_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle;QIDI ASA @Qidi Q1 Pro 0.4 nozzle;QIDI ASA @Qidi Q1 Pro 0.2 nozzle;QIDI ASA @Qidi Q1 Pro 0.6 nozzle;QIDI ASA @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PETG @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PETG @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PETG @Qidi Q1 Pro 0.8 nozzle;Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle;Qidi Generic PLA @Qidi Q1 Pro 0.2 nozzle;Qidi Generic PLA @Qidi Q1 Pro 0.6 nozzle;Qidi Generic PLA @Qidi Q1 Pro 0.8 nozzle" + "default_materials": "QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle;QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle;QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle;QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle;QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle;QIDI ASA @Qidi Q1 Pro 0.4 nozzle;QIDI ASA @Qidi Q1 Pro 0.2 nozzle;QIDI ASA @Qidi Q1 Pro 0.6 nozzle;QIDI ASA @Qidi Q1 Pro 0.8 nozzle;Generic PETG @Qidi Q1 Pro 0.4 nozzle;Generic PETG @Qidi Q1 Pro 0.2 nozzle;Generic PETG @Qidi Q1 Pro 0.6 nozzle;Generic PETG @Qidi Q1 Pro 0.8 nozzle;Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle;Generic PLA @Qidi Q1 Pro 0.4 nozzle;Generic PLA @Qidi Q1 Pro 0.2 nozzle;Generic PLA @Qidi Q1 Pro 0.6 nozzle;Generic PLA @Qidi Q1 Pro 0.8 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-CF Pro 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-CF Pro 0.4 nozzle.json index c82db4969e..a41e2b6a11 100644 --- a/resources/profiles/Qidi/machine/Qidi X-CF Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-CF Pro 0.4 nozzle.json @@ -98,7 +98,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "machine_start_gcode": "G28\nM140 S[hot_plate_temp_initial_layer]\nM190 S[hot_plate_temp_initial_layer]\nM109 S[nozzle_temperature_initial_layer]\nG92 E-19\nG0 Y5 Z0.3 F3600\nG1 X5 E0 F2400\n", "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E0\nG1 E-3 F300\nG28\nM84\n", diff --git a/resources/profiles/Qidi/machine/Qidi X-CF Pro.json b/resources/profiles/Qidi/machine/Qidi X-CF Pro.json index b70c4bc480..7729b8612d 100644 --- a/resources/profiles/Qidi/machine/Qidi X-CF Pro.json +++ b/resources/profiles/Qidi/machine/Qidi X-CF Pro.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xcfpro_buildplate_model.stl", "bed_texture": "qidi_xcfpro_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen2_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PET-CF;QIDI PA12-CF;QIDI PAHT-CF;QIDI ABS-GF25;QIDI PA-Ultra;Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PA-CF;Qidi Generic PA;Qidi Generic PC;Qidi Generic PETG-CF;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA;Qidi Generic PLA-CF;Qidi Generic PVA;Qidi Generic TPU 95A" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PET-CF;QIDI PA12-CF;QIDI PAHT-CF;QIDI ABS-GF25;QIDI PA-Ultra;Generic ASA @Qidi;Generic ABS @Qidi;Generic PA-CF @Qidi;Generic PA @Qidi;Generic PC @Qidi;Generic PETG-CF @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA-CF @Qidi;Generic PVA @Qidi;Generic TPU 95A @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 0.4 nozzle.json index 76577d5f38..b1196c0e70 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 0.4 nozzle.json @@ -98,7 +98,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "machine_start_gcode": "G28\nG92 E0\nG0 X300 Y5 Z50 F3600\nM190 S[bed_temperature_initial_layer_single]\nM109 S[first_layer_temperature]\nG92 E-19\n", "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E0\nG1 E-3 F300\nG28\nM84\n", diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.2 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.2 nozzle.json index d6b10d422d..84ae0879fe 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.2 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Max 3", "printer_variant": "0.2", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Max 3 0.2 nozzle" + "Generic PLA @Qidi X-Max 3 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @Qidi XMax3 0.2 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json index 655b4e32c8..d9ba740281 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json @@ -46,6 +46,6 @@ "change_filament_gcode": "", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ] } diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.6 nozzle.json index d0d5ac6e04..c10a1c0254 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.6 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Max 3", "printer_variant": "0.6", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.30mm Standard @Qidi XMax3 0.6 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.8 nozzle.json index c8042e7e3a..4d04574c15 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.8 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Max 3", "printer_variant": "0.8", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.40mm Standard @Qidi XMax3 0.8 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3.json b/resources/profiles/Qidi/machine/Qidi X-Max 3.json index 56fc955601..99888a8acf 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xmax3_buildplate_model.stl", "bed_texture": "qidi_xmax3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Max.json b/resources/profiles/Qidi/machine/Qidi X-Max.json index ac917aa5b7..26b0ad47d7 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xmax_buildplate_model.stl", "bed_texture": "qidi_xmax_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen2_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PET-CF;QIDI PA12-CF;QIDI PAHT-CF;QIDI ABS-GF25;QIDI PA-Ultra;Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PA-CF;Qidi Generic PA;Qidi Generic PC;Qidi Generic PETG-CF;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA;Qidi Generic PLA-CF;Qidi Generic PVA;Qidi Generic TPU 95A" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PET-CF;QIDI PA12-CF;QIDI PAHT-CF;QIDI ABS-GF25;QIDI PA-Ultra;Generic ASA @Qidi;Generic ABS @Qidi;Generic PA-CF @Qidi;Generic PA @Qidi;Generic PC @Qidi;Generic PETG-CF @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA-CF @Qidi;Generic PVA @Qidi;Generic TPU 95A @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 0.4 nozzle.json index ed7f0c24a1..d4e1daee9e 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 0.4 nozzle.json @@ -98,7 +98,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "machine_start_gcode": "G28\nG92 E0\nG0 X270 Y5 Z50 F3600\nM190 S[bed_temperature_initial_layer_single]\nM109 S[first_layer_temperature]\nG92 E-16\n", "machine_end_gcode": "M104 S0\nM140 S0\n;Retract the filament\nG92 E0\nG1 E-3 F300\nG28\nM84\n", diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.2 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.2 nozzle.json index 382cd364fd..c6a98fc3de 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.2 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 3", "printer_variant": "0.2", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Plus 3 0.2 nozzle" + "Generic PLA @Qidi X-Plus 3 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @Qidi XPlus3 0.2 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json index 03159944f0..5d39065f8c 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json @@ -42,6 +42,6 @@ "change_filament_gcode": "", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ] } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.6 nozzle.json index 5af64f9934..959f8013e8 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.6 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 3", "printer_variant": "0.6", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.30mm Standard @Qidi XPlus3 0.6 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.8 nozzle.json index 43aa1a2a2b..93aa435c52 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.8 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 3", "printer_variant": "0.8", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.40mm Standard @Qidi XPlus3 0.8 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3.json index 535fc25aef..84df7f37be 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xplus3_buildplate_model.stl", "bed_texture": "qidi_xplus3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.2 nozzle.json index b16849ea80..fe66c4fc60 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.2 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 4", "printer_variant": "0.2", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Plus 4 0.2 nozzle" + "Generic PLA @Qidi X-Plus 4 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @Qidi XPlus4 0.2 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json index 82e9da78cb..a7d2f09195 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json @@ -97,7 +97,7 @@ "machine_start_gcode": "PRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG4 P3000\nT[initial_tool]\nG0 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0)} Z5 F6000\nG0 Z[initial_layer_print_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0] - 12, first_layer_print_min[0] + 80))} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 85} E{83 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 3} E{82 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 3} Z0\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 6}\nG1 Z1 F600\nSET_PRINT_STATS_INFO CURRENT_LAYER=1", "thumbnails_format": "PNG", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle" + "Generic PLA @Qidi X-Plus 4 0.4 nozzle" ], "printer_agent": "qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json index f33fbeb5dc..116c754002 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 4", "printer_variant": "0.6", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Plus 4 0.6 nozzle" + "Generic PLA @Qidi X-Plus 4 0.6 nozzle" ], "default_print_profile": "0.30mm Standard @Qidi XPlus4 0.6 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.8 nozzle.json index e66c252d0f..d232221c5d 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.8 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Plus 4", "printer_variant": "0.8", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Plus 4 0.8 nozzle" + "Generic PLA @Qidi X-Plus 4 0.8 nozzle" ], "default_print_profile": "0.40mm Standard @Qidi XPlus4 0.8 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4.json index 82702cb7dc..ac34a73e34 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xplus4_buildplate_model.stl", "bed_texture": "qidi_xplus4_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;Qidi Generic PETG" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;Generic PETG @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus.json b/resources/profiles/Qidi/machine/Qidi X-Plus.json index 5aa0917d5e..bf30d976ac 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xplus_buildplate_model.stl", "bed_texture": "qidi_xplus_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen2_hotend.stl", - "default_materials": "Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PA-CF;Qidi Generic PA;Qidi Generic PC;Qidi Generic PETG-CF;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA;Qidi Generic PLA-CF;Qidi Generic PVA;Qidi Generic TPU" + "default_materials": "Generic ASA @Qidi;Generic ABS @Qidi;Generic PA-CF @Qidi;Generic PA @Qidi;Generic PC @Qidi;Generic PETG-CF @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA-CF @Qidi;Generic PVA @Qidi;Generic TPU @Qidi" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.2 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.2 nozzle.json index bd5d6b5bba..e3bc48c8ed 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.2 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.2 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Smart 3", "printer_variant": "0.2", "default_filament_profile": [ - "Qidi Generic PLA @Qidi X-Smart 3 0.2 nozzle" + "Generic PLA @Qidi X-Smart 3 0.2 nozzle" ], "default_print_profile": "0.10mm Standard @Qidi XSmart3 0.2 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json index d224dbf971..f76a264423 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json @@ -48,6 +48,6 @@ "change_filament_gcode": "", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ] } diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.6 nozzle.json index 255f4d67db..97e5afc5d2 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.6 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Smart 3", "printer_variant": "0.6", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.30mm Standard @Qidi XSmart3 0.6 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.8 nozzle.json index ef62543341..a3192db8a5 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.8 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.8 nozzle.json @@ -11,7 +11,7 @@ "printer_model": "Qidi X-Smart 3", "printer_variant": "0.8", "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.40mm Standard @Qidi XSmart3 0.8 nozzle", "max_layer_height": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3.json index 78cd91d3e4..75b3d2e252 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xsmart3_buildplate_model.stl", "bed_texture": "qidi_xsmart3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Qidi Generic ASA;Qidi Generic ABS;Qidi Generic PETG;Qidi Generic PLA Silk;Qidi Generic PLA" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" } diff --git a/resources/profiles/Qidi/machine/fdm_qidi_common.json b/resources/profiles/Qidi/machine/fdm_qidi_common.json index 99149558f9..38b39c4591 100644 --- a/resources/profiles/Qidi/machine/fdm_qidi_common.json +++ b/resources/profiles/Qidi/machine/fdm_qidi_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "Qidi Generic PLA" + "Generic PLA @Qidi" ], "default_print_profile": "0.20mm Standard @QIDI", "bed_exclude_area": [ diff --git a/resources/profiles/RH3D.json b/resources/profiles/RH3D.json index fc8aa57484..4cb9ab573e 100644 --- a/resources/profiles/RH3D.json +++ b/resources/profiles/RH3D.json @@ -1,6 +1,6 @@ { "name": "RH3D", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "RH3D - printer profiles", "machine_model_list": [ diff --git a/resources/profiles/RH3D/filament/Generic ABS @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic ABS @E3NG v1.2S.json index 1c9cf63e43..045e04b689 100644 --- a/resources/profiles/RH3D/filament/Generic ABS @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic ABS @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "VNx6rdTN7OIIXVpC", - "filament_id": "Generic ABS @E3NG v1.2S", + "filament_id": "OFY9muEs", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.2 nozzle", diff --git a/resources/profiles/RH3D/filament/Generic ASA @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic ASA @E3NG v1.2S.json index 329de9f04d..fd22b91c19 100644 --- a/resources/profiles/RH3D/filament/Generic ASA @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic ASA @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "LK5M8q58HY86k9aX", - "filament_id": "Generic ASA @E3NG v1.2S", + "filament_id": "OFLPAxz3", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.2 nozzle", diff --git a/resources/profiles/RH3D/filament/Generic PCCF @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic PCCF @E3NG v1.2S.json index 49cff221dd..d3a2002f8f 100644 --- a/resources/profiles/RH3D/filament/Generic PCCF @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic PCCF @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pccf", "from": "system", "setting_id": "fnnja8VlKHWpuOjG", - "filament_id": "Generic PCCF @E3NG v1.2S", + "filament_id": "OFC5f4Ay", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.5 nozzle", diff --git a/resources/profiles/RH3D/filament/Generic PETG @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic PETG @E3NG v1.2S.json index 6bd5e940fe..1fd8ab22ed 100644 --- a/resources/profiles/RH3D/filament/Generic PETG @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic PETG @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_petg", "from": "system", "setting_id": "IS3z7f5wnjsvv8vC", - "filament_id": "Generic PETG @E3NG v1.2S", + "filament_id": "OFYPdQJh", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.2 nozzle", diff --git a/resources/profiles/RH3D/filament/Generic PLA @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic PLA @E3NG v1.2S.json index 86e514521c..bbf58fe55a 100644 --- a/resources/profiles/RH3D/filament/Generic PLA @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic PLA @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "b1tuMVA0Hh27wYQH", - "filament_id": "Generic PLA @E3NG v1.2S", + "filament_id": "OFDSrzZ8", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.2 nozzle", diff --git a/resources/profiles/RH3D/filament/Generic TPU @E3NG v1.2S.json b/resources/profiles/RH3D/filament/Generic TPU @E3NG v1.2S.json index 7c308efd71..f6c8a7ca6e 100644 --- a/resources/profiles/RH3D/filament/Generic TPU @E3NG v1.2S.json +++ b/resources/profiles/RH3D/filament/Generic TPU @E3NG v1.2S.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "kaTatels2H01rgeJ", - "filament_id": "Generic TPU @E3NG v1.2S", + "filament_id": "OFgbpcy9", "instantiation": "true", "compatible_printers": [ "E3NG v1.2S - 0.4 nozzle", diff --git a/resources/profiles/RH3D/filament/fdm_filament_abs.json b/resources/profiles/RH3D/filament/fdm_filament_abs.json index f68da37f19..f4ab005733 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_abs.json +++ b/resources/profiles/RH3D/filament/fdm_filament_abs.json @@ -3,7 +3,6 @@ "name": "fdm_filament_abs", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH01", "instantiation": "false", "cool_plate_temp": [ "100" diff --git a/resources/profiles/RH3D/filament/fdm_filament_asa.json b/resources/profiles/RH3D/filament/fdm_filament_asa.json index bc71167111..ac03beef13 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_asa.json +++ b/resources/profiles/RH3D/filament/fdm_filament_asa.json @@ -3,7 +3,6 @@ "name": "fdm_filament_asa", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH02", "instantiation": "false", "cool_plate_temp": [ "100" diff --git a/resources/profiles/RH3D/filament/fdm_filament_pccf.json b/resources/profiles/RH3D/filament/fdm_filament_pccf.json index b24ccd667e..4296da76c5 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_pccf.json +++ b/resources/profiles/RH3D/filament/fdm_filament_pccf.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pccf", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH06", "instantiation": "false", "cool_plate_temp": [ "0" diff --git a/resources/profiles/RH3D/filament/fdm_filament_petg.json b/resources/profiles/RH3D/filament/fdm_filament_petg.json index 646a682703..aaa0f62357 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_petg.json +++ b/resources/profiles/RH3D/filament/fdm_filament_petg.json @@ -3,7 +3,6 @@ "name": "fdm_filament_petg", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH03", "instantiation": "false", "cool_plate_temp": [ "70" diff --git a/resources/profiles/RH3D/filament/fdm_filament_pla.json b/resources/profiles/RH3D/filament/fdm_filament_pla.json index ad4f375e9d..873a78461b 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_pla.json +++ b/resources/profiles/RH3D/filament/fdm_filament_pla.json @@ -3,7 +3,6 @@ "name": "fdm_filament_pla", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH04", "instantiation": "false", "cool_plate_temp": [ "40" diff --git a/resources/profiles/RH3D/filament/fdm_filament_tpu.json b/resources/profiles/RH3D/filament/fdm_filament_tpu.json index e55e214275..dcf6f2c68d 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_tpu.json +++ b/resources/profiles/RH3D/filament/fdm_filament_tpu.json @@ -3,7 +3,6 @@ "name": "fdm_filament_tpu", "inherits": "fdm_filament_common", "from": "system", - "filament_id": "GFRH05", "instantiation": "false", "cool_plate_temp": [ "30" diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index 969794f578..dbe4c3cc56 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -1,6 +1,6 @@ { "name": "RatRig", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "RatRig configurations", "machine_model_list": [ @@ -277,88 +277,52 @@ ], "filament_list": [ { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" + "name": "Generic ABS BigNozzle @RatRig", + "sub_path": "filament/Generic ABS BigNozzle @RatRig.json" }, { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "RatRig BigNozzle ABS", - "sub_path": "filament/RatRig BigNozzle ABS.json" - }, - { - "name": "RatRig Generic ABS", - "sub_path": "filament/RatRig Generic ABS.json" + "name": "Generic ABS @RatRig", + "sub_path": "filament/Generic ABS @RatRig.json" }, { "name": "RatRig PunkFil ABS", "sub_path": "filament/RatRig PunkFil ABS.json" }, { - "name": "RatRig BigNozzle ASA", - "sub_path": "filament/RatRig BigNozzle ASA.json" + "name": "Generic ASA BigNozzle @RatRig", + "sub_path": "filament/Generic ASA BigNozzle @RatRig.json" }, { - "name": "RatRig Generic ASA", - "sub_path": "filament/RatRig Generic ASA.json" + "name": "Generic ASA @RatRig", + "sub_path": "filament/Generic ASA @RatRig.json" }, { - "name": "RatRig Generic PA", - "sub_path": "filament/RatRig Generic PA.json" + "name": "Generic PA @RatRig", + "sub_path": "filament/Generic PA @RatRig.json" }, { - "name": "RatRig Generic PA-CF", - "sub_path": "filament/RatRig Generic PA-CF.json" + "name": "Generic PA-CF @RatRig", + "sub_path": "filament/Generic PA-CF @RatRig.json" }, { - "name": "RatRig Generic PC", - "sub_path": "filament/RatRig Generic PC.json" + "name": "Generic PC @RatRig", + "sub_path": "filament/Generic PC @RatRig.json" }, { - "name": "RatRig BigNozzle PCTG", - "sub_path": "filament/RatRig BigNozzle PCTG.json" + "name": "Generic PCTG BigNozzle @RatRig", + "sub_path": "filament/Generic PCTG BigNozzle @RatRig.json" }, { - "name": "RatRig BigNozzle PETG", - "sub_path": "filament/RatRig BigNozzle PETG.json" + "name": "Generic PETG BigNozzle @RatRig", + "sub_path": "filament/Generic PETG BigNozzle @RatRig.json" }, { - "name": "RatRig Generic PCTG", - "sub_path": "filament/RatRig Generic PCTG.json" + "name": "Generic PCTG @RatRig", + "sub_path": "filament/Generic PCTG @RatRig.json" }, { - "name": "RatRig Generic PETG", - "sub_path": "filament/RatRig Generic PETG.json" + "name": "Generic PETG @RatRig", + "sub_path": "filament/Generic PETG @RatRig.json" }, { "name": "RatRig PunkFil PETG", @@ -369,28 +333,28 @@ "sub_path": "filament/RatRig PunkFil PETG CF.json" }, { - "name": "RatRig BigNozzle PLA", - "sub_path": "filament/RatRig BigNozzle PLA.json" + "name": "Generic PLA BigNozzle @RatRig", + "sub_path": "filament/Generic PLA BigNozzle @RatRig.json" }, { - "name": "RatRig Generic PLA", - "sub_path": "filament/RatRig Generic PLA.json" + "name": "Generic PLA @RatRig", + "sub_path": "filament/Generic PLA @RatRig.json" }, { - "name": "RatRig Generic PLA-CF", - "sub_path": "filament/RatRig Generic PLA-CF.json" + "name": "Generic PLA-CF @RatRig", + "sub_path": "filament/Generic PLA-CF @RatRig.json" }, { - "name": "RatRig Generic PVA", - "sub_path": "filament/RatRig Generic PVA.json" + "name": "Generic PVA @RatRig", + "sub_path": "filament/Generic PVA @RatRig.json" }, { - "name": "RatRig BigNozzle TPU", - "sub_path": "filament/RatRig BigNozzle TPU.json" + "name": "Generic TPU BigNozzle @RatRig", + "sub_path": "filament/Generic TPU BigNozzle @RatRig.json" }, { - "name": "RatRig Generic TPU", - "sub_path": "filament/RatRig Generic TPU.json" + "name": "Generic TPU @RatRig", + "sub_path": "filament/Generic TPU @RatRig.json" } ], "machine_list": [ diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json b/resources/profiles/Ratrig/filament/Generic ABS @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic ABS.json rename to resources/profiles/Ratrig/filament/Generic ABS @RatRig.json index b55a944e54..d45720cf60 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json +++ b/resources/profiles/Ratrig/filament/Generic ABS @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic ABS", + "name": "Generic ABS @RatRig", "inherits": "fdm_filament_abs", + "renamed_from": "RatRig Generic ABS", "from": "system", - "setting_id": "ovLAzbygn6JHqGk0", - "filament_id": "GFB99", + "setting_id": "0BepsauXBs5bxPYO", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.980" diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json b/resources/profiles/Ratrig/filament/Generic ABS BigNozzle @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json rename to resources/profiles/Ratrig/filament/Generic ABS BigNozzle @RatRig.json index 8f601dba61..3d071c779a 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json +++ b/resources/profiles/Ratrig/filament/Generic ABS BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle ABS", + "name": "Generic ABS BigNozzle @RatRig", "inherits": "fdm_filament_abs", + "renamed_from": "RatRig BigNozzle ABS", "from": "system", - "setting_id": "oE39mwr3PCpeBxZN", - "filament_id": "GFB99", + "setting_id": "4GJ4GHOuApWBbQoS", + "filament_id": "OFnyHfcv", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json b/resources/profiles/Ratrig/filament/Generic ASA @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic ASA.json rename to resources/profiles/Ratrig/filament/Generic ASA @RatRig.json index 5cee3f262c..9b70da5bab 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json +++ b/resources/profiles/Ratrig/filament/Generic ASA @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic ASA", + "name": "Generic ASA @RatRig", "inherits": "fdm_filament_asa", + "renamed_from": "RatRig Generic ASA", "from": "system", - "setting_id": "pmxazFQdx5Oa7Pke", - "filament_id": "GFB98", + "setting_id": "cogJbKPAXzyCQgvf", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json b/resources/profiles/Ratrig/filament/Generic ASA BigNozzle @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json rename to resources/profiles/Ratrig/filament/Generic ASA BigNozzle @RatRig.json index a99d58ae34..f6f85f78e7 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json +++ b/resources/profiles/Ratrig/filament/Generic ASA BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle ASA", + "name": "Generic ASA BigNozzle @RatRig", "inherits": "fdm_filament_asa", + "renamed_from": "RatRig BigNozzle ASA", "from": "system", - "setting_id": "GGkbwdd79jAXnwuf", - "filament_id": "GFB98", + "setting_id": "n2V9gkhbqWJzsQBK", + "filament_id": "OF4GM5qX", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA.json b/resources/profiles/Ratrig/filament/Generic PA @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic PA.json rename to resources/profiles/Ratrig/filament/Generic PA @RatRig.json index 52bfb6ea3c..58d6757d78 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA.json +++ b/resources/profiles/Ratrig/filament/Generic PA @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PA", + "name": "Generic PA @RatRig", "inherits": "fdm_filament_pa", + "renamed_from": "RatRig Generic PA", "from": "system", - "setting_id": "fVGEV9t4w06LODgD", - "filament_id": "GFN99", + "setting_id": "5rpTzhFjS6Ar4Xy8", + "filament_id": "OFg8ndtj", "instantiation": "true", "nozzle_temperature_initial_layer": [ "270" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json b/resources/profiles/Ratrig/filament/Generic PA-CF @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json rename to resources/profiles/Ratrig/filament/Generic PA-CF @RatRig.json index 31c95abede..5b0ea38d75 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json +++ b/resources/profiles/Ratrig/filament/Generic PA-CF @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PA-CF", + "name": "Generic PA-CF @RatRig", "inherits": "fdm_filament_pa", + "renamed_from": "RatRig Generic PA-CF", "from": "system", - "setting_id": "ZRrsXKPk8pY4yrwd", - "filament_id": "GFN98", + "setting_id": "ps7duiwT8adNshEO", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PC.json b/resources/profiles/Ratrig/filament/Generic PC @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic PC.json rename to resources/profiles/Ratrig/filament/Generic PC @RatRig.json index 9f9cab8e38..c6dc89cce5 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PC.json +++ b/resources/profiles/Ratrig/filament/Generic PC @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PC", + "name": "Generic PC @RatRig", "inherits": "fdm_filament_pc", + "renamed_from": "RatRig Generic PC", "from": "system", - "setting_id": "XQ5VEJXu5X0L3Lbn", - "filament_id": "GFC99", + "setting_id": "7x5VtUIevdAmBqqA", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PCTG.json b/resources/profiles/Ratrig/filament/Generic PCTG @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig Generic PCTG.json rename to resources/profiles/Ratrig/filament/Generic PCTG @RatRig.json index 89031567bf..d3e06685b5 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PCTG.json +++ b/resources/profiles/Ratrig/filament/Generic PCTG @RatRig.json @@ -1,11 +1,15 @@ { "type": "filament", - "name": "RatRig Generic PCTG", + "name": "Generic PCTG @RatRig", "inherits": "fdm_filament_pet", + "renamed_from": "RatRig Generic PCTG", "from": "system", - "setting_id": "SG4Gt87iS1ql3s8S", - "filament_id": "GFC99", + "setting_id": "JMTUqdhoQzCb6ZxJ", + "filament_id": "OFu1evlr", "instantiation": "true", + "filament_type": [ + "PCTG" + ], "reduce_fan_stop_start_freq": [ "1" ], diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json b/resources/profiles/Ratrig/filament/Generic PCTG BigNozzle @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json rename to resources/profiles/Ratrig/filament/Generic PCTG BigNozzle @RatRig.json index 38db026fe4..2e47eb6765 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json +++ b/resources/profiles/Ratrig/filament/Generic PCTG BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle PCTG", - "inherits": "fdm_filament_pet", + "name": "Generic PCTG BigNozzle @RatRig", + "inherits": "fdm_filament_pctg", + "renamed_from": "RatRig BigNozzle PCTG", "from": "system", - "setting_id": "uCKZhFAPvEa2wKnA", - "filament_id": "GFC99", + "setting_id": "HPaol79uY9NdhasQ", + "filament_id": "OFXW4CDh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json b/resources/profiles/Ratrig/filament/Generic PETG @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig Generic PETG.json rename to resources/profiles/Ratrig/filament/Generic PETG @RatRig.json index e64dfbe2f4..b0182712b1 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json +++ b/resources/profiles/Ratrig/filament/Generic PETG @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PETG", + "name": "Generic PETG @RatRig", "inherits": "fdm_filament_pet", + "renamed_from": "RatRig Generic PETG", "from": "system", - "setting_id": "u6diBMbHW2nnKKTm", - "filament_id": "GFG99", + "setting_id": "6p3FfhhSIAOQGEzT", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json b/resources/profiles/Ratrig/filament/Generic PETG BigNozzle @RatRig.json similarity index 93% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json rename to resources/profiles/Ratrig/filament/Generic PETG BigNozzle @RatRig.json index e1cf036ece..213f41628c 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json +++ b/resources/profiles/Ratrig/filament/Generic PETG BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle PETG", + "name": "Generic PETG BigNozzle @RatRig", "inherits": "fdm_filament_pet", + "renamed_from": "RatRig BigNozzle PETG", "from": "system", - "setting_id": "bf3YMNVRSE1i1E8N", - "filament_id": "GFG99", + "setting_id": "pRM6IVX5T3y6Ywj4", + "filament_id": "OFvD0Qqt", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json b/resources/profiles/Ratrig/filament/Generic PLA @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig Generic PLA.json rename to resources/profiles/Ratrig/filament/Generic PLA @RatRig.json index 91bc503ed8..b8a33f4da4 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json +++ b/resources/profiles/Ratrig/filament/Generic PLA @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PLA", + "name": "Generic PLA @RatRig", "inherits": "fdm_filament_pla", + "renamed_from": "RatRig Generic PLA", "from": "system", - "setting_id": "IY6qXVoQqhsKuMzP", - "filament_id": "GFL99", + "setting_id": "BsQA6ChWHTDUSlii", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json b/resources/profiles/Ratrig/filament/Generic PLA BigNozzle @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json rename to resources/profiles/Ratrig/filament/Generic PLA BigNozzle @RatRig.json index d734dce4b7..08d546aafc 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json +++ b/resources/profiles/Ratrig/filament/Generic PLA BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle PLA", + "name": "Generic PLA BigNozzle @RatRig", "inherits": "fdm_filament_pla", + "renamed_from": "RatRig BigNozzle PLA", "from": "system", - "setting_id": "dyG3zLuhX2qe8XJP", - "filament_id": "GFL99", + "setting_id": "WEI4QiKyANQOK7dG", + "filament_id": "OFqFRiLb", "instantiation": "true", "filament_flow_ratio": [ "0.94" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json b/resources/profiles/Ratrig/filament/Generic PLA-CF @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json rename to resources/profiles/Ratrig/filament/Generic PLA-CF @RatRig.json index 2ce8c792e9..288c892f09 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json +++ b/resources/profiles/Ratrig/filament/Generic PLA-CF @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PLA-CF", + "name": "Generic PLA-CF @RatRig", "inherits": "fdm_filament_pla", + "renamed_from": "RatRig Generic PLA-CF", "from": "system", - "setting_id": "Vwn22LQBChxWysmU", - "filament_id": "GFL98", + "setting_id": "ai3I13fL5giqq5LW", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json b/resources/profiles/Ratrig/filament/Generic PVA @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig Generic PVA.json rename to resources/profiles/Ratrig/filament/Generic PVA @RatRig.json index 69fa53a0f5..016b146181 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json +++ b/resources/profiles/Ratrig/filament/Generic PVA @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic PVA", + "name": "Generic PVA @RatRig", "inherits": "fdm_filament_pva", + "renamed_from": "RatRig Generic PVA", "from": "system", - "setting_id": "9uJ3Rr6kn9jZZxPO", - "filament_id": "GFS99", + "setting_id": "y6DJYhqAmxMng8Kf", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json b/resources/profiles/Ratrig/filament/Generic TPU @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig Generic TPU.json rename to resources/profiles/Ratrig/filament/Generic TPU @RatRig.json index 3e1594501d..e8ea6176b7 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json +++ b/resources/profiles/Ratrig/filament/Generic TPU @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig Generic TPU", + "name": "Generic TPU @RatRig", "inherits": "fdm_filament_tpu", + "renamed_from": "RatRig Generic TPU", "from": "system", - "setting_id": "zWOn983v5s2ujssj", - "filament_id": "GFU99", + "setting_id": "dAIGKmZctSRhP1Lu", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "5" diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle TPU.json b/resources/profiles/Ratrig/filament/Generic TPU BigNozzle @RatRig.json similarity index 92% rename from resources/profiles/Ratrig/filament/RatRig BigNozzle TPU.json rename to resources/profiles/Ratrig/filament/Generic TPU BigNozzle @RatRig.json index 11dae068e0..4714f57d5a 100644 --- a/resources/profiles/Ratrig/filament/RatRig BigNozzle TPU.json +++ b/resources/profiles/Ratrig/filament/Generic TPU BigNozzle @RatRig.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "RatRig BigNozzle TPU", + "name": "Generic TPU BigNozzle @RatRig", "inherits": "fdm_filament_tpu", + "renamed_from": "RatRig BigNozzle TPU", "from": "system", - "setting_id": "wLJ3X05Jnz1EqeOI", - "filament_id": "GFL99", + "setting_id": "9UWg2cO61XFdlWxo", + "filament_id": "OF5tX6va", "instantiation": "true", "filament_max_volumetric_speed": [ "5" diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json index 5fa20b8246..9308082af6 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "AzjpmeEXD6enWOG6", - "filament_id": "GFB99", + "filament_id": "OFhO5aEJ", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json index 73a5920ee8..5f047c9b94 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "o2dP6EwooarikQ8R", - "filament_id": "GFB99", + "filament_id": "OFe61n6v", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json index 170b1e0c99..3863ddcd07 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "e1QXBJqpkhHxXor1", - "filament_id": "GFB99", + "filament_id": "OF9emAI9", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Ratrig/filament/fdm_filament_abs.json b/resources/profiles/Ratrig/filament/fdm_filament_abs.json deleted file mode 100644 index 6232c6bf6d..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_abs.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_abs", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "hot_plate_temp": [ - "105" - ], - "textured_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_asa.json b/resources/profiles/Ratrig/filament/fdm_filament_asa.json deleted file mode 100644 index 0b3ca804e8..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_asa.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_asa", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "105" - ], - "eng_plate_temp": [ - "105" - ], - "hot_plate_temp": [ - "105" - ], - "textured_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_common.json b/resources/profiles/Ratrig/filament/fdm_filament_common.json deleted file mode 100644 index ab5b8305a6..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_common.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "60" - ], - "eng_plate_temp": [ - "60" - ], - "hot_plate_temp": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Cool Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pa.json b/resources/profiles/Ratrig/filament/fdm_filament_pa.json deleted file mode 100644 index 8b67678f9b..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_pa.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pa", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], - "textured_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "4" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "30" - ], - "nozzle_temperature": [ - "290" - ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pc.json b/resources/profiles/Ratrig/filament/fdm_filament_pc.json deleted file mode 100644 index ec102017fc..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_pc.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pc", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "110" - ], - "hot_plate_temp": [ - "110" - ], - "textured_plate_temp": [ - "110" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "110" - ], - "hot_plate_temp_initial_layer": [ - "110" - ], - "textured_plate_temp_initial_layer": [ - "110" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "23.2" - ], - "filament_type": [ - "PC" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "temperature_vitrification": [ - "140" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pet.json b/resources/profiles/Ratrig/filament/fdm_filament_pet.json deleted file mode 100644 index d056aa4e88..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_pet.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pet", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "255" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pla.json b/resources/profiles/Ratrig/filament/fdm_filament_pla.json deleted file mode 100644 index ef1a11694d..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_pla.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pla", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp": [ - "60" - ], - "eng_plate_temp": [ - "60" - ], - "hot_plate_temp": [ - "60" - ], - "textured_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "eng_plate_temp_initial_layer": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pva.json b/resources/profiles/Ratrig/filament/fdm_filament_pva.json deleted file mode 100644 index 860cba12e1..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_pva.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pva", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "35" - ], - "eng_plate_temp": [ - "0" - ], - "hot_plate_temp": [ - "45" - ], - "textured_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_soluble": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "50" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json b/resources/profiles/Ratrig/filament/fdm_filament_tpu.json deleted file mode 100644 index d781fc067d..0000000000 --- a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_tpu", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp": [ - "30" - ], - "eng_plate_temp": [ - "30" - ], - "hot_plate_temp": [ - "35" - ], - "textured_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "30" - ], - "eng_plate_temp_initial_layer": [ - "30" - ], - "hot_plate_temp_initial_layer": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Cast.json b/resources/profiles/Ratrig/machine/RatRig V-Cast.json index d4d2d51ce4..259a8fff94 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Cast.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Cast.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcast-bed.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 3 200.json b/resources/profiles/Ratrig/machine/RatRig V-Core 3 200.json index 07e3e95a9c..1d0b05e4f5 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 3 200.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 3 200.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-200.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 3 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 3 300.json index 830b0bded9..a82c91482c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 3 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 3 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 3 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 3 400.json index 5fb1292b86..97713f4417 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 3 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 3 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 3 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 3 500.json index 4bce2ed0fe..08b6b2e59a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 3 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 3 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json index 09a867b6e9..3b43d60a23 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json index 7cc76b3323..71eb9724f9 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json index 1664aff7e3..47cd8fba2f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json index 6d0e891a12..4731e90901 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json index 9aa253bdea..86963d7e73 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json index bafe6879cf..7b61ebe531 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json index 961e647009..f2831e5919 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json index 5efa6aea9f..a14770104f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json index e2549c0416..1a477fb750 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json index a8710f8aaa..327c56d036 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json index cb5eb6f526..2e72109e25 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json index d3e08811f8..e6c7405f9a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json index 3e56953833..bc27a53e94 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json index 336ed1ddd8..3518748830 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json index 5766fb3953..59ff011a82 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PCTG;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Minion.json b/resources/profiles/Ratrig/machine/RatRig V-Minion.json index 974a3aaa59..4134cadbf2 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Minion.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Minion.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vminion-bed.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" } diff --git a/resources/profiles/Ratrig/machine/fdm_klipper_common.json b/resources/profiles/Ratrig/machine/fdm_klipper_common.json index 8915fc1d4a..28ad9ce02c 100644 --- a/resources/profiles/Ratrig/machine/fdm_klipper_common.json +++ b/resources/profiles/Ratrig/machine/fdm_klipper_common.json @@ -126,7 +126,7 @@ "1" ], "default_filament_profile": [ - "RatRig Generic ABS" + "Generic ABS @RatRig" ], "default_print_profile": "0.20mm Standard @RatRig", "bed_exclude_area": [ diff --git a/resources/profiles/SecKit.json b/resources/profiles/SecKit.json index 85d373fbc9..42ac381eb6 100644 --- a/resources/profiles/SecKit.json +++ b/resources/profiles/SecKit.json @@ -1,6 +1,6 @@ { "name": "SecKit", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "SecKit configurations", "machine_model_list": [ @@ -89,44 +89,44 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "SecKit Generic ABS", - "sub_path": "filament/SecKit Generic ABS.json" + "name": "Generic ABS @SecKit", + "sub_path": "filament/Generic ABS @SecKit.json" }, { - "name": "SecKit Generic ASA", - "sub_path": "filament/SecKit Generic ASA.json" + "name": "Generic ASA @SecKit", + "sub_path": "filament/Generic ASA @SecKit.json" }, { - "name": "SecKit Generic PA", - "sub_path": "filament/SecKit Generic PA.json" + "name": "Generic PA @SecKit", + "sub_path": "filament/Generic PA @SecKit.json" }, { - "name": "SecKit Generic PA-CF", - "sub_path": "filament/SecKit Generic PA-CF.json" + "name": "Generic PA-CF @SecKit", + "sub_path": "filament/Generic PA-CF @SecKit.json" }, { - "name": "SecKit Generic PC", - "sub_path": "filament/SecKit Generic PC.json" + "name": "Generic PC @SecKit", + "sub_path": "filament/Generic PC @SecKit.json" }, { - "name": "SecKit Generic PETG", - "sub_path": "filament/SecKit Generic PETG.json" + "name": "Generic PETG @SecKit", + "sub_path": "filament/Generic PETG @SecKit.json" }, { - "name": "SecKit Generic PLA", - "sub_path": "filament/SecKit Generic PLA.json" + "name": "Generic PLA @SecKit", + "sub_path": "filament/Generic PLA @SecKit.json" }, { - "name": "SecKit Generic PLA-CF", - "sub_path": "filament/SecKit Generic PLA-CF.json" + "name": "Generic PLA-CF @SecKit", + "sub_path": "filament/Generic PLA-CF @SecKit.json" }, { - "name": "SecKit Generic PVA", - "sub_path": "filament/SecKit Generic PVA.json" + "name": "Generic PVA @SecKit", + "sub_path": "filament/Generic PVA @SecKit.json" }, { - "name": "SecKit Generic TPU", - "sub_path": "filament/SecKit Generic TPU.json" + "name": "Generic TPU @SecKit", + "sub_path": "filament/Generic TPU @SecKit.json" } ], "machine_list": [ diff --git a/resources/profiles/SecKit/filament/SecKit Generic ABS.json b/resources/profiles/SecKit/filament/Generic ABS @SecKit.json similarity index 83% rename from resources/profiles/SecKit/filament/SecKit Generic ABS.json rename to resources/profiles/SecKit/filament/Generic ABS @SecKit.json index bac9887f55..cdd9ce2f62 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic ABS.json +++ b/resources/profiles/SecKit/filament/Generic ABS @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic ABS", + "name": "Generic ABS @SecKit", "inherits": "fdm_filament_abs", + "renamed_from": "SecKit Generic ABS", "from": "system", - "setting_id": "gUrHIkj9GExYWVjh", - "filament_id": "GFB99", + "setting_id": "VSrXBQUNBQMwUc08", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.980" diff --git a/resources/profiles/SecKit/filament/SecKit Generic ASA.json b/resources/profiles/SecKit/filament/Generic ASA @SecKit.json similarity index 81% rename from resources/profiles/SecKit/filament/SecKit Generic ASA.json rename to resources/profiles/SecKit/filament/Generic ASA @SecKit.json index c9fdf2bcfd..366b20172b 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic ASA.json +++ b/resources/profiles/SecKit/filament/Generic ASA @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic ASA", + "name": "Generic ASA @SecKit", "inherits": "fdm_filament_asa", + "renamed_from": "SecKit Generic ASA", "from": "system", - "setting_id": "UwVF6VlxRg0IW9hB", - "filament_id": "GFB98", + "setting_id": "usCYRq4VuLqXvb0T", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PA.json b/resources/profiles/SecKit/filament/Generic PA @SecKit.json similarity index 81% rename from resources/profiles/SecKit/filament/SecKit Generic PA.json rename to resources/profiles/SecKit/filament/Generic PA @SecKit.json index bf70f90120..7746d8628a 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PA.json +++ b/resources/profiles/SecKit/filament/Generic PA @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PA", + "name": "Generic PA @SecKit", "inherits": "fdm_filament_pa", + "renamed_from": "SecKit Generic PA", "from": "system", - "setting_id": "GlgeZsK719DDjaPo", - "filament_id": "GFN99", + "setting_id": "uAuptETLwGxTsthC", + "filament_id": "OFg8ndtj", "instantiation": "true", "nozzle_temperature_initial_layer": [ "270" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PA-CF.json b/resources/profiles/SecKit/filament/Generic PA-CF @SecKit.json similarity index 81% rename from resources/profiles/SecKit/filament/SecKit Generic PA-CF.json rename to resources/profiles/SecKit/filament/Generic PA-CF @SecKit.json index 569b174f1b..52c0bae450 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PA-CF.json +++ b/resources/profiles/SecKit/filament/Generic PA-CF @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PA-CF", + "name": "Generic PA-CF @SecKit", "inherits": "fdm_filament_pa", + "renamed_from": "SecKit Generic PA-CF", "from": "system", - "setting_id": "0K4eQ2fbaasNdvsP", - "filament_id": "GFN98", + "setting_id": "P6G8DjjyfAFgGaj2", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PC.json b/resources/profiles/SecKit/filament/Generic PC @SecKit.json similarity index 80% rename from resources/profiles/SecKit/filament/SecKit Generic PC.json rename to resources/profiles/SecKit/filament/Generic PC @SecKit.json index c76b39ec41..689f3ea553 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PC.json +++ b/resources/profiles/SecKit/filament/Generic PC @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PC", + "name": "Generic PC @SecKit", "inherits": "fdm_filament_pc", + "renamed_from": "SecKit Generic PC", "from": "system", - "setting_id": "8DHToBaqE7g5VNvN", - "filament_id": "GFC99", + "setting_id": "PxmBHXsdhZGR9bYv", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PETG.json b/resources/profiles/SecKit/filament/Generic PETG @SecKit.json similarity index 86% rename from resources/profiles/SecKit/filament/SecKit Generic PETG.json rename to resources/profiles/SecKit/filament/Generic PETG @SecKit.json index af3bd585ab..05c5c753c6 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PETG.json +++ b/resources/profiles/SecKit/filament/Generic PETG @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PETG", + "name": "Generic PETG @SecKit", "inherits": "fdm_filament_pet", + "renamed_from": "SecKit Generic PETG", "from": "system", - "setting_id": "mx45AbmzGkqYMSsW", - "filament_id": "GFG99", + "setting_id": "Qt4oXABB5Fukbz46", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PLA.json b/resources/profiles/SecKit/filament/Generic PLA @SecKit.json similarity index 79% rename from resources/profiles/SecKit/filament/SecKit Generic PLA.json rename to resources/profiles/SecKit/filament/Generic PLA @SecKit.json index 62e073f2f2..b3cd1c2ffc 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PLA.json +++ b/resources/profiles/SecKit/filament/Generic PLA @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PLA", + "name": "Generic PLA @SecKit", "inherits": "fdm_filament_pla", + "renamed_from": "SecKit Generic PLA", "from": "system", - "setting_id": "7cpNIx6GWUp95tLN", - "filament_id": "GFL99", + "setting_id": "uWvI4RDQiYLFN7pp", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PLA-CF.json b/resources/profiles/SecKit/filament/Generic PLA-CF @SecKit.json similarity index 79% rename from resources/profiles/SecKit/filament/SecKit Generic PLA-CF.json rename to resources/profiles/SecKit/filament/Generic PLA-CF @SecKit.json index 6767fdc897..507716caee 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PLA-CF.json +++ b/resources/profiles/SecKit/filament/Generic PLA-CF @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PLA-CF", + "name": "Generic PLA-CF @SecKit", "inherits": "fdm_filament_pla", + "renamed_from": "SecKit Generic PLA-CF", "from": "system", - "setting_id": "dPLE2CXMpmdtyiZK", - "filament_id": "GFL98", + "setting_id": "znagqvEsDcHYse9M", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.92" diff --git a/resources/profiles/SecKit/filament/SecKit Generic PVA.json b/resources/profiles/SecKit/filament/Generic PVA @SecKit.json similarity index 77% rename from resources/profiles/SecKit/filament/SecKit Generic PVA.json rename to resources/profiles/SecKit/filament/Generic PVA @SecKit.json index 6060d85690..13f7d50673 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic PVA.json +++ b/resources/profiles/SecKit/filament/Generic PVA @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic PVA", + "name": "Generic PVA @SecKit", "inherits": "fdm_filament_pva", + "renamed_from": "SecKit Generic PVA", "from": "system", - "setting_id": "jiHEC4uCmPQLINlO", - "filament_id": "GFS99", + "setting_id": "DIUaGXpIF3fUfxqg", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/SecKit/filament/SecKit Generic TPU.json b/resources/profiles/SecKit/filament/Generic TPU @SecKit.json similarity index 76% rename from resources/profiles/SecKit/filament/SecKit Generic TPU.json rename to resources/profiles/SecKit/filament/Generic TPU @SecKit.json index 25befa8256..96d9c38a60 100644 --- a/resources/profiles/SecKit/filament/SecKit Generic TPU.json +++ b/resources/profiles/SecKit/filament/Generic TPU @SecKit.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "SecKit Generic TPU", + "name": "Generic TPU @SecKit", "inherits": "fdm_filament_tpu", + "renamed_from": "SecKit Generic TPU", "from": "system", - "setting_id": "b5GGHwZlR5oOx4eH", - "filament_id": "GFU99", + "setting_id": "agKm2K9w4ZOmZN8c", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "5" diff --git a/resources/profiles/SecKit/machine/SecKit SK-Tank.json b/resources/profiles/SecKit/machine/SecKit SK-Tank.json index 88cd516037..171d979074 100644 --- a/resources/profiles/SecKit/machine/SecKit SK-Tank.json +++ b/resources/profiles/SecKit/machine/SecKit SK-Tank.json @@ -9,5 +9,5 @@ "bed_model": "SK-Tank_Bed.stl", "bed_texture": "seckit_logo.svg", "hotend_model": "hotend.stl", - "default_materials": "SecKit Generic ABS;SecKit Generic PLA;SecKit Generic PLA-CF;SecKit Generic PETG;SecKit Generic TPU;SecKit Generic ASA;SecKit Generic PC;SecKit Generic PVA;SecKit Generic PA;SecKit Generic PA-CF" + "default_materials": "Generic ABS @SecKit;Generic PLA @SecKit;Generic PLA-CF @SecKit;Generic PETG @SecKit;Generic TPU @SecKit;Generic ASA @SecKit;Generic PC @SecKit;Generic PVA @SecKit;Generic PA @SecKit;Generic PA-CF @SecKit" } diff --git a/resources/profiles/SecKit/machine/Seckit Go3.json b/resources/profiles/SecKit/machine/Seckit Go3.json index 9b5169b017..9882f8783e 100644 --- a/resources/profiles/SecKit/machine/Seckit Go3.json +++ b/resources/profiles/SecKit/machine/Seckit Go3.json @@ -9,5 +9,5 @@ "bed_model": "SK-Go3_Bed.stl", "bed_texture": "seckit_logo.svg", "hotend_model": "seckit-hotend.stl", - "default_materials": "SecKit Generic ABS;SecKit Generic PLA;SecKit Generic PLA-CF;SecKit Generic PETG;SecKit Generic TPU;SecKit Generic ASA;SecKit Generic PC;SecKit Generic PVA;SecKit Generic PA;SecKit Generic PA-CF" + "default_materials": "Generic ABS @SecKit;Generic PLA @SecKit;Generic PLA-CF @SecKit;Generic PETG @SecKit;Generic TPU @SecKit;Generic ASA @SecKit;Generic PC @SecKit;Generic PVA @SecKit;Generic PA @SecKit;Generic PA-CF @SecKit" } diff --git a/resources/profiles/SecKit/machine/fdm_klipper_common.json b/resources/profiles/SecKit/machine/fdm_klipper_common.json index 8b9cbf6efe..4bb08f7367 100644 --- a/resources/profiles/SecKit/machine/fdm_klipper_common.json +++ b/resources/profiles/SecKit/machine/fdm_klipper_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "SecKit Generic PETG" + "Generic PETG @SecKit" ], "default_print_profile": "0.20mm Standard @SecKit", "bed_exclude_area": [ diff --git a/resources/profiles/SeeMeCNC.json b/resources/profiles/SeeMeCNC.json index e3674f8709..4bc30dee93 100644 --- a/resources/profiles/SeeMeCNC.json +++ b/resources/profiles/SeeMeCNC.json @@ -1,6 +1,6 @@ { "name": "SeeMeCNC", - "version": "2.4.0.02", + "version": "2.4.0.03", "force_update": "1", "description": "SeeMeCNC configurations - Full profile set for Artemis, BOSSdelta, and RostockMAX printers", "machine_model_list": [ diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS.json index f00df71cfd..bad8b3a774 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS.json @@ -4,7 +4,7 @@ "inherits": "SeeMeCNC filament base", "from": "System", "setting_id": "jvmDQqgLy8vboFHw", - "filament_id": "SMCFB001", + "filament_id": "OFR0gODA", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC ABS" diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA-CF.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA-CF.json index 25b2f84b7a..690a870c69 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA-CF.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA-CF.json @@ -4,7 +4,7 @@ "inherits": "SeeMeCNC filament base", "from": "System", "setting_id": "xaySfHS4rdZcWsqA", - "filament_id": "SMCFN001", + "filament_id": "OF0b7M1z", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC PA-CF" diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG-CF.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG-CF.json index f9cc79bcfd..9792260d36 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG-CF.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG-CF.json @@ -4,7 +4,7 @@ "inherits": "SeeMeCNC filament base", "from": "System", "setting_id": "UDoa6miFYGnCLiHc", - "filament_id": "SMCFG002", + "filament_id": "OFaRjiIm", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC PETG-CF" diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG.json index a186501902..c58047fa8a 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG.json @@ -4,7 +4,7 @@ "inherits": "SeeMeCNC filament base", "from": "System", "setting_id": "wf9uGLhJeqRDZVR7", - "filament_id": "SMCFG001", + "filament_id": "OFxDHUX8", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC PETG" diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA.json index 8e9cc3c8d3..9747b4caba 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA.json @@ -3,7 +3,7 @@ "name": "SeeMeCNC PLA", "from": "System", "setting_id": "hdn5fZars58kvjwQ", - "filament_id": "SMCFL001", + "filament_id": "OFbSChKb", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC PLA" diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU.json index 791da98e23..602470e962 100644 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU.json +++ b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU.json @@ -4,7 +4,7 @@ "inherits": "SeeMeCNC filament base", "from": "System", "setting_id": "vsEH0aZOKiLat0hH", - "filament_id": "SMCFU001", + "filament_id": "OFyFyLIp", "instantiation": "true", "filament_settings_id": [ "SeeMeCNC TPU" diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 9a6fab7942..0407dca2ec 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.04.00.09", + "version": "02.04.00.12", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ @@ -1572,10 +1572,6 @@ "name": "Snapmaker PLA Silk @0.2 nozzle", "sub_path": "filament/Snapmaker PLA Silk @0.2 nozzle.json" }, - { - "name": "Snapmaker PLA-CF @U1", - "sub_path": "filament/Snapmaker PLA-CF @U1.json" - }, { "name": "Snapmaker PLA-CF", "sub_path": "filament/Snapmaker PLA-CF.json" diff --git a/resources/profiles/Snapmaker/filament/Polymaker General PLA Family @U1.json b/resources/profiles/Snapmaker/filament/Polymaker General PLA Family @U1.json index c706ba776d..0e743d7aee 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker General PLA Family @U1.json +++ b/resources/profiles/Snapmaker/filament/Polymaker General PLA Family @U1.json @@ -4,6 +4,7 @@ "inherits": "Polymaker PLA @U1 base", "from": "system", "setting_id": "thXfSaUkOAKJ50ey", + "filament_id": "OF44ERDr", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Polymaker PLA @U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker PLA @U1 base.json index b27c48f720..ae420e8912 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker PLA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker PLA @U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PLA @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "OGFL99", + "filament_id": "OFelDBgv", "instantiation": "false", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" @@ -48,7 +48,7 @@ "nil" ], "filament_vendor": [ - "Generic" + "Polymaker" ], "filament_scarf_seam_type": [ "none" diff --git a/resources/profiles/Snapmaker/filament/Polymaker Silk PLA Family @U1.json b/resources/profiles/Snapmaker/filament/Polymaker Silk PLA Family @U1.json index b6bd119022..990cc483f3 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker Silk PLA Family @U1.json +++ b/resources/profiles/Snapmaker/filament/Polymaker Silk PLA Family @U1.json @@ -4,6 +4,7 @@ "inherits": "Polymaker PLA @U1 base", "from": "system", "setting_id": "h8vIYpXbxFtHPV6e", + "filament_id": "OFH57ibH", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Polymaker Tough PLA Family @U1.json b/resources/profiles/Snapmaker/filament/Polymaker Tough PLA Family @U1.json index e5c2c7d7f6..1dad000fb2 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker Tough PLA Family @U1.json +++ b/resources/profiles/Snapmaker/filament/Polymaker Tough PLA Family @U1.json @@ -4,6 +4,7 @@ "inherits": "Polymaker PLA @U1 base", "from": "system", "setting_id": "d6CC81Es2hp46bto", + "filament_id": "OFgdaBOt", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json index dfbff7e8fb..693553bdcb 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon ASA-CF08 @Snapmaker U1 base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "GFL71", + "filament_id": "OF0omtEb", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA12-CF10 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA12-CF10 @Snapmaker U1 base.json index b292f8dd62..1496095361 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA12-CF10 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA12-CF10 @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA12-CF10 @Snapmaker U1 base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL56", + "filament_id": "OFvxIS9g", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA6-CF20 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA6-CF20 @Snapmaker U1 base.json index 88aab14bbf..d548075235 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA6-CF20 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA6-CF20 @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA6-CF20 @Snapmaker U1 base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL57", + "filament_id": "OFEabreg", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA612-ESD @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA612-ESD @Snapmaker U1 base.json index f14d1abc1f..8aba062d0f 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA612-ESD @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PA612-ESD @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon PA612-ESD @Snapmaker U1 base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "GFL72", + "filament_id": "OFFZ458u", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PETG-ESD @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PETG-ESD @Snapmaker U1 base.json index 75e03cc52a..9245ada222 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PETG-ESD @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PETG-ESD @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon PETG-ESD @Snapmaker U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFL06", + "filament_id": "OFcytyoA", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json index 271ee8bb5d..5e1cfa7c61 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Fiberon PPS-GF20 @Snapmaker U1 base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "GFL73", + "filament_id": "OFeVzkSU", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma CoPE @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma CoPE @Snapmaker U1 base.json index 85f728d3f3..ab0658f139 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma CoPE @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma CoPE @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma CoPE @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM016", + "filament_id": "OFqw2PQA", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA @Snapmaker U1 base.json index 2695cbee54..7c23e24034 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM001", + "filament_id": "OFsRDvTM", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Celestial @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Celestial @Snapmaker U1 base.json index 5b4b8725c2..2becd66703 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Celestial @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Celestial @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Celestial @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM008", + "filament_id": "OFRiYgMK", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Galaxy @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Galaxy @Snapmaker U1 base.json index 6b14e2b663..932dcd38c6 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Galaxy @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Galaxy @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Galaxy @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM007", + "filament_id": "OFFkCLBl", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Glow @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Glow @Snapmaker U1 base.json index 9e9936c4a4..c45de639c7 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Glow @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Glow @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Glow @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM010", + "filament_id": "OF0gGRWk", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Luminous @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Luminous @Snapmaker U1 base.json index 0e996eb298..80a1604ed2 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Luminous @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Luminous @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Luminous @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM011", + "filament_id": "OF0kCNDK", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Marble @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Marble @Snapmaker U1 base.json index 83ae20eb10..c052908999 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Marble @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Marble @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Marble @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM003", + "filament_id": "OFKiSMWR", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Matte @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Matte @Snapmaker U1 base.json index 6d178bca81..a4ae1b1114 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Matte @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Matte @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Matte @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM002", + "filament_id": "OFrOh600", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Metallic @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Metallic @Snapmaker U1 base.json index 28b2984832..d1b0a54bcd 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Metallic @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Metallic @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Metallic @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM012", + "filament_id": "OFjb0wos", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Neon @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Neon @Snapmaker U1 base.json index eedf3117a8..57a0598ca8 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Neon @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Neon @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Neon @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM013", + "filament_id": "OFO1GEq6", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Satin @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Satin @Snapmaker U1 base.json index df011d8dd3..5a6f2849ae 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Satin @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Satin @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Satin @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM005", + "filament_id": "OFPkCJKE", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Silk @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Silk @Snapmaker U1 base.json index daa8a6ffca..53d1ba2886 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Silk @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Silk @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Silk @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM004", + "filament_id": "OFS8lTQt", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Starlight @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Starlight @Snapmaker U1 base.json index c2841b4572..396f287684 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Starlight @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Starlight @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Starlight @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM009", + "filament_id": "OFC78WGQ", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Temp Shift @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Temp Shift @Snapmaker U1 base.json index f0ccd46a65..6a16bf9994 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Temp Shift @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Temp Shift @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Temp Shift @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM015", + "filament_id": "OFhASRWj", "instantiation": "false", "filament_cost": [ "29.99" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Translucent @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Translucent @Snapmaker U1 base.json index 81d275cfaf..ff8c158df4 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Translucent @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA Translucent @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA Translucent @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM006", + "filament_id": "OFCIUsWh", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA UV Shift @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA UV Shift @Snapmaker U1 base.json index 7ac70319b2..3240927af2 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA UV Shift @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Panchroma PLA UV Shift @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Panchroma PLA UV Shift @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM014", + "filament_id": "OF1N1qMK", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite CosPLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite CosPLA @Snapmaker U1 base.json index 228df29a92..046a702928 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite CosPLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite CosPLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite CosPLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL62", + "filament_id": "OFJgijky", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite Dual PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite Dual PLA @0.2 nozzle.json index f4703d6c40..44125a8381 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite Dual PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite Dual PLA @0.2 nozzle.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyLite Dual PLA @0.2 nozzle", "inherits": "PolyLite PLA @0.2 nozzle", + "filament_id": "OFYGbPHX", "from": "system", "setting_id": "jhmy4YHi9MuL0DWu", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA @0.2 nozzle.json index e1ce855c61..8e4075ccf7 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA @0.2 nozzle.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyLite J1 PLA @0.2 nozzle", "inherits": "PolyLite PLA @0.2 nozzle", + "filament_id": "OF7SliVn", "from": "system", "setting_id": "jFlRSxx0KvN3BOUu", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA.json index 55d39a0832..0bbce7eec8 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite J1 PLA.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyLite J1 PLA", "inherits": "PolyLite PLA @base", + "filament_id": "OF7SliVn", "from": "system", "setting_id": "wcpOTTMyZNPFKyXr", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG @Snapmaker U1 base.json index e8fdd834fe..834f7df457 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PETG @Snapmaker U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFG60", + "filament_id": "OF0UJcb6", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG Translucent @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG Translucent @Snapmaker U1 base.json index 607649e569..a388fc42b5 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG Translucent @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PETG Translucent @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PETG Translucent @Snapmaker U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFL74", + "filament_id": "OF0VpkBM", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @Snapmaker U1 base.json index 8f3b508aec..fccff88c67 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL00", + "filament_id": "OF5CgdDq", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @base.json index 3a4621b838..8c5b17a0fc 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA @base.json @@ -3,8 +3,11 @@ "name": "PolyLite PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1393866034", + "filament_id": "OF5CgdDq", "instantiation": "false", + "filament_vendor": [ + "Polymaker" + ], "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Galaxy @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Galaxy @Snapmaker U1 base.json index fc925c8faa..40cb531494 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Galaxy @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Galaxy @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Galaxy @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL63", + "filament_id": "OFvyB0Bz", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Glow @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Glow @Snapmaker U1 base.json index cc74173c06..f3e2e4ead4 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Glow @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Glow @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Glow @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL64", + "filament_id": "OF5umxxT", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Luminous @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Luminous @Snapmaker U1 base.json index a472e0bec0..20cb3f7ec5 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Luminous @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Luminous @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Luminous @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL65", + "filament_id": "OFBoSWxb", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Neon @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Neon @Snapmaker U1 base.json index 5638bec3ff..2b062379bb 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Neon @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Neon @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Neon @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL66", + "filament_id": "OFitS8al", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro @Snapmaker U1 base.json index c32655ff83..18a295de81 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Pro @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM019", + "filament_id": "OFF9OKoY", "instantiation": "false", "filament_cost": [ "24.99" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro Metallic @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro Metallic @Snapmaker U1 base.json index 898460830f..20057a31e0 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro Metallic @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Pro Metallic @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Pro Metallic @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL75", + "filament_id": "OFnXwW8l", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Starlight @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Starlight @Snapmaker U1 base.json index 17e4d2816a..393a597ea8 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Starlight @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Starlight @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Starlight @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL67", + "filament_id": "OFIxOuOu", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Translucent @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Translucent @Snapmaker U1 base.json index 29341f1c59..5931ddef7d 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Translucent @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyLite PLA Translucent @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyLite PLA Translucent @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL68", + "filament_id": "OFy02QHU", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra Dual PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra Dual PLA @0.2 nozzle.json index 3f8cbc7674..1f28bcfac6 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra Dual PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra Dual PLA @0.2 nozzle.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyTerra Dual PLA @0.2 nozzle", "inherits": "PolyTerra PLA @0.2 nozzle", + "filament_id": "OFCccVrQ", "from": "system", "setting_id": "UQYgjH1uVxf3d2Nv", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA @0.2 nozzle.json index 9cb7060139..6e424a84d3 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA @0.2 nozzle.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyTerra J1 PLA @0.2 nozzle", "inherits": "PolyTerra PLA @0.2 nozzle", + "filament_id": "OF43Raws", "from": "system", "setting_id": "mxKHxGmBZzPLS82O", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA.json index 2583b2a2c3..55fb74f4f7 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra J1 PLA.json @@ -2,6 +2,7 @@ "type": "filament", "name": "PolyTerra J1 PLA", "inherits": "PolyTerra PLA @base", + "filament_id": "OF43Raws", "from": "system", "setting_id": "4MZWZX7QPBzxdEGj", "instantiation": "true", diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA @Snapmaker U1 base.json index 533e781485..82b4b9b839 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL01", + "filament_id": "OFW29a9R", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA Marble @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA Marble @Snapmaker U1 base.json index 141740a499..12242cc1e9 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA Marble @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA Marble @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA Marble @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL69", + "filament_id": "OFxe4rXr", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA+ @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA+ @Snapmaker U1 base.json index 19bec7d25b..a2f5602139 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA+ @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/PolyTerra PLA+ @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "PolyTerra PLA+ @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL70", + "filament_id": "OFEjbwqG", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA @Snapmaker U1 base.json index b447be1455..eab6df9c97 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM017", + "filament_id": "OFPoyiFs", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA-GF @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA-GF @Snapmaker U1 base.json index a98cb9b670..8b59bc45e9 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA-GF @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker HT-PLA-GF @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker HT-PLA-GF @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFPM018", + "filament_id": "OFlwmqrC", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG @Snapmaker U1 base.json index 2209516118..6feec9c407 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PETG @Snapmaker U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFL76", + "filament_id": "OF6H51Xx", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG Galaxy @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG Galaxy @Snapmaker U1 base.json index 5e32b79620..ac2509715a 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG Galaxy @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PETG Galaxy @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PETG Galaxy @Snapmaker U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFL77", + "filament_id": "OFtFtiS0", "instantiation": "false", "bed_type": [ "Cool Plate" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA @Snapmaker U1 base.json index ebd4e5b11a..f072f2eb6f 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PLA @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL78", + "filament_id": "OFelDBgv", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro @Snapmaker U1 base.json index a15908f18e..5e0f051c25 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PLA Pro @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL79", + "filament_id": "OF5oXk4M", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro Metallic @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro Metallic @Snapmaker U1 base.json index 9e2fc3f4e5..bfd8a59e3f 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro Metallic @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Polymaker PLA Pro Metallic @Snapmaker U1 base.json @@ -3,7 +3,7 @@ "name": "Polymaker PLA Pro Metallic @Snapmaker U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL80", + "filament_id": "OFHknN4v", "instantiation": "false", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json index f2144b7dc4..67754ade09 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker ABS @U1 base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "1682237920", + "filament_id": "OF72YYTd", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS @base.json index 6de41e6bcb..1051af1626 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "3811508002", + "filament_id": "OF72YYTd", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS Benchy @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS Benchy @U1.json index db8dea187b..1ba6c22c9a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS Benchy @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS Benchy @U1.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker ABS @U1 base", "from": "system", "setting_id": "xszx4XRGrp88OdP8", + "filament_id": "OFJrvXth", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json index 012b5c4530..413c14cebb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker ASA @U1 base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "12471727060", + "filament_id": "OF1d7c3A", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA @base.json index 667836fe3d..4cc6b0db02 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "2742961008", + "filament_id": "OF1d7c3A", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.2 nozzle.json index db331b0daa..19dc66df4e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.2 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Breakaway Support @base", "from": "system", "setting_id": "mJoaud6wulT4p8SA", + "filament_id": "OFnmp2pO", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.6 nozzle.json index 248c57f6d0..6f800f7b98 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.6 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Breakaway Support @base", "from": "system", "setting_id": "rKUUREJNhstIU0I2", + "filament_id": "OFnmp2pO", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.8 nozzle.json index 47cf80d076..c7a2b01351 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1 0.8 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Breakaway Support @base", "from": "system", "setting_id": "hQ8jQ5GKQKGKuPew", + "filament_id": "OFnmp2pO", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1.json index 9e5d63a63c..eff74ae5ab 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Breakaway Support For PLA @U1.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Breakaway Support @base", "from": "system", "setting_id": "5DqT3CYUgp1oJD1V", + "filament_id": "OFnmp2pO", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json index 3f61d2b12e..2629e15051 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "168223792", + "filament_id": "OFJhT2fd", "instantiation": "false", "hot_plate_temp": [ "110" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json index e42e9efc4a..6554a924f6 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Dual ABS @base", "from": "system", "setting_id": "YMUFsOzEISsMqCLe", + "filament_id": "OFeAxvEt", "instantiation": "true", "compatible_printers": [ "Snapmaker Artisan (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json index ba18223e4a..7f54df76bb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "1247172706", + "filament_id": "OFKUEXPA", "instantiation": "false", "hot_plate_temp": [ "110" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json index ef59734df1..bdb539a065 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual Breakaway @base", "inherits": "fdm_filament_breakaway", "from": "system", - "filament_id": "1207881278", + "filament_id": "OFfmHUkQ", "instantiation": "false", "filament_loading_speed_start": [ "35" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json index eedf48c86d..5390ffe222 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "3493177425", + "filament_id": "OFRooa0F", "instantiation": "false", "hot_plate_temp": [ "100" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json index f222b257bb..84cd37dfe7 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PET @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "2128577941", + "filament_id": "OFUIfGoh", "instantiation": "false", "overhang_fan_speed": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json index 55a188dfb7..ea5c61eb3b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PETG @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "2209001062", + "filament_id": "OFBlFMVp", "instantiation": "false", "overhang_fan_speed": [ "25" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json index 37c2b65a6e..5e8a40a8af 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PETG-CF @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "1042511226", + "filament_id": "OF3msXEa", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json index 20b215ab7c..1d8a6fe9ba 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1417031127", + "filament_id": "OFZivHGL", "instantiation": "false", "filament_retraction_length": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json index 68fa882ada..0f880ac980 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA Eco @base", "inherits": "fdm_filament_pla_eco", "from": "system", - "filament_id": "200803790", + "filament_id": "OFyPG8v2", "instantiation": "false", "filament_density": [ "1.26" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json index 1010df744a..6838983e1b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "3503790988", + "filament_id": "OFlIsW6f", "instantiation": "false", "filament_density": [ "1.32" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json index d90435974a..7080dddad1 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "2029994346", + "filament_id": "OFg3cWVt", "instantiation": "false", "filament_cost": [ "90" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json index ded13a34e3..f2024f8ddf 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1181363872", + "filament_id": "OFyj3m13", "instantiation": "false", "hot_plate_temp_initial_layer": [ "65" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json index 8d6ca390a9..d9b45b5f79 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1702147325", + "filament_id": "OF6ATsCF", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json index eda6fbf638..d9bc0f80ed 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "3104636980", + "filament_id": "OFDKIKyw", "instantiation": "false", "filament_loading_speed_start": [ "35" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json index f29f3f2189..a8d87836b0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Dual TPU @base", "from": "system", "setting_id": "KoZqZ4l1tYZ99JYz", + "filament_id": "OFTs8peJ", "instantiation": "true", "compatible_printers": [ "Snapmaker A250 Dual (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json index 3c106e21aa..903ea5c744 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker Dual TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "2971656290", + "filament_id": "OFjkdnyN", "instantiation": "false", "filament_loading_speed_start": [ "35" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json index 7db3a84d21..04490520d3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Dual TPU @base", "from": "system", "setting_id": "D1vA7cdI5kghtrxf", + "filament_id": "OFcBJQcC", "instantiation": "true", "compatible_printers": [ "Snapmaker A250 Dual (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json index 91afed2dab..bf1229454c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 ABS @base", "inherits": "fdm_filament_abs", "from": "system", - "filament_id": "1223824394", + "filament_id": "OFy14TRA", "instantiation": "false", "hot_plate_temp": [ "110" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json index 4b3dcc5e2f..3d3e47b701 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker J1 ABS @base", "from": "system", "setting_id": "b1Z94AhG8viXuDsq", + "filament_id": "OF8dCquh", "instantiation": "true", "compatible_printers": [ "Snapmaker J1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json index 0ac62b83b6..b72c5795f8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 ASA @base", "inherits": "fdm_filament_asa", "from": "system", - "filament_id": "144877656", + "filament_id": "OFt7SngH", "instantiation": "false", "hot_plate_temp": [ "110" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json index d0b9afe2ce..5acb7bd524 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker J1 Breakaway @base", "inherits": "fdm_filament_breakaway", "from": "system", - "filament_id": "3492897526", + "filament_id": "OFeTATC7", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json index 714a0f1190..4e923b2f76 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "1210173120", + "filament_id": "OFYEtXuk", "instantiation": "false", "overhang_fan_speed": [ "55" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json index 7b2787695b..d3688cbdf7 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PET @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "1009481135", + "filament_id": "OF8Jl6NT", "instantiation": "false", "overhang_fan_speed": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json index 560a29961d..327ac4d103 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PETG @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "1172603684", + "filament_id": "OFQMTRc8", "instantiation": "false", "overhang_fan_speed": [ "35" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json index cc323fa5b9..b3161b9c9d 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PETG-CF @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "4235401834", + "filament_id": "OFxYB4Sw", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json index 00ffe9de38..f845a62a77 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "377675245", + "filament_id": "OFSa39yP", "instantiation": "false", "filament_retraction_length": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json index 61bafb8477..84e330f35d 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA Eco @base", "inherits": "fdm_filament_pla_eco", "from": "system", - "filament_id": "3383257822", + "filament_id": "OFLbdkrE", "instantiation": "false", "filament_density": [ "1.26" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json index 8cefd42ce1..7fcb2d8633 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA Matte @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1192769348", + "filament_id": "OFY3AB7j", "instantiation": "false", "filament_density": [ "1.32" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json index 49d3a3a416..3fe36e7155 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA Metal @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "4012961186", + "filament_id": "OFt0JbR7", "instantiation": "false", "filament_cost": [ "90" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json index 174982b184..331030d8dd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1528786603", + "filament_id": "OFQ1KzO8", "instantiation": "false", "hot_plate_temp_initial_layer": [ "65" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json index 2dd3de3d58..07158641d8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "3806593857", + "filament_id": "OFdD5Wbu", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json index a02dac10a5..05f057f0ca 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "4227461134", + "filament_id": "OF6TuVAg", "instantiation": "false", "slow_down_layer_time": [ "8" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json index b3c6a49434..327ba6e6da 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker J1 TPU @base", "from": "system", "setting_id": "6N7VB3mKAShGVYL3", + "filament_id": "OFV5Q7j2", "instantiation": "true", "compatible_printers": [ "Snapmaker J1 (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json index 315a18e3b4..aec03dd322 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker J1 TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "4092268632", + "filament_id": "OFyrnlUn", "instantiation": "false", "nozzle_temperature_initial_layer": [ "240" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU High-Flow.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU High-Flow.json index 4186cea511..66e5c331ae 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU High-Flow.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU High-Flow.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker J1 TPU @base", "from": "system", "setting_id": "wdN8j0Zv2bJ29XHA", + "filament_id": "OFlBoEfL", "instantiation": "true", "compatible_printers": [ "Snapmaker J1 (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json index 66874b0b2d..62b54feb70 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PA-CF @U1 base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "34931774250", + "filament_id": "OFEmsric", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1.json index 402b5785dd..b2dc562d3b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1.json @@ -6,8 +6,6 @@ "setting_id": "8aP6ye4aeOS7qKpG", "instantiation": "true", "compatible_printers": [ - "Snapmaker U1 (0.4 nozzle)", - "Snapmaker U1 (0.4 nozzle)", "Snapmaker U1 (0.4 nozzle)" ] } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @base.json index c4c8117679..6918bcb746 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PA-CF @base", "inherits": "fdm_filament_pa", "from": "system", - "filament_id": "581236806", + "filament_id": "OFEmsric", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json index 4bf208ea44..364cb2a9aa 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker Dual PET @base", "from": "system", "setting_id": "3xJOWlbt2feyRKTV", + "filament_id": "OFQYaiGg", "instantiation": "true", "compatible_printers": [ "Snapmaker A250 Dual (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json index 6edd0ee2fa..2dae11ec36 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PET @U1 base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "21285779410", + "filament_id": "OFQYaiGg", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json index 9038a8cb4c..f6a9db6835 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PET @base", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "2549587591", + "filament_id": "OFQYaiGg", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json index 5f048f2574..ce0e7c8122 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PETG @U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "22090010620", + "filament_id": "OF4WB37S", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG @base.json index 896b4dc154..02a40601f2 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PETG @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "1895495477", + "filament_id": "OF4WB37S", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG HF @U1 base2.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG HF @U1 base2.json index 0ad75759a1..4f934b93a3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG HF @U1 base2.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG HF @U1 base2.json @@ -3,7 +3,7 @@ "name": "Snapmaker PETG HF @U1 base2", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "GFG96", + "filament_id": "OFL9aRjN", "instantiation": "false", "cool_plate_temp": [ "0" @@ -177,7 +177,7 @@ "nil" ], "filament_vendor": [ - "Generic" + "Snapmaker" ], "filament_prime_volume": [ "45" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG Translucent @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG Translucent @U1 base.json index eb18fb4838..6b51cd2535 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG Translucent @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG Translucent @U1 base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PETG Translucent @U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "PETG_TRANSLUCENT_001", + "filament_id": "OFW8lqnb", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json index 2d74db595b..47869c9779 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PETG-CF @U1 base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "10425112260", + "filament_id": "OFOwQuZM", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json index afd7cf79ee..1b0f300341 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PETG-CF @base", "inherits": "fdm_filament_petg", "from": "system", - "filament_id": "1355502217", + "filament_id": "OFOwQuZM", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json index 3100986363..5611cb34f3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "14170311270", + "filament_id": "OFlufQpZ", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA @base.json index 9d010aa49d..48e1f70d80 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PLA @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "3177068229", + "filament_id": "OFlufQpZ", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json index adf7624e1f..d6e7e209c6 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json @@ -2,8 +2,11 @@ "type": "filament", "name": "Snapmaker PLA Basic @U1 base", "from": "system", - "filament_id": "1417031127011", + "filament_id": "OFhmxnYw", "instantiation": "false", + "filament_vendor": [ + "Snapmaker" + ], "filament_end_gcode": [ "" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json index 43a0726b2c..c305704269 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Eco @U1 base", "inherits": "fdm_filament_pla_eco", "from": "system", - "filament_id": "2008037900", + "filament_id": "OFpu74Qe", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @base.json index 4b41b7b9e1..e4ce7fc8c3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PLA Eco @base", "inherits": "fdm_filament_pla_eco", "from": "system", - "filament_id": "1695556157", + "filament_id": "OFpu74Qe", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json index 990e67a79e..219e8075e5 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker PLA Basic @U1 base", "from": "system", "setting_id": "iybaFWrXKOsmXgMJ", + "filament_id": "OFOPU1xv", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json index ad3c1f4bbb..e69ca63254 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Glow @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "SPGLOW001", + "filament_id": "OFfD87Gy", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json index b75944c3ec..21384a0567 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Snapmaker PLA Lite @U1 base", "from": "system", - "filament_id": "1417031127011", + "filament_id": "OFEOnBj6", "instantiation": "false", "filament_end_gcode": [ "" @@ -46,6 +46,9 @@ "filament_type": [ "PLA" ], + "filament_vendor": [ + "Snapmaker" + ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1.json index fab081d5d7..d2c9dddefb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1.json @@ -198,7 +198,7 @@ "100" ], "filament_vendor": [ - "Polymaker" + "Snapmaker" ], "filament_wipe": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json index 3ffb3314a1..d8b3ebef60 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Snapmaker PLA Matte @U1 base", "from": "system", - "filament_id": "141703112701", + "filament_id": "OFF9cgY5", "instantiation": "false", "filament_end_gcode": [ "" @@ -46,6 +46,9 @@ "filament_type": [ "PLA" ], + "filament_vendor": [ + "Snapmaker" + ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json index 6c0dcf26fd..109dbc19e7 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json @@ -2,8 +2,11 @@ "type": "filament", "name": "Snapmaker PLA Matte @U1 base2", "from": "system", - "filament_id": "141703112701", + "filament_id": "OFF9cgY5", "instantiation": "false", + "filament_vendor": [ + "Snapmaker" + ], "filament_end_gcode": [ "" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1.json index a71c43f9b0..badf918d97 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker PLA @U1 base", "from": "system", "setting_id": "uAhykL5ap1DAKacf", + "filament_id": "OFF9cgY5", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json index 9fba864f40..1db2d82548 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Metal @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "20299943460", + "filament_id": "OFtybfNX", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.2 nozzle.json index 5eb860506c..e4fdb8016b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.2 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Snapmaker PLA Basic @U1 base", "from": "system", "setting_id": "Q5xH6oGGlbXr14Pa", - "filament_id": "11813638720", + "filament_id": "OFWgFOjn", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.6 nozzle.json index 5df6ff5a3a..b144ce86dd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Snapmaker PLA Basic @U1 base", "from": "system", "setting_id": "2pieDQoz9PiDCnU1", - "filament_id": "11813638720", + "filament_id": "OFWgFOjn", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.8 nozzle.json index 0758372ea0..aa92e97d18 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "Snapmaker PLA Basic @U1 base", "from": "system", "setting_id": "f3H0JFUnds0mkKCN", - "filament_id": "11813638720", + "filament_id": "OFWgFOjn", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json index 227fa034dc..37bc90db26 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Silk @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "11813638720", + "filament_id": "OFWgFOjn", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1.json index c68904ffd9..6b6030b919 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1.json @@ -4,7 +4,7 @@ "inherits": "Snapmaker PLA Basic @U1 base", "from": "system", "setting_id": "9PkHSwtXFM0zPWth", - "filament_id": "11813638720", + "filament_id": "OFWgFOjn", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @base.json index 8c821fdaaa..b35519fdd9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Silk @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "1655727393", + "filament_id": "OFWgFOjn", "instantiation": "false", "hot_plate_temp_initial_layer": [ "65" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json index adaaf5c3c6..b87c48cbe5 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Snapmaker PLA SnapSpeed @U1 base", "from": "system", - "filament_id": "141703112701", + "filament_id": "OFwhLMs4", "instantiation": "false", "filament_end_gcode": [ "" @@ -46,6 +46,9 @@ "filament_type": [ "PLA" ], + "filament_vendor": [ + "Snapmaker" + ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base2.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base2.json index 84889e3d9b..41876b04bb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base2.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base2.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Snapmaker PLA SnapSpeed @U1 base2", "from": "system", - "filament_id": "141703112701", + "filament_id": "OFwhLMs4", "instantiation": "false", "activate_air_filtration": [ "0" @@ -195,7 +195,7 @@ "100" ], "filament_vendor": [ - "snapmaker" + "Snapmaker" ], "filament_wipe": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json index 4f4842ae1d..1ed79183c9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA Translucent @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "SPTR001", + "filament_id": "OFLTYJW0", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.4 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.4 nozzle.json index 4768ac2783..283d5876b7 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.4 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.4 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "XvizDDHbds3bVrzi", - "filament_id": "GFL9922", + "filament_id": "OFdd8ZqJ", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.6 nozzle.json index 43d306ebae..09555457d5 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "Kp77DCcitdmoyjqm", - "filament_id": "GFL9922", + "filament_id": "OFdd8ZqJ", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.8 nozzle.json index da788a35fb..4a5a04a5ee 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Wood @U1 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "nBYnNiqwLo6nAsqi", - "filament_id": "GFL9922", + "filament_id": "OFdd8ZqJ", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.4 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.4 nozzle.json index b986a7244a..9ce38a9782 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.4 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.4 nozzle.json @@ -3,8 +3,9 @@ "name": "Snapmaker PLA-CF @U1 0.4 nozzle", "inherits": "fdm_filament_pla", "from": "system", + "renamed_from": "Snapmaker PLA-CF @U1", "setting_id": "2INwruC3ZVkBTdUT", - "filament_id": "GFL98111", + "filament_id": "OFhQf8ou", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.6 nozzle.json index dcb6392634..6f09ea5d6a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "CKfdL85SvbOLzMuP", - "filament_id": "GFL98111", + "filament_id": "OFhQf8ou", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.8 nozzle.json index 1e6e961497..564e59e1a9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "fhhnfJm4dN9FXpWQ", - "filament_id": "GFL98111", + "filament_id": "OFhQf8ou", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json index 63f877d965..962c6fcccb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA-CF @U1 base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "17021473250", + "filament_id": "OFhQf8ou", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1.json deleted file mode 100644 index 9091258467..0000000000 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "filament", - "name": "Snapmaker PLA-CF @U1", - "inherits": "Snapmaker PLA-CF @U1 base", - "from": "system", - "setting_id": "eyNYjz24xQYyAQcv", - "instantiation": "true", - "compatible_printers": [ - "Snapmaker U1 (0.4 nozzle)" - ], - "filament_retract_length_toolchange": [ - "5" - ] -} diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @base.json index 040e559f38..910a8a7617 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PLA-CF @base", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "3864371306", + "filament_id": "OFhQf8ou", "instantiation": "false", "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json index 91ff319c8e..206f024091 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker PVA @U1 base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "31046369800", + "filament_id": "OFyhjiNs", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @base.json index c49e948c02..1edf0516c4 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker PVA @base", "inherits": "fdm_filament_pva", "from": "system", - "filament_id": "1344609062", + "filament_id": "OFyhjiNs", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPE @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker TPE @U1.json index 846f7acff9..a4214b6cd0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPE @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPE @U1.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker TPU @U1 base", "from": "system", "setting_id": "aqE9IR6dFd2MQLXR", + "filament_id": "OFWTAEjH", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json index 861f11ff09..c5c42d6126 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker TPU @base", "from": "system", "setting_id": "pFGj8sxkPmk10bP4", + "filament_id": "OFWTAEjH", "instantiation": "true", "compatible_printers": [ "Snapmaker A250 (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.6 nozzle.json index 6ae8a5b675..afb529e983 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "uQCplebxmpBpzsnk", - "filament_id": "GFU99", + "filament_id": "OFY7jxcS", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.8 nozzle.json index 45f0f7a0e9..8cf3452469 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "w4Hpl2qNPmgNvaeM", - "filament_id": "GFU99", + "filament_id": "OFY7jxcS", "instantiation": "true", "filament_max_volumetric_speed": [ "3.5" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1.json index e89397849b..8f6ba9663f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 90A @U1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "T4MmgICRrSzvmCZ5", - "filament_id": "GFU99", + "filament_id": "OFY7jxcS", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1 base.json index 3c51439206..d61e2adb1b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1 base.json @@ -2,7 +2,7 @@ "type": "filament", "name": "Snapmaker TPU 95A @U1 base", "from": "system", - "filament_id": "297165629001", + "filament_id": "OFvmwTZE", "instantiation": "false", "overhang_fan_threshold": [ "95%" @@ -47,7 +47,7 @@ "0" ], "filament_vendor": [ - "Generic" + "Snapmaker" ], "filament_wipe": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1.json index 9cc40e8552..59b125ff72 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A @U1.json @@ -195,7 +195,7 @@ "100" ], "filament_vendor": [ - "Generic" + "Snapmaker" ], "filament_wipe": [ "nil" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json index 1085c84e6f..b9619dcca5 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "Q2svXpkEqg0dCdq3", - "filament_id": "GFU99", + "filament_id": "OFXSvqOX", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json index bef4c7712f..4283ac2651 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "RjsE08h3l37cAkAs", - "filament_id": "GFU99", + "filament_id": "OFXSvqOX", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1.json index 5e0696d906..816b78ceb8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU 95A HF @U1.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "KwcwmV2UmZUgCBoz", - "filament_id": "GFU99", + "filament_id": "OFXSvqOX", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json index 6e9efb2034..6ad1de856e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json @@ -3,7 +3,7 @@ "name": "Snapmaker TPU @U1 base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "29716562900", + "filament_id": "OF65InrS", "instantiation": "false", "filament_end_gcode": [ "" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU @base.json index 8208dc980c..85a66a5008 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU @base.json @@ -3,6 +3,6 @@ "name": "Snapmaker TPU @base", "inherits": "fdm_filament_tpu", "from": "system", - "filament_id": "1480063856", + "filament_id": "OF65InrS", "instantiation": "false" } diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU High-Flow @U1.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU High-Flow @U1.json index d338d8e4b9..0aca011924 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU High-Flow @U1.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU High-Flow @U1.json @@ -4,6 +4,7 @@ "inherits": "Snapmaker TPU @U1 base", "from": "system", "setting_id": "5AXIg8WCdcd74S5v", + "filament_id": "OFgyPlwU", "instantiation": "true", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)", diff --git a/resources/profiles/Snapmaker/machine/fdm_U1.json b/resources/profiles/Snapmaker/machine/fdm_U1.json index 717215b507..0b3d89a303 100644 --- a/resources/profiles/Snapmaker/machine/fdm_U1.json +++ b/resources/profiles/Snapmaker/machine/fdm_U1.json @@ -184,7 +184,7 @@ "nozzle_type": "undefine", "auxiliary_fan": "0", "support_multi_bed_types": "1", - "default_bed_type": "4", + "default_bed_type": "Textured PEI Plate", "printable_area": [ "0.5x1", "270.5x1", diff --git a/resources/profiles/Sovol.json b/resources/profiles/Sovol.json index 770ca55c95..a38645abc2 100644 --- a/resources/profiles/Sovol.json +++ b/resources/profiles/Sovol.json @@ -1,7 +1,7 @@ { "name": "Sovol", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Sovol configurations", "machine_model_list": [ @@ -234,96 +234,96 @@ "sub_path": "filament/SUNLU PETG @Sovol SV08 MAX.json" }, { - "name": "Sovol SV06 ACE ABS", - "sub_path": "filament/Sovol SV06 ACE ABS.json" + "name": "Generic ABS @Sovol SV06 ACE", + "sub_path": "filament/Generic ABS @Sovol SV06 ACE.json" }, { - "name": "Sovol SV06 ACE PETG", - "sub_path": "filament/Sovol SV06 ACE PETG.json" + "name": "Generic PETG @Sovol SV06 ACE", + "sub_path": "filament/Generic PETG @Sovol SV06 ACE.json" }, { - "name": "Sovol SV06 ACE PLA", - "sub_path": "filament/Sovol SV06 ACE PLA.json" + "name": "Generic PLA @Sovol SV06 ACE", + "sub_path": "filament/Generic PLA @Sovol SV06 ACE.json" }, { - "name": "Sovol SV06 ACE TPU", - "sub_path": "filament/Sovol SV06 ACE TPU.json" + "name": "Generic TPU @Sovol SV06 ACE", + "sub_path": "filament/Generic TPU @Sovol SV06 ACE.json" }, { - "name": "Sovol SV06 Plus ACE ABS", - "sub_path": "filament/Sovol SV06 Plus ACE ABS.json" + "name": "Generic ABS @Sovol SV06 Plus ACE", + "sub_path": "filament/Generic ABS @Sovol SV06 Plus ACE.json" }, { - "name": "Sovol SV06 Plus ACE PETG", - "sub_path": "filament/Sovol SV06 Plus ACE PETG.json" + "name": "Generic PETG @Sovol SV06 Plus ACE", + "sub_path": "filament/Generic PETG @Sovol SV06 Plus ACE.json" }, { - "name": "Sovol SV06 Plus ACE PLA", - "sub_path": "filament/Sovol SV06 Plus ACE PLA.json" + "name": "Generic PLA @Sovol SV06 Plus ACE", + "sub_path": "filament/Generic PLA @Sovol SV06 Plus ACE.json" }, { - "name": "Sovol SV06 Plus ACE TPU", - "sub_path": "filament/Sovol SV06 Plus ACE TPU.json" + "name": "Generic TPU @Sovol SV06 Plus ACE", + "sub_path": "filament/Generic TPU @Sovol SV06 Plus ACE.json" }, { - "name": "Sovol SV07 PLA", - "sub_path": "filament/Sovol SV07 PLA.json" + "name": "Generic PLA @Sovol SV07", + "sub_path": "filament/Generic PLA @Sovol SV07.json" }, { - "name": "Sovol SV08 ABS", - "sub_path": "filament/Sovol SV08 ABS.json" + "name": "Generic ABS @Sovol SV08", + "sub_path": "filament/Generic ABS @Sovol SV08.json" }, { - "name": "Sovol SV08 PETG", - "sub_path": "filament/Sovol SV08 PETG.json" + "name": "Generic PETG @Sovol SV08", + "sub_path": "filament/Generic PETG @Sovol SV08.json" }, { - "name": "Sovol SV08 PLA", - "sub_path": "filament/Sovol SV08 PLA.json" + "name": "Generic PLA @Sovol SV08", + "sub_path": "filament/Generic PLA @Sovol SV08.json" }, { - "name": "Sovol SV08 PLA @SV08 0.2 nozzle", - "sub_path": "filament/Sovol SV08 PLA @SV08 0.2 nozzle.json" + "name": "Generic PLA @Sovol SV08 0.2 nozzle", + "sub_path": "filament/Generic PLA @Sovol SV08 0.2 nozzle.json" }, { - "name": "Sovol SV08 TPU", - "sub_path": "filament/Sovol SV08 TPU.json" + "name": "Generic TPU @Sovol SV08", + "sub_path": "filament/Generic TPU @Sovol SV08.json" }, { - "name": "Sovol Zero ABS", - "sub_path": "filament/Sovol Zero ABS.json" + "name": "Generic ABS @Sovol Zero", + "sub_path": "filament/Generic ABS @Sovol Zero.json" }, { - "name": "Sovol Zero PC", - "sub_path": "filament/Sovol Zero PC.json" + "name": "Generic PC @Sovol Zero", + "sub_path": "filament/Generic PC @Sovol Zero.json" }, { - "name": "Sovol Zero PETG", - "sub_path": "filament/Sovol Zero PETG.json" + "name": "Generic PETG @Sovol Zero", + "sub_path": "filament/Generic PETG @Sovol Zero.json" }, { "name": "Sovol Zero PETG HS Nozzle", "sub_path": "filament/Sovol Zero PETG HS Nozzle.json" }, { - "name": "Sovol Zero PLA Basic", - "sub_path": "filament/Sovol Zero PLA Basic.json" + "name": "Generic PLA @Sovol Zero", + "sub_path": "filament/Generic PLA @Sovol Zero.json" }, { "name": "Sovol Zero PLA Basic HS Nozzle", "sub_path": "filament/Sovol Zero PLA Basic HS Nozzle.json" }, { - "name": "Sovol Zero PLA Silk", - "sub_path": "filament/Sovol Zero PLA Silk.json" + "name": "Generic PLA Silk @Sovol Zero", + "sub_path": "filament/Generic PLA Silk @Sovol Zero.json" }, { "name": "Sovol Zero PLA Silk HS Nozzle", "sub_path": "filament/Sovol Zero PLA Silk HS Nozzle.json" }, { - "name": "Sovol Zero TPU", - "sub_path": "filament/Sovol Zero TPU.json" + "name": "Generic TPU @Sovol Zero", + "sub_path": "filament/Generic TPU @Sovol Zero.json" } ], "machine_list": [ diff --git a/resources/profiles/Sovol/filament/Sovol SV06 ACE ABS.json b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 ACE.json similarity index 87% rename from resources/profiles/Sovol/filament/Sovol SV06 ACE ABS.json rename to resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 ACE.json index c77c7812b6..49b26d498a 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 ACE ABS.json +++ b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 ACE ABS", + "name": "Generic ABS @Sovol SV06 ACE", "inherits": "Generic ABS @System", + "renamed_from": "Sovol SV06 ACE ABS", "from": "system", - "setting_id": "okqqqm0P8ehlQuDY", - "filament_id": "GFL99", + "setting_id": "exjBdPPCgk53gipu", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE ABS.json b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 Plus ACE.json similarity index 84% rename from resources/profiles/Sovol/filament/Sovol SV06 Plus ACE ABS.json rename to resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 Plus ACE.json index 42652117ef..905ee2bda0 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE ABS.json +++ b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV06 Plus ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 Plus ACE ABS", + "name": "Generic ABS @Sovol SV06 Plus ACE", "inherits": "Generic ABS @System", + "renamed_from": "Sovol SV06 Plus ACE ABS", "from": "system", - "setting_id": "Me1iSJmocW35ClmN", - "filament_id": "GFL99", + "setting_id": "sg9HXvKEoKD4pw7v", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08 MAX.json index 8e043a5a48..8532e5bee0 100644 --- a/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08 MAX.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "7julgReKEcp5tg0d", "name": "Generic ABS @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol SV08 ABS.json b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08.json similarity index 91% rename from resources/profiles/Sovol/filament/Sovol SV08 ABS.json rename to resources/profiles/Sovol/filament/Generic ABS @Sovol SV08.json index 0bb16950d3..e690ee88e5 100644 --- a/resources/profiles/Sovol/filament/Sovol SV08 ABS.json +++ b/resources/profiles/Sovol/filament/Generic ABS @Sovol SV08.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV08 ABS", + "name": "Generic ABS @Sovol SV08", "inherits": "Generic ABS @System", + "renamed_from": "Sovol SV08 ABS", "from": "system", - "setting_id": "nq4vvrWqKjWKELEz", - "filament_id": "GFL99", + "setting_id": "aZx3ePr3Id1jPJG9", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol Zero ABS.json b/resources/profiles/Sovol/filament/Generic ABS @Sovol Zero.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol Zero ABS.json rename to resources/profiles/Sovol/filament/Generic ABS @Sovol Zero.json index ecd862970a..3b737e2a18 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero ABS.json +++ b/resources/profiles/Sovol/filament/Generic ABS @Sovol Zero.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol Zero ABS", + "name": "Generic ABS @Sovol Zero", "inherits": "Generic ABS @System", + "renamed_from": "Sovol Zero ABS", "from": "system", - "setting_id": "9pI7op6U4azpfNfb", - "filament_id": "GFL99", + "setting_id": "g6sSyyIFYJUzlXsp", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic PC @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic PC @Sovol SV08 MAX.json index ec1fefce99..242c320a7d 100644 --- a/resources/profiles/Sovol/filament/Generic PC @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic PC @Sovol SV08 MAX.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "UPoqjanrvN173sVS", "name": "Generic PC @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol Zero PC.json b/resources/profiles/Sovol/filament/Generic PC @Sovol Zero.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol Zero PC.json rename to resources/profiles/Sovol/filament/Generic PC @Sovol Zero.json index ac866620dd..dd0eb60594 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PC.json +++ b/resources/profiles/Sovol/filament/Generic PC @Sovol Zero.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol Zero PC", + "name": "Generic PC @Sovol Zero", "inherits": "Generic PC @System", + "renamed_from": "Sovol Zero PC", "from": "system", - "setting_id": "vuuZXnlrMgUKtSI0", - "filament_id": "GFL99", + "setting_id": "yRKCiPMN6fxibcyg", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 ACE PETG.json b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 ACE.json similarity index 87% rename from resources/profiles/Sovol/filament/Sovol SV06 ACE PETG.json rename to resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 ACE.json index b8151d47f4..acb2c90316 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 ACE PETG.json +++ b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 ACE PETG", + "name": "Generic PETG @Sovol SV06 ACE", "inherits": "Generic PETG @System", + "renamed_from": "Sovol SV06 ACE PETG", "from": "system", - "setting_id": "5mtng0PM8CMglpD7", - "filament_id": "GFL99", + "setting_id": "p8fGWNVkT6n5Dv9P", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PETG.json b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 Plus ACE.json similarity index 84% rename from resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PETG.json rename to resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 Plus ACE.json index 483d28af10..5c2dfeff98 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PETG.json +++ b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV06 Plus ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 Plus ACE PETG", + "name": "Generic PETG @Sovol SV06 Plus ACE", "inherits": "Generic PETG @System", + "renamed_from": "Sovol SV06 Plus ACE PETG", "from": "system", - "setting_id": "ZrAm6Nm4FI7p4PgC", - "filament_id": "GFL99", + "setting_id": "I7IzLMYw7iDUUJwc", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08 MAX.json index d23224b8f9..550d30ccf5 100644 --- a/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08 MAX.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "ib7AtR3tQ2dSrFNP", "name": "Generic PETG @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol SV08 PETG.json b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol SV08 PETG.json rename to resources/profiles/Sovol/filament/Generic PETG @Sovol SV08.json index 4fe3cc866f..c637897b10 100644 --- a/resources/profiles/Sovol/filament/Sovol SV08 PETG.json +++ b/resources/profiles/Sovol/filament/Generic PETG @Sovol SV08.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV08 PETG", + "name": "Generic PETG @Sovol SV08", "inherits": "Generic PETG @System", + "renamed_from": "Sovol SV08 PETG", "from": "system", - "setting_id": "CWd7KULbXvJeTTEy", - "filament_id": "GFL99", + "setting_id": "7vDZKIKJW5fy1EGG", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol Zero PETG.json b/resources/profiles/Sovol/filament/Generic PETG @Sovol Zero.json similarity index 91% rename from resources/profiles/Sovol/filament/Sovol Zero PETG.json rename to resources/profiles/Sovol/filament/Generic PETG @Sovol Zero.json index e7b328ac6f..a223521d25 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PETG.json +++ b/resources/profiles/Sovol/filament/Generic PETG @Sovol Zero.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol Zero PETG", + "name": "Generic PETG @Sovol Zero", "inherits": "Generic PETG @System", + "renamed_from": "Sovol Zero PETG", "from": "system", - "setting_id": "75OJvkXlmbcaHQfW", - "filament_id": "GFL99", + "setting_id": "i4OW2eAtXOKdtVNj", "instantiation": "true", "filament_flow_ratio": [ "1.0348" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 ACE PLA.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 ACE.json similarity index 87% rename from resources/profiles/Sovol/filament/Sovol SV06 ACE PLA.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 ACE.json index da10d948ab..de9e7cde47 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 ACE PLA.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 ACE PLA", + "name": "Generic PLA @Sovol SV06 ACE", "inherits": "Generic PLA @System", + "renamed_from": "Sovol SV06 ACE PLA", "from": "system", - "setting_id": "kgtcANsbfwSbdgOh", - "filament_id": "GFL99", + "setting_id": "UEEwpetmmxpxM4vV", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PLA.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 Plus ACE.json similarity index 85% rename from resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PLA.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 Plus ACE.json index ef249ea17f..8dcb4a6d2d 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE PLA.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV06 Plus ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 Plus ACE PLA", + "name": "Generic PLA @Sovol SV06 Plus ACE", "inherits": "Generic PLA @System", + "renamed_from": "Sovol SV06 Plus ACE PLA", "from": "system", - "setting_id": "YEEOGJYm4Z8W4vGV", - "filament_id": "GFL99", + "setting_id": "yzv5Kwe3OivHxNUI", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV07 PLA.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV07.json similarity index 87% rename from resources/profiles/Sovol/filament/Sovol SV07 PLA.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol SV07.json index 47fe781fcc..42210ef9c0 100644 --- a/resources/profiles/Sovol/filament/Sovol SV07 PLA.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV07.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV07 PLA", + "name": "Generic PLA @Sovol SV07", "inherits": "Generic PLA @System", + "renamed_from": "Sovol SV07 PLA", "from": "system", - "setting_id": "IHicmU5gzVf6G4F1", - "filament_id": "GFL99", + "setting_id": "sNGno8XCSsgmwjvH", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV08 PLA @SV08 0.2 nozzle.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 0.2 nozzle.json similarity index 84% rename from resources/profiles/Sovol/filament/Sovol SV08 PLA @SV08 0.2 nozzle.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 0.2 nozzle.json index 046d787dc5..be23b183ab 100644 --- a/resources/profiles/Sovol/filament/Sovol SV08 PLA @SV08 0.2 nozzle.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV08 PLA @SV08 0.2 nozzle", + "name": "Generic PLA @Sovol SV08 0.2 nozzle", "inherits": "Generic PLA @System", + "renamed_from": "Sovol SV08 PLA @SV08 0.2 nozzle;Sovol SV08 PLA SV08 0.2 nozzle", "from": "system", - "setting_id": "qmnuve3FgzrXgjPA", - "filament_id": "GFL99", + "setting_id": "W7oQNGWqiPMUlzhw", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 MAX.json index 7ef7748ec1..b29bc1b069 100644 --- a/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08 MAX.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "kcFykpuuxMy7KwNu", "name": "Generic PLA @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol SV08 PLA.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08.json similarity index 89% rename from resources/profiles/Sovol/filament/Sovol SV08 PLA.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol SV08.json index 2132557b68..c124edee31 100644 --- a/resources/profiles/Sovol/filament/Sovol SV08 PLA.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol SV08.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV08 PLA", + "name": "Generic PLA @Sovol SV08", "inherits": "Generic PLA @System", + "renamed_from": "Sovol SV08 PLA", "from": "system", - "setting_id": "nnU0222BS0F1c5ki", - "filament_id": "GFL99", + "setting_id": "4fSYcvbFXNRHnlEw", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol Zero PLA Basic.json b/resources/profiles/Sovol/filament/Generic PLA @Sovol Zero.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol Zero PLA Basic.json rename to resources/profiles/Sovol/filament/Generic PLA @Sovol Zero.json index b7fb7f63e8..131867f6b8 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PLA Basic.json +++ b/resources/profiles/Sovol/filament/Generic PLA @Sovol Zero.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol Zero PLA Basic", + "name": "Generic PLA @Sovol Zero", "inherits": "Generic PLA @System", + "renamed_from": "Sovol Zero PLA Basic", "from": "system", - "setting_id": "ZVvOaMwZ7noevsYf", - "filament_id": "GFL99", + "setting_id": "NNDerIjh7qtuh1I3", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol SV08 MAX.json index 40f10eb1ed..ac456a82ee 100644 --- a/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol SV08 MAX.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFesA6rF", "setting_id": "WAHQZmwHoS4WjoTx", "name": "Generic PLA Silk @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol Zero PLA Silk.json b/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol Zero.json similarity index 80% rename from resources/profiles/Sovol/filament/Sovol Zero PLA Silk.json rename to resources/profiles/Sovol/filament/Generic PLA Silk @Sovol Zero.json index 64c8b8a465..5b46a92d64 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PLA Silk.json +++ b/resources/profiles/Sovol/filament/Generic PLA Silk @Sovol Zero.json @@ -1,11 +1,17 @@ { "type": "filament", - "name": "Sovol Zero PLA Silk", - "inherits": "Generic PLA @System", + "name": "Generic PLA Silk @Sovol Zero", + "inherits": "Generic PLA Silk @System", + "renamed_from": "Sovol Zero PLA Silk", "from": "system", - "setting_id": "QowhGzqSwGQoAp1a", - "filament_id": "GFL99", + "setting_id": "Se2yKerHRStYtWf5", "instantiation": "true", + "filament_multitool_ramming_flow": [ + "20" + ], + "filament_retraction_length": [ + "nil" + ], "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Sovol/filament/Sovol SV06 ACE TPU.json b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 ACE.json similarity index 87% rename from resources/profiles/Sovol/filament/Sovol SV06 ACE TPU.json rename to resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 ACE.json index 3d560d9905..ba653af37d 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 ACE TPU.json +++ b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 ACE TPU", + "name": "Generic TPU @Sovol SV06 ACE", "inherits": "Generic TPU @System", + "renamed_from": "Sovol SV06 ACE TPU", "from": "system", - "setting_id": "ERN0ozxmPhIMze0i", - "filament_id": "GFL99", + "setting_id": "jBAo7stLaaQxKFsp", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE TPU.json b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 Plus ACE.json similarity index 85% rename from resources/profiles/Sovol/filament/Sovol SV06 Plus ACE TPU.json rename to resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 Plus ACE.json index 2589b13e37..9c9490b863 100644 --- a/resources/profiles/Sovol/filament/Sovol SV06 Plus ACE TPU.json +++ b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV06 Plus ACE.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV06 Plus ACE TPU", + "name": "Generic TPU @Sovol SV06 Plus ACE", "inherits": "Generic TPU @System", + "renamed_from": "Sovol SV06 Plus ACE TPU", "from": "system", - "setting_id": "oNucKLcIdxwBPpUN", - "filament_id": "GFL99", + "setting_id": "MUXz0JSHdT66Mti1", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08 MAX.json index 1c115fe8aa..a65978a50e 100644 --- a/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08 MAX.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "hQByQ7FIhAiytli8", "name": "Generic TPU @Sovol SV08 MAX", "from": "system", diff --git a/resources/profiles/Sovol/filament/Sovol SV08 TPU.json b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol SV08 TPU.json rename to resources/profiles/Sovol/filament/Generic TPU @Sovol SV08.json index a1d0cb0fdc..bf412d77d8 100644 --- a/resources/profiles/Sovol/filament/Sovol SV08 TPU.json +++ b/resources/profiles/Sovol/filament/Generic TPU @Sovol SV08.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol SV08 TPU", + "name": "Generic TPU @Sovol SV08", "inherits": "Generic TPU @System", + "renamed_from": "Sovol SV08 TPU", "from": "system", - "setting_id": "tpBbCQhcSJsBesnG", - "filament_id": "GFL99", + "setting_id": "vFPYMoNvgjn1aSKA", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol Zero TPU.json b/resources/profiles/Sovol/filament/Generic TPU @Sovol Zero.json similarity index 90% rename from resources/profiles/Sovol/filament/Sovol Zero TPU.json rename to resources/profiles/Sovol/filament/Generic TPU @Sovol Zero.json index 307a58ff01..8c7c18c523 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero TPU.json +++ b/resources/profiles/Sovol/filament/Generic TPU @Sovol Zero.json @@ -1,10 +1,10 @@ { "type": "filament", - "name": "Sovol Zero TPU", + "name": "Generic TPU @Sovol Zero", "inherits": "Generic TPU @System", + "renamed_from": "Sovol Zero TPU", "from": "system", - "setting_id": "iZHXx0RyRO096L0z", - "filament_id": "GFL99", + "setting_id": "MlY6WQ41FE8zDPSV", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Polymaker PETG @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/Polymaker PETG @Sovol SV08 MAX.json index 02b335f910..f56ca13525 100644 --- a/resources/profiles/Sovol/filament/Polymaker PETG @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/Polymaker PETG @Sovol SV08 MAX.json @@ -1,11 +1,14 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OF6H51Xx", "setting_id": "JBFKMaFtd7kO8Ksq", "name": "Polymaker PETG @Sovol SV08 MAX", "from": "system", "instantiation": "true", "inherits": "Generic PETG @System", + "filament_vendor": [ + "Polymaker" + ], "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Sovol/filament/SUNLU PETG @Sovol SV08 MAX.json b/resources/profiles/Sovol/filament/SUNLU PETG @Sovol SV08 MAX.json index 35ee5bcd03..1ff8f57fac 100644 --- a/resources/profiles/Sovol/filament/SUNLU PETG @Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/filament/SUNLU PETG @Sovol SV08 MAX.json @@ -1,11 +1,14 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OF2GCW1l", "setting_id": "x68SPQCqVacBSGd5", "name": "SUNLU PETG @Sovol SV08 MAX", "from": "system", "instantiation": "true", "inherits": "Generic PETG @System", + "filament_vendor": [ + "SUNLU" + ], "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Sovol/filament/Sovol Zero PETG HS Nozzle.json b/resources/profiles/Sovol/filament/Sovol Zero PETG HS Nozzle.json index a458307c64..ce68719ba9 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PETG HS Nozzle.json +++ b/resources/profiles/Sovol/filament/Sovol Zero PETG HS Nozzle.json @@ -4,7 +4,7 @@ "inherits": "Generic PETG @System", "from": "system", "setting_id": "AfxHmpdOkMDJa2fk", - "filament_id": "GFL99", + "filament_id": "OFymnal9", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/filament/Sovol Zero PLA Basic HS Nozzle.json b/resources/profiles/Sovol/filament/Sovol Zero PLA Basic HS Nozzle.json index f7e634386c..6dfb630e0a 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PLA Basic HS Nozzle.json +++ b/resources/profiles/Sovol/filament/Sovol Zero PLA Basic HS Nozzle.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "i9wDnSEIrOBPbOZl", - "filament_id": "GFL99", + "filament_id": "OFzB4uOs", "instantiation": "true", "filament_flow_ratio": [ "1.0348" diff --git a/resources/profiles/Sovol/filament/Sovol Zero PLA Silk HS Nozzle.json b/resources/profiles/Sovol/filament/Sovol Zero PLA Silk HS Nozzle.json index d6b31b283d..97e4050b8c 100644 --- a/resources/profiles/Sovol/filament/Sovol Zero PLA Silk HS Nozzle.json +++ b/resources/profiles/Sovol/filament/Sovol Zero PLA Silk HS Nozzle.json @@ -4,7 +4,7 @@ "inherits": "Generic PLA @System", "from": "system", "setting_id": "XxEJBNFLRltR2Xwn", - "filament_id": "GFL99", + "filament_id": "OFAO9A7J", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.2 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.2 nozzle.json index 45030c23ac..329a91b001 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.2 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.2 nozzle.json @@ -126,6 +126,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV06 ACE PLA" + "Generic PLA @Sovol SV06 ACE" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json index 9128747e51..c9f054af98 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json @@ -126,6 +126,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV06 ACE PLA" + "Generic PLA @Sovol SV06 ACE" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.6 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.6 nozzle.json index a1433ec914..e7bc84ee1a 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.6 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.6 nozzle.json @@ -126,6 +126,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV06 ACE PLA" + "Generic PLA @Sovol SV06 ACE" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.8 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.8 nozzle.json index 5415c845e2..6c555ef1d5 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.8 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.8 nozzle.json @@ -126,6 +126,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV06 ACE PLA" + "Generic PLA @Sovol SV06 ACE" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE.json index fe28ebc823..e3e0067e60 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE.json @@ -8,5 +8,5 @@ "bed_model": "sovol_sv06_ace_buildplate_model.stl", "bed_texture": "sovol_sv06_ace_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Sovol SV06 ACE PLA" + "default_materials": "Generic PLA @Sovol SV06 ACE" } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json index 440ff3c88f..5624a3c07f 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json @@ -124,6 +124,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV06 Plus ACE PLA" + "Generic PLA @Sovol SV06 Plus ACE" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE.json b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE.json index 8ec61bab90..5b034f4359 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE.json @@ -8,5 +8,5 @@ "bed_model": "sovol_sv06plus_ace_buildplate_model.stl", "bed_texture": "sovol_sv06plus_ace_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Sovol SV06 Plus ACE PLA" + "default_materials": "Generic PLA @Sovol SV06 Plus ACE" } diff --git a/resources/profiles/Sovol/machine/Sovol SV07.json b/resources/profiles/Sovol/machine/Sovol SV07.json index 2ac60556da..bd63f8d407 100644 --- a/resources/profiles/Sovol/machine/Sovol SV07.json +++ b/resources/profiles/Sovol/machine/Sovol SV07.json @@ -8,5 +8,5 @@ "bed_model": "sovol_sv07_buildplate_model.stl", "bed_texture": "sovol_sv07_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Sovol SV07 PLA" + "default_materials": "Generic PLA @Sovol SV07" } diff --git a/resources/profiles/Sovol/machine/Sovol SV08 0.2 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV08 0.2 nozzle.json index c81d26c959..441616c542 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08 0.2 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV08 0.2 nozzle.json @@ -108,6 +108,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV08 PLA @SV08 0.2 nozzle" + "Generic PLA @Sovol SV08 0.2 nozzle" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV08 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV08 0.4 nozzle.json index 5aa5e4f14b..7defca131b 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV08 0.4 nozzle.json @@ -102,6 +102,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV08 PLA" + "Generic PLA @Sovol SV08" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV08 0.6 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV08 0.6 nozzle.json index 2825fb9a83..d49594b4af 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08 0.6 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV08 0.6 nozzle.json @@ -108,6 +108,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV08 PLA" + "Generic PLA @Sovol SV08" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV08 0.8 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV08 0.8 nozzle.json index 6510857d6f..576ca16076 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08 0.8 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV08 0.8 nozzle.json @@ -108,6 +108,6 @@ "machine_end_gcode": "END_PRINT\n", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Sovol SV08 PLA" + "Generic PLA @Sovol SV08" ] } diff --git a/resources/profiles/Sovol/machine/Sovol SV08.json b/resources/profiles/Sovol/machine/Sovol SV08.json index 2d861f5ef4..c6cee44624 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08.json +++ b/resources/profiles/Sovol/machine/Sovol SV08.json @@ -8,5 +8,5 @@ "bed_model": "sovol_sv08_buildplate_model.stl", "bed_texture": "sovol_sv08_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Sovol SV08 PLA;Sovol SV08 PLA @SV08 0.2 nozzle;Sovol SV08 ABS;Sovol SV08 PETG;Sovol SV08 TPU" + "default_materials": "Generic PLA @Sovol SV08;Generic PLA @Sovol SV08 0.2 nozzle;Generic ABS @Sovol SV08;Generic PETG @Sovol SV08;Generic TPU @Sovol SV08" } diff --git a/resources/profiles/Sovol/machine/Sovol Zero 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol Zero 0.4 nozzle.json index f4ae49b7cb..a5699a9eed 100644 --- a/resources/profiles/Sovol/machine/Sovol Zero 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol Zero 0.4 nozzle.json @@ -107,6 +107,6 @@ "machine_start_gcode": "M140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\nG28\nSTART_PRINT\nG28\nG90\nG1 X0 Y0 F12000\nG1 Z0.300 F600\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nM109 S[nozzle_temperature_initial_layer];wait for extruder temp\n{if first_layer_print_min[1] - 6 > print_bed_min[1]}\nG90\nM83\nG1 E-0.5 F600\nG1 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4} Y{first_layer_print_min[1] - 5} F12000\nG0 Z0.3 F600 ;Move to start position\nG1 E0.200 F600\n{if first_layer_print_max[0] - first_layer_print_min[0] > 50}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*1} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*2} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*3} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*4} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*5} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*6} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*7} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*8} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*9} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*10} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n{else}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 2} E{(first_layer_print_max[0] - first_layer_print_min[0]) / 2 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0])} E{(first_layer_print_max[0] - first_layer_print_min[0]) / 2 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n{endif}\nG1 E-0.300 F600\nG0 Z1 F600\nG1 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4} Y{first_layer_print_min[1] - 4} F12000\nG0 Z0.3 F600 ;Move to start position\nG1 E0.200 F600\n{if first_layer_print_max[0] - first_layer_print_min[0] > 50}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*1} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*2} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*3} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*4} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*5} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*6} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*7} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*8} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*9} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 4 + 5*10} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n{else}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0]) / 2} E{(first_layer_print_max[0] - first_layer_print_min[0]) / 2 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X{first_layer_print_min[0] + (first_layer_print_max[0] - first_layer_print_min[0])} E{(first_layer_print_max[0] - first_layer_print_min[0]) / 2 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n{endif}\nG1 E-0.300 F600\nG0 Z5 F600\nM400\n{else}\nG90\nM83\nG1 E-0.300 Z3 F600\nG1 X{print_bed_max[1] / 3} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 Z0.3 F600\nG1 E0.300 F600\nG1 X{print_bed_max[1] / 3 + 5*1} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*2} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*3} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*4} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*5} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*6} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*7} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*8} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*9} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*10} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3} Y1 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*1} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*2} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*3} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*4} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*5} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*6} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*7} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*8} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X{print_bed_max[1] / 3 + 5*9} E{5 * 0.2} F{outer_wall_volumetric_speed/(24/20) * 60}\nG1 X{print_bed_max[1] / 3 + 5*10} E{5 * 0.2} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 E-0.300 Z3 F600\nM400\n{endif}\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n\n", "machine_end_gcode": "END_PRINT\n", "default_filament_profile": [ - "Sovol Zero PLA Basic" + "Generic PLA @Sovol Zero" ] } diff --git a/resources/profiles/Sovol/machine/Sovol Zero.json b/resources/profiles/Sovol/machine/Sovol Zero.json index c1ccc64b84..6f99e8f8d0 100644 --- a/resources/profiles/Sovol/machine/Sovol Zero.json +++ b/resources/profiles/Sovol/machine/Sovol Zero.json @@ -8,5 +8,5 @@ "bed_model": "sovol_zero_buildplate_model.stl", "bed_texture": "sovol_zero_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Sovol Zero PLA Basic;Sovol Zero PLA Basic HS Nozzle;Sovol Zero PLA Silk;Sovol Zero PLA Silk HS Nozzle;Sovol Zero ABS;Sovol Zero PETG;Sovol Zero PETG HS Nozzle;Sovol Zero TPU;Sovol Zero PC" + "default_materials": "Generic PLA @Sovol Zero;Sovol Zero PLA Basic HS Nozzle;Generic PLA Silk @Sovol Zero;Sovol Zero PLA Silk HS Nozzle;Generic ABS @Sovol Zero;Generic PETG @Sovol Zero;Sovol Zero PETG HS Nozzle;Generic TPU @Sovol Zero;Generic PC @Sovol Zero" } diff --git a/resources/profiles/Tiertime.json b/resources/profiles/Tiertime.json index 0742e8bce6..8134d621df 100644 --- a/resources/profiles/Tiertime.json +++ b/resources/profiles/Tiertime.json @@ -1,6 +1,6 @@ { "name": "Tiertime", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Tiertime configurations", "machine_model_list": [ @@ -369,12 +369,12 @@ "sub_path": "filament/Tiertime ABS@300HS.json" }, { - "name": "Tiertime Generic ABS", - "sub_path": "filament/Tiertime Generic ABS.json" + "name": "Generic ABS @Tiertime", + "sub_path": "filament/Generic ABS @Tiertime.json" }, { - "name": "Tiertime Generic ABS@300HS", - "sub_path": "filament/Tiertime Generic ABS@300HS.json" + "name": "Generic ABS @Tiertime 300HS", + "sub_path": "filament/Generic ABS @Tiertime 300HS.json" }, { "name": "Tiertime ASA", @@ -385,52 +385,52 @@ "sub_path": "filament/Tiertime ASA@300HS.json" }, { - "name": "Tiertime Generic ASA", - "sub_path": "filament/Tiertime Generic ASA.json" + "name": "Generic ASA @Tiertime", + "sub_path": "filament/Generic ASA @Tiertime.json" }, { - "name": "Tiertime Generic ASA@300HS", - "sub_path": "filament/Tiertime Generic ASA@300HS.json" + "name": "Generic ASA @Tiertime 300HS", + "sub_path": "filament/Generic ASA @Tiertime 300HS.json" }, { - "name": "Tiertime Generic BVOH", - "sub_path": "filament/Tiertime Generic BVOH.json" + "name": "Generic BVOH @Tiertime", + "sub_path": "filament/Generic BVOH @Tiertime.json" }, { - "name": "Tiertime Generic BVOH@300HS", - "sub_path": "filament/Tiertime Generic BVOH@300HS.json" + "name": "Generic BVOH @Tiertime 300HS", + "sub_path": "filament/Generic BVOH @Tiertime 300HS.json" }, { - "name": "Tiertime Generic EVA", - "sub_path": "filament/Tiertime Generic EVA.json" + "name": "Generic EVA @Tiertime", + "sub_path": "filament/Generic EVA @Tiertime.json" }, { - "name": "Tiertime Generic EVA@300HS", - "sub_path": "filament/Tiertime Generic EVA@300HS.json" + "name": "Generic EVA @Tiertime 300HS", + "sub_path": "filament/Generic EVA @Tiertime 300HS.json" }, { - "name": "Tiertime Generic HIPS", - "sub_path": "filament/Tiertime Generic HIPS.json" + "name": "Generic HIPS @Tiertime", + "sub_path": "filament/Generic HIPS @Tiertime.json" }, { - "name": "Tiertime Generic HIPS@300HS", - "sub_path": "filament/Tiertime Generic HIPS@300HS.json" + "name": "Generic HIPS @Tiertime 300HS", + "sub_path": "filament/Generic HIPS @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PA", - "sub_path": "filament/Tiertime Generic PA.json" + "name": "Generic PA @Tiertime", + "sub_path": "filament/Generic PA @Tiertime.json" }, { - "name": "Tiertime Generic PA-CF", - "sub_path": "filament/Tiertime Generic PA-CF.json" + "name": "Generic PA-CF @Tiertime", + "sub_path": "filament/Generic PA-CF @Tiertime.json" }, { - "name": "Tiertime Generic PA-CF@300HS", - "sub_path": "filament/Tiertime Generic PA-CF@300HS.json" + "name": "Generic PA-CF @Tiertime 300HS", + "sub_path": "filament/Generic PA-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PA@300HS", - "sub_path": "filament/Tiertime Generic PA@300HS.json" + "name": "Generic PA @Tiertime 300HS", + "sub_path": "filament/Generic PA @Tiertime 300HS.json" }, { "name": "Tiertime PA6-CF", @@ -441,12 +441,12 @@ "sub_path": "filament/Tiertime PA6-CF@300HS.json" }, { - "name": "Tiertime Generic PC", - "sub_path": "filament/Tiertime Generic PC.json" + "name": "Generic PC @Tiertime", + "sub_path": "filament/Generic PC @Tiertime.json" }, { - "name": "Tiertime Generic PC@300HS", - "sub_path": "filament/Tiertime Generic PC@300HS.json" + "name": "Generic PC @Tiertime 300HS", + "sub_path": "filament/Generic PC @Tiertime 300HS.json" }, { "name": "Tiertime PC", @@ -457,44 +457,44 @@ "sub_path": "filament/Tiertime PC@300HS.json" }, { - "name": "Tiertime Generic PCTG", - "sub_path": "filament/Tiertime Generic PCTG.json" + "name": "Generic PCTG @Tiertime", + "sub_path": "filament/Generic PCTG @Tiertime.json" }, { - "name": "Tiertime Generic PCTG@300HS", - "sub_path": "filament/Tiertime Generic PCTG@300HS.json" + "name": "Generic PCTG @Tiertime 300HS", + "sub_path": "filament/Generic PCTG @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PE", - "sub_path": "filament/Tiertime Generic PE.json" + "name": "Generic PE @Tiertime", + "sub_path": "filament/Generic PE @Tiertime.json" }, { - "name": "Tiertime Generic PE-CF", - "sub_path": "filament/Tiertime Generic PE-CF.json" + "name": "Generic PE-CF @Tiertime", + "sub_path": "filament/Generic PE-CF @Tiertime.json" }, { - "name": "Tiertime Generic PE-CF@300HS", - "sub_path": "filament/Tiertime Generic PE-CF@300HS.json" + "name": "Generic PE-CF @Tiertime 300HS", + "sub_path": "filament/Generic PE-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PE@300HS", - "sub_path": "filament/Tiertime Generic PE@300HS.json" + "name": "Generic PE @Tiertime 300HS", + "sub_path": "filament/Generic PE @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PETG", - "sub_path": "filament/Tiertime Generic PETG.json" + "name": "Generic PETG @Tiertime", + "sub_path": "filament/Generic PETG @Tiertime.json" }, { - "name": "Tiertime Generic PETG-CF", - "sub_path": "filament/Tiertime Generic PETG-CF.json" + "name": "Generic PETG-CF @Tiertime", + "sub_path": "filament/Generic PETG-CF @Tiertime.json" }, { - "name": "Tiertime Generic PETG-CF@300HS", - "sub_path": "filament/Tiertime Generic PETG-CF@300HS.json" + "name": "Generic PETG-CF @Tiertime 300HS", + "sub_path": "filament/Generic PETG-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PETG@300HS", - "sub_path": "filament/Tiertime Generic PETG@300HS.json" + "name": "Generic PETG @Tiertime 300HS", + "sub_path": "filament/Generic PETG @Tiertime 300HS.json" }, { "name": "Tiertime PET-CF", @@ -513,44 +513,44 @@ "sub_path": "filament/Tiertime PETG@300HS.json" }, { - "name": "Tiertime Generic PHA", - "sub_path": "filament/Tiertime Generic PHA.json" + "name": "Generic PHA @Tiertime", + "sub_path": "filament/Generic PHA @Tiertime.json" }, { - "name": "Tiertime Generic PHA@300HS", - "sub_path": "filament/Tiertime Generic PHA@300HS.json" + "name": "Generic PHA @Tiertime 300HS", + "sub_path": "filament/Generic PHA @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PLA", - "sub_path": "filament/Tiertime Generic PLA.json" + "name": "Generic PLA @Tiertime", + "sub_path": "filament/Generic PLA @Tiertime.json" }, { - "name": "Tiertime Generic PLA High Speed", - "sub_path": "filament/Tiertime Generic PLA High Speed.json" + "name": "Generic PLA High Speed @Tiertime", + "sub_path": "filament/Generic PLA High Speed @Tiertime.json" }, { - "name": "Tiertime Generic PLA High Speed@300HS", - "sub_path": "filament/Tiertime Generic PLA High Speed@300HS.json" + "name": "Generic PLA High Speed @Tiertime 300HS", + "sub_path": "filament/Generic PLA High Speed @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PLA Silk", - "sub_path": "filament/Tiertime Generic PLA Silk.json" + "name": "Generic PLA Silk @Tiertime", + "sub_path": "filament/Generic PLA Silk @Tiertime.json" }, { - "name": "Tiertime Generic PLA Silk@300HS", - "sub_path": "filament/Tiertime Generic PLA Silk@300HS.json" + "name": "Generic PLA Silk @Tiertime 300HS", + "sub_path": "filament/Generic PLA Silk @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PLA-CF", - "sub_path": "filament/Tiertime Generic PLA-CF.json" + "name": "Generic PLA-CF @Tiertime", + "sub_path": "filament/Generic PLA-CF @Tiertime.json" }, { - "name": "Tiertime Generic PLA-CF@300HS", - "sub_path": "filament/Tiertime Generic PLA-CF@300HS.json" + "name": "Generic PLA-CF @Tiertime 300HS", + "sub_path": "filament/Generic PLA-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PLA@300HS", - "sub_path": "filament/Tiertime Generic PLA@300HS.json" + "name": "Generic PLA @Tiertime 300HS", + "sub_path": "filament/Generic PLA @Tiertime 300HS.json" }, { "name": "Tiertime PLA", @@ -569,68 +569,68 @@ "sub_path": "filament/Tiertime PLA@300HS.json" }, { - "name": "Tiertime Generic PP", - "sub_path": "filament/Tiertime Generic PP.json" + "name": "Generic PP @Tiertime", + "sub_path": "filament/Generic PP @Tiertime.json" }, { - "name": "Tiertime Generic PP-CF", - "sub_path": "filament/Tiertime Generic PP-CF.json" + "name": "Generic PP-CF @Tiertime", + "sub_path": "filament/Generic PP-CF @Tiertime.json" }, { - "name": "Tiertime Generic PP-CF@300HS", - "sub_path": "filament/Tiertime Generic PP-CF@300HS.json" + "name": "Generic PP-CF @Tiertime 300HS", + "sub_path": "filament/Generic PP-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PP-GF", - "sub_path": "filament/Tiertime Generic PP-GF.json" + "name": "Generic PP-GF @Tiertime", + "sub_path": "filament/Generic PP-GF @Tiertime.json" }, { - "name": "Tiertime Generic PP-GF@300HS", - "sub_path": "filament/Tiertime Generic PP-GF@300HS.json" + "name": "Generic PP-GF @Tiertime 300HS", + "sub_path": "filament/Generic PP-GF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PP@300HS", - "sub_path": "filament/Tiertime Generic PP@300HS.json" + "name": "Generic PP @Tiertime 300HS", + "sub_path": "filament/Generic PP @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PPA-CF", - "sub_path": "filament/Tiertime Generic PPA-CF.json" + "name": "Generic PPA-CF @Tiertime", + "sub_path": "filament/Generic PPA-CF @Tiertime.json" }, { - "name": "Tiertime Generic PPA-CF@300HS", - "sub_path": "filament/Tiertime Generic PPA-CF@300HS.json" + "name": "Generic PPA-CF @Tiertime 300HS", + "sub_path": "filament/Generic PPA-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PPA-GF", - "sub_path": "filament/Tiertime Generic PPA-GF.json" + "name": "Generic PPA-GF @Tiertime", + "sub_path": "filament/Generic PPA-GF @Tiertime.json" }, { - "name": "Tiertime Generic PPA-GF@300HS", - "sub_path": "filament/Tiertime Generic PPA-GF@300HS.json" + "name": "Generic PPA-GF @Tiertime 300HS", + "sub_path": "filament/Generic PPA-GF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PPS", - "sub_path": "filament/Tiertime Generic PPS.json" + "name": "Generic PPS @Tiertime", + "sub_path": "filament/Generic PPS @Tiertime.json" }, { - "name": "Tiertime Generic PPS-CF", - "sub_path": "filament/Tiertime Generic PPS-CF.json" + "name": "Generic PPS-CF @Tiertime", + "sub_path": "filament/Generic PPS-CF @Tiertime.json" }, { - "name": "Tiertime Generic PPS-CF@300HS", - "sub_path": "filament/Tiertime Generic PPS-CF@300HS.json" + "name": "Generic PPS-CF @Tiertime 300HS", + "sub_path": "filament/Generic PPS-CF @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PPS@300HS", - "sub_path": "filament/Tiertime Generic PPS@300HS.json" + "name": "Generic PPS @Tiertime 300HS", + "sub_path": "filament/Generic PPS @Tiertime 300HS.json" }, { - "name": "Tiertime Generic PVA", - "sub_path": "filament/Tiertime Generic PVA.json" + "name": "Generic PVA @Tiertime", + "sub_path": "filament/Generic PVA @Tiertime.json" }, { - "name": "Tiertime Generic PVA@300HS", - "sub_path": "filament/Tiertime Generic PVA@300HS.json" + "name": "Generic PVA @Tiertime 300HS", + "sub_path": "filament/Generic PVA @Tiertime 300HS.json" }, { "name": "Tiertime PVA", @@ -641,20 +641,20 @@ "sub_path": "filament/Tiertime PVA@300HS.json" }, { - "name": "Tiertime Generic SBS", - "sub_path": "filament/Tiertime Generic SBS.json" + "name": "Generic SBS @Tiertime", + "sub_path": "filament/Generic SBS @Tiertime.json" }, { - "name": "Tiertime Generic SBS@300HS", - "sub_path": "filament/Tiertime Generic SBS@300HS.json" + "name": "Generic SBS @Tiertime 300HS", + "sub_path": "filament/Generic SBS @Tiertime 300HS.json" }, { - "name": "Tiertime Generic TPU", - "sub_path": "filament/Tiertime Generic TPU.json" + "name": "Generic TPU @Tiertime", + "sub_path": "filament/Generic TPU @Tiertime.json" }, { - "name": "Tiertime Generic TPU@300HS", - "sub_path": "filament/Tiertime Generic TPU@300HS.json" + "name": "Generic TPU @Tiertime 300HS", + "sub_path": "filament/Generic TPU @Tiertime 300HS.json" }, { "name": "Tiertime TPU 95A", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic ABS@300HS.json b/resources/profiles/Tiertime/filament/Generic ABS @Tiertime 300HS.json similarity index 77% rename from resources/profiles/Tiertime/filament/Tiertime Generic ABS@300HS.json rename to resources/profiles/Tiertime/filament/Generic ABS @Tiertime 300HS.json index 6e3d41f5fc..e9d7aca6fc 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic ABS@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic ABS @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic ABS@300HS", + "name": "Generic ABS @Tiertime 300HS", "inherits": "fdm_filament_abs", + "renamed_from": "Tiertime Generic ABS@300HS;Tiertime Generic ABS300HS", "from": "system", - "setting_id": "tCw1f7MxFjxPr7Ci", - "filament_id": "GFB99_01", + "setting_id": "CDku986CRCZQpwu4", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic ABS.json b/resources/profiles/Tiertime/filament/Generic ABS @Tiertime.json similarity index 81% rename from resources/profiles/Tiertime/filament/Tiertime Generic ABS.json rename to resources/profiles/Tiertime/filament/Generic ABS @Tiertime.json index 4319a9cd58..7e8f606a6e 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic ABS.json +++ b/resources/profiles/Tiertime/filament/Generic ABS @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic ABS", + "name": "Generic ABS @Tiertime", "inherits": "fdm_filament_abs", + "renamed_from": "Tiertime Generic ABS", "from": "system", - "setting_id": "ImJ3Urgk3VVtwceI", - "filament_id": "GFB99", + "setting_id": "mDRlI9biZBn9sNlS", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic ASA@300HS.json b/resources/profiles/Tiertime/filament/Generic ASA @Tiertime 300HS.json similarity index 74% rename from resources/profiles/Tiertime/filament/Tiertime Generic ASA@300HS.json rename to resources/profiles/Tiertime/filament/Generic ASA @Tiertime 300HS.json index 062cf8e345..adffa21725 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic ASA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic ASA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic ASA@300HS", + "name": "Generic ASA @Tiertime 300HS", "inherits": "fdm_filament_asa", + "renamed_from": "Tiertime Generic ASA@300HS;Tiertime Generic ASA300HS", "from": "system", - "setting_id": "7C5PjCg1vmTQFXWO", - "filament_id": "GFB98_01", + "setting_id": "HLh2XxQuVOa86efy", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic ASA.json b/resources/profiles/Tiertime/filament/Generic ASA @Tiertime.json similarity index 79% rename from resources/profiles/Tiertime/filament/Tiertime Generic ASA.json rename to resources/profiles/Tiertime/filament/Generic ASA @Tiertime.json index 4280c28c4d..1529e0f702 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic ASA.json +++ b/resources/profiles/Tiertime/filament/Generic ASA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic ASA", + "name": "Generic ASA @Tiertime", "inherits": "fdm_filament_asa", + "renamed_from": "Tiertime Generic ASA", "from": "system", - "setting_id": "T1AzUXSewNk5Bj3x", - "filament_id": "GFB98", + "setting_id": "kGrTR0sC37w9Qi3b", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic BVOH@300HS.json b/resources/profiles/Tiertime/filament/Generic BVOH @Tiertime 300HS.json similarity index 59% rename from resources/profiles/Tiertime/filament/Tiertime Generic BVOH@300HS.json rename to resources/profiles/Tiertime/filament/Generic BVOH @Tiertime 300HS.json index abe8d42643..9db52386cb 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic BVOH@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic BVOH @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic BVOH@300HS", + "name": "Generic BVOH @Tiertime 300HS", "inherits": "fdm_filament_bvoh", + "renamed_from": "Tiertime Generic BVOH@300HS;Tiertime Generic BVOH300HS", "from": "system", - "setting_id": "xfFXVyGfmXiu508N", - "filament_id": "GFS97_01", + "setting_id": "aCtg07TUbh6I9XPo", + "filament_id": "OFo2UF2C", "instantiation": "true", "compatible_printers": [ "Tiertime UP300 HS 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic BVOH.json b/resources/profiles/Tiertime/filament/Generic BVOH @Tiertime.json similarity index 66% rename from resources/profiles/Tiertime/filament/Tiertime Generic BVOH.json rename to resources/profiles/Tiertime/filament/Generic BVOH @Tiertime.json index a02176c07d..fd6e2a529f 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic BVOH.json +++ b/resources/profiles/Tiertime/filament/Generic BVOH @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic BVOH", + "name": "Generic BVOH @Tiertime", "inherits": "fdm_filament_bvoh", + "renamed_from": "Tiertime Generic BVOH", "from": "system", - "setting_id": "dhrpnirMnet0hJZl", - "filament_id": "GFS97", + "setting_id": "b642QISGuDZ18fQ8", + "filament_id": "OFo2UF2C", "instantiation": "true", "compatible_printers": [ "Tiertime UP400 Pro 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic EVA@300HS.json b/resources/profiles/Tiertime/filament/Generic EVA @Tiertime 300HS.json similarity index 91% rename from resources/profiles/Tiertime/filament/Tiertime Generic EVA@300HS.json rename to resources/profiles/Tiertime/filament/Generic EVA @Tiertime 300HS.json index 14ea1b88d1..f066563e4c 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic EVA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic EVA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic EVA@300HS", + "name": "Generic EVA @Tiertime 300HS", "inherits": "fdm_filament_eva", + "renamed_from": "Tiertime Generic EVA@300HS;Tiertime Generic EVA300HS", "from": "system", - "setting_id": "pXuh92Zf1zPiaDXg", - "filament_id": "GFR99_01", + "setting_id": "q5f3UKuj7KOtiNkH", + "filament_id": "OFCD8qiU", "instantiation": "true", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic EVA.json b/resources/profiles/Tiertime/filament/Generic EVA @Tiertime.json similarity index 93% rename from resources/profiles/Tiertime/filament/Tiertime Generic EVA.json rename to resources/profiles/Tiertime/filament/Generic EVA @Tiertime.json index e0683c378d..ec49722cae 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic EVA.json +++ b/resources/profiles/Tiertime/filament/Generic EVA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic EVA", + "name": "Generic EVA @Tiertime", "inherits": "fdm_filament_eva", + "renamed_from": "Tiertime Generic EVA", "from": "system", - "setting_id": "ev5w69eBuTCYXB2d", - "filament_id": "GFR99", + "setting_id": "NTY4MeZtxt16HNAV", + "filament_id": "OFCD8qiU", "instantiation": "true", "additional_cooling_fan_speed": [ "70" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic HIPS@300HS.json b/resources/profiles/Tiertime/filament/Generic HIPS @Tiertime 300HS.json similarity index 62% rename from resources/profiles/Tiertime/filament/Tiertime Generic HIPS@300HS.json rename to resources/profiles/Tiertime/filament/Generic HIPS @Tiertime 300HS.json index 234412a67d..8eaa300930 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic HIPS@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic HIPS @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic HIPS@300HS", + "name": "Generic HIPS @Tiertime 300HS", "inherits": "fdm_filament_hips", + "renamed_from": "Tiertime Generic HIPS@300HS;Tiertime Generic HIPS300HS", "from": "system", - "setting_id": "9epHDviPNHRB5bPD", - "filament_id": "GFS98_01", + "setting_id": "ee157A7VEkDzMh61", + "filament_id": "OFsFon5l", "instantiation": "true", "filament_is_support": [ "1" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic HIPS.json b/resources/profiles/Tiertime/filament/Generic HIPS @Tiertime.json similarity index 68% rename from resources/profiles/Tiertime/filament/Tiertime Generic HIPS.json rename to resources/profiles/Tiertime/filament/Generic HIPS @Tiertime.json index 213181630b..519e690ed6 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic HIPS.json +++ b/resources/profiles/Tiertime/filament/Generic HIPS @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic HIPS", + "name": "Generic HIPS @Tiertime", "inherits": "fdm_filament_hips", + "renamed_from": "Tiertime Generic HIPS", "from": "system", - "setting_id": "sFY2AyXFzAFuj6sv", - "filament_id": "GFS98", + "setting_id": "3Vm99hmTMTFPKNGk", + "filament_id": "OFsFon5l", "instantiation": "true", "filament_is_support": [ "1" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PA@300HS.json b/resources/profiles/Tiertime/filament/Generic PA @Tiertime 300HS.json similarity index 82% rename from resources/profiles/Tiertime/filament/Tiertime Generic PA@300HS.json rename to resources/profiles/Tiertime/filament/Generic PA @Tiertime 300HS.json index 131ea71f3c..3c97aa11a7 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PA@300HS", + "name": "Generic PA @Tiertime 300HS", "inherits": "fdm_filament_pa", + "renamed_from": "Tiertime Generic PA@300HS;Tiertime Generic PA300HS", "from": "system", - "filament_id": "GFN99_01", - "setting_id": "ERn1WYMiSjs6a82N", + "filament_id": "OFg8ndtj", + "setting_id": "yGD1puWjH2QFacXJ", "instantiation": "true", "chamber_temperatures": [ "60" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PA.json b/resources/profiles/Tiertime/filament/Generic PA @Tiertime.json similarity index 85% rename from resources/profiles/Tiertime/filament/Tiertime Generic PA.json rename to resources/profiles/Tiertime/filament/Generic PA @Tiertime.json index b5fbdf1bcc..1ff338b317 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PA.json +++ b/resources/profiles/Tiertime/filament/Generic PA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PA", + "name": "Generic PA @Tiertime", "inherits": "fdm_filament_pa", + "renamed_from": "Tiertime Generic PA", "from": "system", - "filament_id": "GFN99", - "setting_id": "DmP33sDwKcBDRmDK", + "filament_id": "OFg8ndtj", + "setting_id": "u37BwUzY2vt6zqjd", "instantiation": "true", "chamber_temperatures": [ "60" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PA-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime 300HS.json similarity index 75% rename from resources/profiles/Tiertime/filament/Tiertime Generic PA-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime 300HS.json index bd618a1f83..3feade702d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PA-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PA-CF@300HS", + "name": "Generic PA-CF @Tiertime 300HS", "inherits": "fdm_filament_pa", + "renamed_from": "Tiertime Generic PA-CF@300HS;Tiertime Generic PA-CF300HS", "from": "system", - "filament_id": "GFN98_02", - "setting_id": "nRxvUKo1YXE8daoX", + "filament_id": "OFQLcbps", + "setting_id": "nZprcLHiLIAKvqtu", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PA-CF.json b/resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime.json similarity index 79% rename from resources/profiles/Tiertime/filament/Tiertime Generic PA-CF.json rename to resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime.json index 4e04b050cf..fe57cb7806 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PA-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PA-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PA-CF", + "name": "Generic PA-CF @Tiertime", "inherits": "fdm_filament_pa", + "renamed_from": "Tiertime Generic PA-CF", "from": "system", - "filament_id": "GFN98", - "setting_id": "DOWYicvaXaTMfzBU", + "filament_id": "OFQLcbps", + "setting_id": "1oq9XQtCUcV9wGYV", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PC@300HS.json b/resources/profiles/Tiertime/filament/Generic PC @Tiertime 300HS.json similarity index 67% rename from resources/profiles/Tiertime/filament/Tiertime Generic PC@300HS.json rename to resources/profiles/Tiertime/filament/Generic PC @Tiertime 300HS.json index 6b919af688..591d1c9208 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PC@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PC @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PC@300HS", + "name": "Generic PC @Tiertime 300HS", "inherits": "fdm_filament_pc", + "renamed_from": "Tiertime Generic PC@300HS;Tiertime Generic PC300HS", "from": "system", - "setting_id": "i2ShskYbiq61UJ1B", - "filament_id": "GFC99_01", + "setting_id": "cqm5YuWHhzXdvE0M", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "16" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PC.json b/resources/profiles/Tiertime/filament/Generic PC @Tiertime.json similarity index 72% rename from resources/profiles/Tiertime/filament/Tiertime Generic PC.json rename to resources/profiles/Tiertime/filament/Generic PC @Tiertime.json index 4044d45fe3..8c36c18828 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PC.json +++ b/resources/profiles/Tiertime/filament/Generic PC @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PC", + "name": "Generic PC @Tiertime", "inherits": "fdm_filament_pc", + "renamed_from": "Tiertime Generic PC", "from": "system", - "setting_id": "5wzlA0sFj2xElixU", - "filament_id": "GFC99", + "setting_id": "ILOqHUkf5W9fcRic", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "16" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PCTG@300HS.json b/resources/profiles/Tiertime/filament/Generic PCTG @Tiertime 300HS.json similarity index 89% rename from resources/profiles/Tiertime/filament/Tiertime Generic PCTG@300HS.json rename to resources/profiles/Tiertime/filament/Generic PCTG @Tiertime 300HS.json index 10b87ef227..25eb1b1b76 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PCTG@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PCTG @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PCTG@300HS", + "name": "Generic PCTG @Tiertime 300HS", "inherits": "fdm_filament_pctg", + "renamed_from": "Tiertime Generic PCTG@300HS;Tiertime Generic PCTG300HS", "from": "system", - "setting_id": "2Qbbi90zWBoo9dBl", - "filament_id": "GFG97-01", + "setting_id": "1VNFGuUO3KSO6Yfr", + "filament_id": "OFu1evlr", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PCTG.json b/resources/profiles/Tiertime/filament/Generic PCTG @Tiertime.json similarity index 91% rename from resources/profiles/Tiertime/filament/Tiertime Generic PCTG.json rename to resources/profiles/Tiertime/filament/Generic PCTG @Tiertime.json index 2e4dc2d036..4d091cde32 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PCTG.json +++ b/resources/profiles/Tiertime/filament/Generic PCTG @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PCTG", + "name": "Generic PCTG @Tiertime", "inherits": "fdm_filament_pctg", + "renamed_from": "Tiertime Generic PCTG", "from": "system", - "setting_id": "UDqS8gFlHvPIysFk", - "filament_id": "GFG97", + "setting_id": "tJIMGMxg0hRSfL95", + "filament_id": "OFu1evlr", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PE@300HS.json b/resources/profiles/Tiertime/filament/Generic PE @Tiertime 300HS.json similarity index 87% rename from resources/profiles/Tiertime/filament/Tiertime Generic PE@300HS.json rename to resources/profiles/Tiertime/filament/Generic PE @Tiertime 300HS.json index 7ebf4377fe..a1fa9c5859 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PE@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PE @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PE@300HS", + "name": "Generic PE @Tiertime 300HS", "inherits": "fdm_filament_pe", + "renamed_from": "Tiertime Generic PE@300HS;Tiertime Generic PE300HS", "from": "system", - "setting_id": "ZbU3Ov0P5wtbudQ0", - "filament_id": "GFP99_01", + "setting_id": "CO9KWZrfkTYBnB4X", + "filament_id": "OFPklMI1", "instantiation": "true", "filament_cost": [ "40.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PE.json b/resources/profiles/Tiertime/filament/Generic PE @Tiertime.json similarity index 89% rename from resources/profiles/Tiertime/filament/Tiertime Generic PE.json rename to resources/profiles/Tiertime/filament/Generic PE @Tiertime.json index 16b9244f12..0684af67d8 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PE.json +++ b/resources/profiles/Tiertime/filament/Generic PE @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PE", + "name": "Generic PE @Tiertime", "inherits": "fdm_filament_pe", + "renamed_from": "Tiertime Generic PE", "from": "system", - "setting_id": "bYC8MPsm3VIgwaSt", - "filament_id": "GFP99", + "setting_id": "2U06Qrlxin8nLr9s", + "filament_id": "OFPklMI1", "instantiation": "true", "filament_cost": [ "40.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PE-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime 300HS.json similarity index 86% rename from resources/profiles/Tiertime/filament/Tiertime Generic PE-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime 300HS.json index 81b096e4b2..11a6680550 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PE-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PE-CF@300HS", + "name": "Generic PE-CF @Tiertime 300HS", "inherits": "fdm_filament_pe", + "renamed_from": "Tiertime Generic PE-CF@300HS;Tiertime Generic PE-CF300HS", "from": "system", - "setting_id": "5ChSjqNjRn8QArJP", - "filament_id": "GFP98_01", + "setting_id": "512vfRIxs8uwOBpP", + "filament_id": "OFd0Fv0k", "instantiation": "true", "filament_cost": [ "65.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PE-CF.json b/resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime.json similarity index 89% rename from resources/profiles/Tiertime/filament/Tiertime Generic PE-CF.json rename to resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime.json index 1cd9a569e6..ecc5a74d8c 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PE-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PE-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PE-CF", + "name": "Generic PE-CF @Tiertime", "inherits": "fdm_filament_pe", + "renamed_from": "Tiertime Generic PE-CF", "from": "system", - "setting_id": "jzT1pay155tbaY9M", - "filament_id": "GFP98", + "setting_id": "QWIMNxCCZ9URxMjo", + "filament_id": "OFd0Fv0k", "instantiation": "true", "filament_cost": [ "65.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PETG@300HS.json b/resources/profiles/Tiertime/filament/Generic PETG @Tiertime 300HS.json similarity index 88% rename from resources/profiles/Tiertime/filament/Tiertime Generic PETG@300HS.json rename to resources/profiles/Tiertime/filament/Generic PETG @Tiertime 300HS.json index cfec6ee335..e65d53bc71 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PETG@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PETG @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PETG@300HS", + "name": "Generic PETG @Tiertime 300HS", "inherits": "fdm_filament_pet", + "renamed_from": "Tiertime Generic PETG@300HS;Tiertime Generic PETG300HS", "from": "system", - "setting_id": "ZZmmVicb1p0wb5r1", - "filament_id": "GFG99_01", + "setting_id": "btlSAAZFdFgnfIqh", + "filament_id": "OFYPdQJh", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PETG.json b/resources/profiles/Tiertime/filament/Generic PETG @Tiertime.json similarity index 91% rename from resources/profiles/Tiertime/filament/Tiertime Generic PETG.json rename to resources/profiles/Tiertime/filament/Generic PETG @Tiertime.json index e261373c3d..cdf4a2ba88 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PETG.json +++ b/resources/profiles/Tiertime/filament/Generic PETG @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PETG", + "name": "Generic PETG @Tiertime", "inherits": "fdm_filament_pet", + "renamed_from": "Tiertime Generic PETG", "from": "system", - "setting_id": "UevLlG43knAdcET2", - "filament_id": "GFG99", + "setting_id": "JwdH78YQ3v5XxsIq", + "filament_id": "OFYPdQJh", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime 300HS.json similarity index 89% rename from resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime 300HS.json index 04f803a53e..2193ee85fe 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PETG-CF@300HS", + "name": "Generic PETG-CF @Tiertime 300HS", "inherits": "fdm_filament_pet", + "renamed_from": "Tiertime Generic PETG-CF@300HS;Tiertime Generic PETG-CF300HS", "from": "system", - "setting_id": "jBUy8xUDg53e51kz", - "filament_id": "GFG98_01", + "setting_id": "pnBek08LG30iqOmr", + "filament_id": "OFoYSJKi", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF.json b/resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime.json similarity index 91% rename from resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF.json rename to resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime.json index c3907360a9..42b67f2c6d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PETG-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PETG-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PETG-CF", + "name": "Generic PETG-CF @Tiertime", "inherits": "fdm_filament_pet", + "renamed_from": "Tiertime Generic PETG-CF", "from": "system", - "setting_id": "zA6nHgNkxBxGKw0w", - "filament_id": "GFG98", + "setting_id": "97ZKNZS7uHaNzgLJ", + "filament_id": "OFoYSJKi", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PHA@300HS.json b/resources/profiles/Tiertime/filament/Generic PHA @Tiertime 300HS.json similarity index 60% rename from resources/profiles/Tiertime/filament/Tiertime Generic PHA@300HS.json rename to resources/profiles/Tiertime/filament/Generic PHA @Tiertime 300HS.json index e6e0475805..d7d10eedfc 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PHA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PHA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PHA@300HS", + "name": "Generic PHA @Tiertime 300HS", "inherits": "fdm_filament_pha", + "renamed_from": "Tiertime Generic PHA@300HS;Tiertime Generic PHA300HS", "from": "system", - "setting_id": "de5eveMr3bI3OCtF", - "filament_id": "GFR98_01", + "setting_id": "cdIDNHr9YR5p1gQx", + "filament_id": "OF74KeQR", "instantiation": "true", "compatible_printers": [ "Tiertime UP300 HS 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PHA.json b/resources/profiles/Tiertime/filament/Generic PHA @Tiertime.json similarity index 66% rename from resources/profiles/Tiertime/filament/Tiertime Generic PHA.json rename to resources/profiles/Tiertime/filament/Generic PHA @Tiertime.json index f2be140f37..f0565e38a2 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PHA.json +++ b/resources/profiles/Tiertime/filament/Generic PHA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PHA", + "name": "Generic PHA @Tiertime", "inherits": "fdm_filament_pha", + "renamed_from": "Tiertime Generic PHA", "from": "system", - "setting_id": "tFuE7IEbeGEhCNnz", - "filament_id": "GFR98", + "setting_id": "GvzA9Y6mP5a767Qb", + "filament_id": "OF74KeQR", "instantiation": "true", "compatible_printers": [ "Tiertime UP400 Pro 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA@300HS.json b/resources/profiles/Tiertime/filament/Generic PLA @Tiertime 300HS.json similarity index 82% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA@300HS.json rename to resources/profiles/Tiertime/filament/Generic PLA @Tiertime 300HS.json index 6ba33d8004..58c56fee5d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PLA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA@300HS", + "name": "Generic PLA @Tiertime 300HS", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA@300HS;Tiertime Generic PLA300HS", "from": "system", - "setting_id": "jTSVVOuHuQqETOpe", - "filament_id": "GFL99_01", + "setting_id": "VdXotPCaBzW0DswJ", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA.json b/resources/profiles/Tiertime/filament/Generic PLA @Tiertime.json similarity index 85% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA.json rename to resources/profiles/Tiertime/filament/Generic PLA @Tiertime.json index 768f0e293a..5f8aaf4229 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA.json +++ b/resources/profiles/Tiertime/filament/Generic PLA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA", + "name": "Generic PLA @Tiertime", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA", "from": "system", - "setting_id": "q9W1goEbw6UUrNY3", - "filament_id": "GFL99", + "setting_id": "RuyaWPyP41WHbU7p", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed@300HS.json b/resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime 300HS.json similarity index 65% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed@300HS.json rename to resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime 300HS.json index d36f12715b..779cc6ca4e 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA High Speed@300HS", + "name": "Generic PLA High Speed @Tiertime 300HS", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA High Speed@300HS;Tiertime Generic PLA High Speed300HS", "from": "system", - "setting_id": "e0vVCCT6Tw4061is", - "filament_id": "GFL95_01", + "setting_id": "cDQTrE11kyvmtj6l", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed.json b/resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime.json similarity index 71% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed.json rename to resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime.json index a77cb529ea..c88496b0e6 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA High Speed.json +++ b/resources/profiles/Tiertime/filament/Generic PLA High Speed @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA High Speed", + "name": "Generic PLA High Speed @Tiertime", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA High Speed", "from": "system", - "setting_id": "Ms3c6DePE0cjBeQ4", - "filament_id": "GFL95", + "setting_id": "HFwoDRXx0L72uTKc", + "filament_id": "OFmpMwxS", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk@300HS.json b/resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime 300HS.json similarity index 82% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk@300HS.json rename to resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime 300HS.json index b1911a7e9f..ba4745b50c 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA Silk@300HS", + "name": "Generic PLA Silk @Tiertime 300HS", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA Silk@300HS;Tiertime Generic PLA Silk300HS", "from": "system", - "setting_id": "yV358AeiALOn6xVr", - "filament_id": "GFL96_01", + "setting_id": "pXFxVcPY3aVixOKU", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk.json b/resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime.json similarity index 86% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk.json rename to resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime.json index f2ba37e0eb..a2cbb3f4c4 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA Silk.json +++ b/resources/profiles/Tiertime/filament/Generic PLA Silk @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA Silk", + "name": "Generic PLA Silk @Tiertime", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA Silk", "from": "system", - "setting_id": "RgKM4PxtAasidTe5", - "filament_id": "GFL96", + "setting_id": "5R7nTGblzuEWfdog", + "filament_id": "OFesA6rF", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime 300HS.json similarity index 88% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime 300HS.json index 3cc2f855f1..d4ceebf2db 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA-CF@300HS", + "name": "Generic PLA-CF @Tiertime 300HS", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA-CF@300HS;Tiertime Generic PLA-CF300HS", "from": "system", - "setting_id": "3QSGv6pAz9ihFVuD", - "filament_id": "GFL98_01", + "setting_id": "CVks3a5cABQw38Ia", + "filament_id": "OFWbdGsC", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF.json b/resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime.json similarity index 90% rename from resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF.json rename to resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime.json index a78f6e0438..306ff427aa 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PLA-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PLA-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PLA-CF", + "name": "Generic PLA-CF @Tiertime", "inherits": "fdm_filament_pla", + "renamed_from": "Tiertime Generic PLA-CF", "from": "system", - "setting_id": "maM4lXic0F10faAb", - "filament_id": "GFL98", + "setting_id": "SSHFL8Wbk46BaTYF", + "filament_id": "OFWbdGsC", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP@300HS.json b/resources/profiles/Tiertime/filament/Generic PP @Tiertime 300HS.json similarity index 60% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP@300HS.json rename to resources/profiles/Tiertime/filament/Generic PP @Tiertime 300HS.json index 473e1b6643..b79c34b466 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PP @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP@300HS", + "name": "Generic PP @Tiertime 300HS", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP@300HS;Tiertime Generic PP300HS", "from": "system", - "setting_id": "lx9zoOh3ALDlLasf", - "filament_id": "GFP97_01", + "setting_id": "BmIuSlyYKMw76mqs", + "filament_id": "OF1UNk9P", "instantiation": "true", "compatible_printers": [ "Tiertime UP300 HS 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP.json b/resources/profiles/Tiertime/filament/Generic PP @Tiertime.json similarity index 66% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP.json rename to resources/profiles/Tiertime/filament/Generic PP @Tiertime.json index 895dd36cee..0b7361dc78 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP.json +++ b/resources/profiles/Tiertime/filament/Generic PP @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP", + "name": "Generic PP @Tiertime", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP", "from": "system", - "setting_id": "3ZYx92CbNBiocyXx", - "filament_id": "GFP97", + "setting_id": "hbt3RXCxomod1cBQ", + "filament_id": "OF1UNk9P", "instantiation": "true", "compatible_printers": [ "Tiertime UP400 Pro 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime 300HS.json similarity index 69% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime 300HS.json index 5874361c2a..e5a08307fa 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP-CF@300HS", + "name": "Generic PP-CF @Tiertime 300HS", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP-CF@300HS;Tiertime Generic PP-CF300HS", "from": "system", - "setting_id": "3TZu7e58qrjP4F4u", - "filament_id": "GFP96_01", + "setting_id": "u1Sqh9bCLFQvJxoS", + "filament_id": "OFXkm8q1", "instantiation": "true", "filament_cost": [ "77.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP-CF.json b/resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime.json similarity index 74% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP-CF.json rename to resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime.json index 0c1ae8cae1..4c8abaa8ce 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PP-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP-CF", + "name": "Generic PP-CF @Tiertime", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP-CF", "from": "system", - "setting_id": "O5VvyfY5CV6IfMPQ", - "filament_id": "GFP96", + "setting_id": "2giqoHCbRKiAuTyB", + "filament_id": "OFXkm8q1", "instantiation": "true", "filament_cost": [ "77.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP-GF@300HS.json b/resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime 300HS.json similarity index 69% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP-GF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime 300HS.json index b8a677999a..820f415b25 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP-GF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP-GF@300HS", + "name": "Generic PP-GF @Tiertime 300HS", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP-GF@300HS;Tiertime Generic PP-GF300HS", "from": "system", - "setting_id": "WKwUmsEhhYFyGAP5", - "filament_id": "GFP95_01", + "setting_id": "Aiw0kkL0EFLNZ0zB", + "filament_id": "OFsijjtH", "instantiation": "true", "filament_cost": [ "59.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PP-GF.json b/resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime.json similarity index 74% rename from resources/profiles/Tiertime/filament/Tiertime Generic PP-GF.json rename to resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime.json index bde8189b36..930f2d7870 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PP-GF.json +++ b/resources/profiles/Tiertime/filament/Generic PP-GF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PP-GF", + "name": "Generic PP-GF @Tiertime", "inherits": "fdm_filament_pp", + "renamed_from": "Tiertime Generic PP-GF", "from": "system", - "setting_id": "ZQnzXtnTMVMVMNaS", - "filament_id": "GFP95", + "setting_id": "HQaX19e4JViPTQn0", + "filament_id": "OFsijjtH", "instantiation": "true", "filament_cost": [ "59.99" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime 300HS.json similarity index 69% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime 300HS.json index 866d9981bb..6402b8a7c9 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPA-CF@300HS", + "name": "Generic PPA-CF @Tiertime 300HS", "inherits": "fdm_filament_ppa", + "renamed_from": "Tiertime Generic PPA-CF@300HS;Tiertime Generic PPA-CF300HS", "from": "system", - "setting_id": "wLH8aGr4ZNiHazwA", - "filament_id": "GFN97_01", + "setting_id": "yEjRoG6UAmEBAsTg", + "filament_id": "OF8tPByX", "instantiation": "true", "filament_type": [ "PPA-CF" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF.json b/resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime.json similarity index 74% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF.json rename to resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime.json index 9dba1d2e8a..845cd1f1f3 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PPA-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPA-CF", + "name": "Generic PPA-CF @Tiertime", "inherits": "fdm_filament_ppa", + "renamed_from": "Tiertime Generic PPA-CF", "from": "system", - "setting_id": "2zYiuKYR7bESaCnd", - "filament_id": "GFN97", + "setting_id": "C3VjtPXIQ9CikaQH", + "filament_id": "OF8tPByX", "instantiation": "true", "filament_type": [ "PPA-CF" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF@300HS.json b/resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime 300HS.json similarity index 65% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime 300HS.json index 120bbce3c1..75a81d0aff 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPA-GF@300HS", + "name": "Generic PPA-GF @Tiertime 300HS", "inherits": "fdm_filament_ppa", + "renamed_from": "Tiertime Generic PPA-GF@300HS;Tiertime Generic PPA-GF300HS", "from": "system", - "setting_id": "1zAhSxsuv3wxgBtQ", - "filament_id": "GFN96_01", + "setting_id": "9088HrpGRDIqqxTs", + "filament_id": "OF8Tlg47", "instantiation": "true", "filament_max_volumetric_speed": [ "6" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF.json b/resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime.json similarity index 70% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF.json rename to resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime.json index 88d413d976..7ec50bd2f4 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPA-GF.json +++ b/resources/profiles/Tiertime/filament/Generic PPA-GF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPA-GF", + "name": "Generic PPA-GF @Tiertime", "inherits": "fdm_filament_ppa", + "renamed_from": "Tiertime Generic PPA-GF", "from": "system", - "setting_id": "hYkZEmk1B8X9EcF8", - "filament_id": "GFN96", + "setting_id": "jGP0en9vTFNmj5AJ", + "filament_id": "OF8Tlg47", "instantiation": "true", "filament_max_volumetric_speed": [ "6" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPS@300HS.json b/resources/profiles/Tiertime/filament/Generic PPS @Tiertime 300HS.json similarity index 60% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPS@300HS.json rename to resources/profiles/Tiertime/filament/Generic PPS @Tiertime 300HS.json index 853646bf08..bd804b9ffc 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPS@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PPS @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPS@300HS", + "name": "Generic PPS @Tiertime 300HS", "inherits": "fdm_filament_pps", + "renamed_from": "Tiertime Generic PPS@300HS;Tiertime Generic PPS300HS", "from": "system", - "setting_id": "5TZhbLxtLq6kSJJY", - "filament_id": "GFT97_01", + "setting_id": "KIspUdArMQzvDtcX", + "filament_id": "OFq9svOz", "instantiation": "true", "compatible_printers": [ "Tiertime UP300 HS 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPS.json b/resources/profiles/Tiertime/filament/Generic PPS @Tiertime.json similarity index 66% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPS.json rename to resources/profiles/Tiertime/filament/Generic PPS @Tiertime.json index 8fcf9ee41a..dbb381012e 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPS.json +++ b/resources/profiles/Tiertime/filament/Generic PPS @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPS", + "name": "Generic PPS @Tiertime", "inherits": "fdm_filament_pps", + "renamed_from": "Tiertime Generic PPS", "from": "system", - "setting_id": "2L1eOtxSeCJxW3RV", - "filament_id": "GFT97", + "setting_id": "NCTW11dGCzTxasjU", + "filament_id": "OFq9svOz", "instantiation": "true", "compatible_printers": [ "Tiertime UP400 Pro 0.4 nozzle", diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF@300HS.json b/resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime 300HS.json similarity index 74% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF@300HS.json rename to resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime 300HS.json index b4feee2599..f53a77c9c6 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPS-CF@300HS", + "name": "Generic PPS-CF @Tiertime 300HS", "inherits": "fdm_filament_pps", + "renamed_from": "Tiertime Generic PPS-CF@300HS;Tiertime Generic PPS-CF300HS", "from": "system", - "setting_id": "6UHEejfZvhQGA4vB", - "filament_id": "GFT98_01", + "setting_id": "E7mVBEFECdf1mhXE", + "filament_id": "OF6rdQ6M", "instantiation": "true", "fan_max_speed": [ "30" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF.json b/resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime.json similarity index 79% rename from resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF.json rename to resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime.json index d55bfb7557..3e4e15da7d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PPS-CF.json +++ b/resources/profiles/Tiertime/filament/Generic PPS-CF @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PPS-CF", + "name": "Generic PPS-CF @Tiertime", "inherits": "fdm_filament_pps", + "renamed_from": "Tiertime Generic PPS-CF", "from": "system", - "setting_id": "E0gbADj0OHkGSOxt", - "filament_id": "GFT98", + "setting_id": "QUPOb7dBkg6bPul2", + "filament_id": "OF6rdQ6M", "instantiation": "true", "fan_max_speed": [ "30" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PVA@300HS.json b/resources/profiles/Tiertime/filament/Generic PVA @Tiertime 300HS.json similarity index 70% rename from resources/profiles/Tiertime/filament/Tiertime Generic PVA@300HS.json rename to resources/profiles/Tiertime/filament/Generic PVA @Tiertime 300HS.json index f075f81a59..2efe590fb6 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PVA@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic PVA @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PVA@300HS", + "name": "Generic PVA @Tiertime 300HS", "inherits": "fdm_filament_pva", + "renamed_from": "Tiertime Generic PVA@300HS;Tiertime Generic PVA300HS", "from": "system", - "setting_id": "BQ6G75c9eLQQ7ULg", - "filament_id": "GFS99_01", + "setting_id": "E8fgXFvjTnIpqdrg", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic PVA.json b/resources/profiles/Tiertime/filament/Generic PVA @Tiertime.json similarity index 75% rename from resources/profiles/Tiertime/filament/Tiertime Generic PVA.json rename to resources/profiles/Tiertime/filament/Generic PVA @Tiertime.json index a77791002e..588648b8b0 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic PVA.json +++ b/resources/profiles/Tiertime/filament/Generic PVA @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic PVA", + "name": "Generic PVA @Tiertime", "inherits": "fdm_filament_pva", + "renamed_from": "Tiertime Generic PVA", "from": "system", - "setting_id": "bTkxwDd1TU8TUqVC", - "filament_id": "GFS99", + "setting_id": "6R2BduAh4ASmGbDd", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic SBS@300HS.json b/resources/profiles/Tiertime/filament/Generic SBS @Tiertime 300HS.json similarity index 82% rename from resources/profiles/Tiertime/filament/Tiertime Generic SBS@300HS.json rename to resources/profiles/Tiertime/filament/Generic SBS @Tiertime 300HS.json index 429f1bd78a..f3860b4e64 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic SBS@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic SBS @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic SBS@300HS", + "name": "Generic SBS @Tiertime 300HS", "inherits": "fdm_filament_sbs", + "renamed_from": "Tiertime Generic SBS@300HS;Tiertime Generic SBS300HS", "from": "system", - "setting_id": "neqjohDEPRiOa6ut", - "filament_id": "GFL99_01", + "setting_id": "nS6aGQgepNoAjumo", + "filament_id": "OFhQfUQY", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic SBS.json b/resources/profiles/Tiertime/filament/Generic SBS @Tiertime.json similarity index 85% rename from resources/profiles/Tiertime/filament/Tiertime Generic SBS.json rename to resources/profiles/Tiertime/filament/Generic SBS @Tiertime.json index 353838867a..7c4751aa34 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic SBS.json +++ b/resources/profiles/Tiertime/filament/Generic SBS @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic SBS", + "name": "Generic SBS @Tiertime", "inherits": "fdm_filament_sbs", + "renamed_from": "Tiertime Generic SBS", "from": "system", - "setting_id": "tHfCQJdD7qiIF4uT", - "filament_id": "GFL99", + "setting_id": "nyv523sDXK9fDbtb", + "filament_id": "OFhQfUQY", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic TPU@300HS.json b/resources/profiles/Tiertime/filament/Generic TPU @Tiertime 300HS.json similarity index 81% rename from resources/profiles/Tiertime/filament/Tiertime Generic TPU@300HS.json rename to resources/profiles/Tiertime/filament/Generic TPU @Tiertime 300HS.json index 456acc8a4e..2d52d479d3 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic TPU@300HS.json +++ b/resources/profiles/Tiertime/filament/Generic TPU @Tiertime 300HS.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic TPU@300HS", + "name": "Generic TPU @Tiertime 300HS", "inherits": "fdm_filament_tpu", + "renamed_from": "Tiertime Generic TPU@300HS;Tiertime Generic TPU300HS", "from": "system", - "filament_id": "GFU99_01", - "setting_id": "wgOtq6REuUQmNe5R", + "filament_id": "OFgbpcy9", + "setting_id": "99UYNDy3zV3bChRG", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Tiertime/filament/Tiertime Generic TPU.json b/resources/profiles/Tiertime/filament/Generic TPU @Tiertime.json similarity index 84% rename from resources/profiles/Tiertime/filament/Tiertime Generic TPU.json rename to resources/profiles/Tiertime/filament/Generic TPU @Tiertime.json index 8a9e07a22f..a32f1173dc 100644 --- a/resources/profiles/Tiertime/filament/Tiertime Generic TPU.json +++ b/resources/profiles/Tiertime/filament/Generic TPU @Tiertime.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Tiertime Generic TPU", + "name": "Generic TPU @Tiertime", "inherits": "fdm_filament_tpu", + "renamed_from": "Tiertime Generic TPU", "from": "system", - "filament_id": "GFU99", - "setting_id": "Viy3kUE0cTV2rMiC", + "filament_id": "OFgbpcy9", + "setting_id": "UCowa7X5TZwXBJWe", "instantiation": "true", "filament_max_volumetric_speed": [ "3.2" diff --git a/resources/profiles/Tiertime/filament/Tiertime ABS.json b/resources/profiles/Tiertime/filament/Tiertime ABS.json index 58b1849335..4ff6b5c8fd 100644 --- a/resources/profiles/Tiertime/filament/Tiertime ABS.json +++ b/resources/profiles/Tiertime/filament/Tiertime ABS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB00", + "filament_id": "OFNQKF0M", "setting_id": "uAtyf2jCQEcv7D2r", "name": "Tiertime ABS", "from": "system", diff --git a/resources/profiles/Tiertime/filament/Tiertime ABS@300HS.json b/resources/profiles/Tiertime/filament/Tiertime ABS@300HS.json index 1d716a957d..7014efe177 100644 --- a/resources/profiles/Tiertime/filament/Tiertime ABS@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime ABS@300HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB00_01", + "filament_id": "OFNQKF0M", "setting_id": "x1XBGyOHIgrD7PVs", "name": "Tiertime ABS@300HS", "from": "system", diff --git a/resources/profiles/Tiertime/filament/Tiertime ASA.json b/resources/profiles/Tiertime/filament/Tiertime ASA.json index 397f8084a9..2550aa53ae 100644 --- a/resources/profiles/Tiertime/filament/Tiertime ASA.json +++ b/resources/profiles/Tiertime/filament/Tiertime ASA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "6rwe3zrsvad1oq4C", - "filament_id": "GFB01", + "filament_id": "OFdrYBmI", "instantiation": "true", "fan_max_speed": [ "35" diff --git a/resources/profiles/Tiertime/filament/Tiertime ASA@300HS.json b/resources/profiles/Tiertime/filament/Tiertime ASA@300HS.json index 165590114d..1f465c4dda 100644 --- a/resources/profiles/Tiertime/filament/Tiertime ASA@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime ASA@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "FreBeBZ1r1VF4ouQ", - "filament_id": "GFB01_01", + "filament_id": "OFdrYBmI", "instantiation": "true", "fan_max_speed": [ "35" diff --git a/resources/profiles/Tiertime/filament/Tiertime PA6-CF.json b/resources/profiles/Tiertime/filament/Tiertime PA6-CF.json index 8c165a210d..310c4294fb 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PA6-CF.json +++ b/resources/profiles/Tiertime/filament/Tiertime PA6-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "HuOPyruYQNhxsjYW", - "filament_id": "GFN05", + "filament_id": "OFe8tuNb", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Tiertime/filament/Tiertime PA6-CF@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PA6-CF@300HS.json index 9d84f62383..bdd8281c05 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PA6-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PA6-CF@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pa", "from": "system", "setting_id": "XniESd6DwW58wgYU", - "filament_id": "GFN05_01", + "filament_id": "OFe8tuNb", "instantiation": "true", "fan_cooling_layer_time": [ "5" diff --git a/resources/profiles/Tiertime/filament/Tiertime PC.json b/resources/profiles/Tiertime/filament/Tiertime PC.json index 4d0ce8c9fa..9b83a065b1 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PC.json +++ b/resources/profiles/Tiertime/filament/Tiertime PC.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "ImTbFOOUrv2pQbCu", - "filament_id": "GFC00", + "filament_id": "OFdXVjGZ", "instantiation": "true", "filament_vendor": [ "Tiertime" diff --git a/resources/profiles/Tiertime/filament/Tiertime PC@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PC@300HS.json index fb3f03b63d..afefd7e394 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PC@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PC@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pc", "from": "system", "setting_id": "nktjGLDy0Gjl0dO8", - "filament_id": "GFC00_01", + "filament_id": "OFdXVjGZ", "instantiation": "true", "filament_vendor": [ "Tiertime" diff --git a/resources/profiles/Tiertime/filament/Tiertime PET-CF.json b/resources/profiles/Tiertime/filament/Tiertime PET-CF.json index 60a91bd937..c55a9a60c0 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PET-CF.json +++ b/resources/profiles/Tiertime/filament/Tiertime PET-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "WjpnXYqwyoeHdaC9", - "filament_id": "GFT01", + "filament_id": "OFCnywiC", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PET-CF@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PET-CF@300HS.json index d844b97bf4..bbe3ec170d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PET-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PET-CF@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "kHWlt3zl53mXcEGp", - "filament_id": "GFT01_01", + "filament_id": "OFCnywiC", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PETG.json b/resources/profiles/Tiertime/filament/Tiertime PETG.json index e4b5313393..9ec377f8f8 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PETG.json +++ b/resources/profiles/Tiertime/filament/Tiertime PETG.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "lw6WCNgazXfTwS4z", - "filament_id": "GFG00", + "filament_id": "OFObyktP", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PETG@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PETG@300HS.json index 822d39d12d..b44cc3ce30 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PETG@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PETG@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "bSujcskPkCuGi3At", - "filament_id": "GFG00_01", + "filament_id": "OFObyktP", "instantiation": "true", "cool_plate_temp": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PLA-CF.json b/resources/profiles/Tiertime/filament/Tiertime PLA-CF.json index 86a1895caa..b60dab442f 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PLA-CF.json +++ b/resources/profiles/Tiertime/filament/Tiertime PLA-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "AN8Ptxqrd3fAfsAk", - "filament_id": "GFA50", + "filament_id": "OF7OqDp3", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PLA-CF@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PLA-CF@300HS.json index 9a2dccc6cb..40558619cb 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PLA-CF@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PLA-CF@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "S7OJaqjGSnkaPyDQ", - "filament_id": "GFA50_01", + "filament_id": "OF7OqDp3", "instantiation": "true", "additional_cooling_fan_speed": [ "0" diff --git a/resources/profiles/Tiertime/filament/Tiertime PLA.json b/resources/profiles/Tiertime/filament/Tiertime PLA.json index 22729a9776..d0a030184a 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PLA.json +++ b/resources/profiles/Tiertime/filament/Tiertime PLA.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFA00", + "filament_id": "OFNGTH3w", "setting_id": "dlXQZNrJfvkJ3kWs", "name": "Tiertime PLA", "from": "system", diff --git a/resources/profiles/Tiertime/filament/Tiertime PLA@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PLA@300HS.json index b12f813f3e..48073d5c76 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PLA@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PLA@300HS.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFA00_01", + "filament_id": "OFNGTH3w", "setting_id": "bqWrzfz6CXHohbpL", "name": "Tiertime PLA@300HS", "from": "system", diff --git a/resources/profiles/Tiertime/filament/Tiertime PVA.json b/resources/profiles/Tiertime/filament/Tiertime PVA.json index 7adba03ec3..689f015f5a 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PVA.json +++ b/resources/profiles/Tiertime/filament/Tiertime PVA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "9Z1HdjB3dx1Rlyng", - "filament_id": "GFS04", + "filament_id": "OFyreocX", "instantiation": "true", "filament_cost": [ "79.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime PVA@300HS.json b/resources/profiles/Tiertime/filament/Tiertime PVA@300HS.json index 722e3efd60..988cb744db 100644 --- a/resources/profiles/Tiertime/filament/Tiertime PVA@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime PVA@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "1CwFwvd5cNbZwY95", - "filament_id": "GFS04_01", + "filament_id": "OFyreocX", "instantiation": "true", "filament_cost": [ "79.98" diff --git a/resources/profiles/Tiertime/filament/Tiertime TPU 95A.json b/resources/profiles/Tiertime/filament/Tiertime TPU 95A.json index 6feff32639..c328ac64f3 100644 --- a/resources/profiles/Tiertime/filament/Tiertime TPU 95A.json +++ b/resources/profiles/Tiertime/filament/Tiertime TPU 95A.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "aeeRALQ6vydj2vbR", - "filament_id": "GFU01", + "filament_id": "OFLOf6Sc", "instantiation": "true", "filament_vendor": [ "Tiertime" diff --git a/resources/profiles/Tiertime/filament/Tiertime TPU 95A@300HS.json b/resources/profiles/Tiertime/filament/Tiertime TPU 95A@300HS.json index f4340bfed3..d95903d89d 100644 --- a/resources/profiles/Tiertime/filament/Tiertime TPU 95A@300HS.json +++ b/resources/profiles/Tiertime/filament/Tiertime TPU 95A@300HS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "6ee2z5F26fqKny4n", - "filament_id": "GFU01_01", + "filament_id": "OFLOf6Sc", "instantiation": "true", "filament_vendor": [ "Tiertime" diff --git a/resources/profiles/TwoTrees.json b/resources/profiles/TwoTrees.json index 7484f27416..3cd77c911b 100644 --- a/resources/profiles/TwoTrees.json +++ b/resources/profiles/TwoTrees.json @@ -1,6 +1,6 @@ { "name": "TwoTrees", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "1", "description": "TwoTrees configurations", "machine_model_list": [ @@ -81,12 +81,12 @@ ], "filament_list": [ { - "name": "TwoTrees Generic 95A TPU @SK1", - "sub_path": "filament/TwoTrees Generic 95A TPU @SK1.json" + "name": "Generic TPU 95A @TwoTrees SK1", + "sub_path": "filament/Generic TPU 95A @TwoTrees SK1.json" }, { - "name": "TwoTrees Generic HS PLA @SK1", - "sub_path": "filament/TwoTrees Generic HS PLA @SK1.json" + "name": "Generic HS PLA @TwoTrees SK1", + "sub_path": "filament/Generic HS PLA @TwoTrees SK1.json" } ], "machine_list": [ diff --git a/resources/profiles/TwoTrees/filament/TwoTrees Generic HS PLA @SK1.json b/resources/profiles/TwoTrees/filament/Generic HS PLA @TwoTrees SK1.json similarity index 83% rename from resources/profiles/TwoTrees/filament/TwoTrees Generic HS PLA @SK1.json rename to resources/profiles/TwoTrees/filament/Generic HS PLA @TwoTrees SK1.json index b713bc31f4..fd22e6417a 100644 --- a/resources/profiles/TwoTrees/filament/TwoTrees Generic HS PLA @SK1.json +++ b/resources/profiles/TwoTrees/filament/Generic HS PLA @TwoTrees SK1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "TwoTrees Generic HS PLA @SK1", + "name": "Generic HS PLA @TwoTrees SK1", "inherits": "fdm_filament_pla", + "renamed_from": "TwoTrees Generic HS PLA @SK1;TwoTrees Generic HS PLA SK1", "from": "system", - "setting_id": "k7bLC5us9mGJzznW", - "filament_id": "GFL100", + "setting_id": "uRS2QA3xad1lBZJR", + "filament_id": "OFvxghTE", "instantiation": "true", "compatible_printers": [ "TwoTrees SK1 0.4 nozzle" diff --git a/resources/profiles/TwoTrees/filament/TwoTrees Generic 95A TPU @SK1.json b/resources/profiles/TwoTrees/filament/Generic TPU 95A @TwoTrees SK1.json similarity index 74% rename from resources/profiles/TwoTrees/filament/TwoTrees Generic 95A TPU @SK1.json rename to resources/profiles/TwoTrees/filament/Generic TPU 95A @TwoTrees SK1.json index b430674cd7..6f0221b92c 100644 --- a/resources/profiles/TwoTrees/filament/TwoTrees Generic 95A TPU @SK1.json +++ b/resources/profiles/TwoTrees/filament/Generic TPU 95A @TwoTrees SK1.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "TwoTrees Generic 95A TPU @SK1", + "name": "Generic TPU 95A @TwoTrees SK1", "inherits": "fdm_filament_tpu", + "renamed_from": "TwoTrees Generic 95A TPU @SK1;TwoTrees Generic 95A TPU SK1", "from": "system", - "setting_id": "YqQSUrG195dCz67L", - "filament_id": "GFU99", + "setting_id": "hAqaYYR7xzkcr2xC", + "filament_id": "OFjiXpyf", "instantiation": "true", "compatible_printers": [ "TwoTrees SK1 0.4 nozzle" diff --git a/resources/profiles/TwoTrees/machine/TwoTrees SK1.json b/resources/profiles/TwoTrees/machine/TwoTrees SK1.json index fd32c01dcf..5674e7c408 100644 --- a/resources/profiles/TwoTrees/machine/TwoTrees SK1.json +++ b/resources/profiles/TwoTrees/machine/TwoTrees SK1.json @@ -8,5 +8,5 @@ "bed_model": "TwoTrees SK1_buildplate_model.stl", "bed_texture": "TwoTrees SK1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "TwoTrees Generic 95A TPU @SK1;TwoTrees Generic PETG @SK1;TwoTrees Generic HS PLA @SK1;TwoTrees Generic PLA @SK1;TwoTrees Generic PLA-CF @SK1;TwoTrees Generic PLA Matte @SK1;TwoTrees Generic PLA Silk @SK1" + "default_materials": "Generic TPU 95A @TwoTrees SK1;TwoTrees Generic PETG @SK1;Generic HS PLA @TwoTrees SK1;TwoTrees Generic PLA @SK1;TwoTrees Generic PLA-CF @SK1;TwoTrees Generic PLA Matte @SK1;TwoTrees Generic PLA Silk @SK1" } diff --git a/resources/profiles/Volumic.json b/resources/profiles/Volumic.json index 08a313b008..af7aa294bc 100644 --- a/resources/profiles/Volumic.json +++ b/resources/profiles/Volumic.json @@ -1,6 +1,6 @@ { "name": "Volumic", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "1", "description": "VOLUMIC configurations", "machine_model_list": [ diff --git a/resources/profiles/Volumic/filament/PA6 CF20 (Performance).json b/resources/profiles/Volumic/filament/PA6 CF20 (Performance).json index 362b3b3720..6b67c28f15 100644 --- a/resources/profiles/Volumic/filament/PA6 CF20 (Performance).json +++ b/resources/profiles/Volumic/filament/PA6 CF20 (Performance).json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFN99", + "filament_id": "OFcKtw8W", "setting_id": "wuZ0EvlbcJ8GxajY", "name": "PA6 CF20 (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/PETG ESD (Performance).json b/resources/profiles/Volumic/filament/PETG ESD (Performance).json index ba8e94a875..06814b64ad 100644 --- a/resources/profiles/Volumic/filament/PETG ESD (Performance).json +++ b/resources/profiles/Volumic/filament/PETG ESD (Performance).json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFiwEbze", "setting_id": "May8rNEMOOs1qtae", "name": "PETG ESD (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/PPS Carbone (Performance).json b/resources/profiles/Volumic/filament/PPS Carbone (Performance).json index 996494cc43..4708f912c4 100644 --- a/resources/profiles/Volumic/filament/PPS Carbone (Performance).json +++ b/resources/profiles/Volumic/filament/PPS Carbone (Performance).json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFN99", + "filament_id": "OFEZpel7", "setting_id": "HE0yILdkhbiXbH1j", "name": "PPS Carbone (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic ABS Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic ABS Ultra Performance.json index 8b48f0995c..865f03155e 100644 --- a/resources/profiles/Volumic/filament/Volumic ABS Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic ABS Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFyQwdaM", "setting_id": "466ggy6ydgaZOrSx", "name": "Volumic ABS Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic ABS Ultra.json b/resources/profiles/Volumic/filament/Volumic ABS Ultra.json index cab927e925..f538936b5a 100644 --- a/resources/profiles/Volumic/filament/Volumic ABS Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic ABS Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFyUJI3q", "setting_id": "omHiTINFPThooUqk", "name": "Volumic ABS Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic ASA Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic ASA Ultra Performance.json index ea3f078ce4..519387adf5 100644 --- a/resources/profiles/Volumic/filament/Volumic ASA Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic ASA Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFU7CKZt", "setting_id": "uE5jxeOBISvO5o7L", "name": "Volumic ASA Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic ASA Ultra.json b/resources/profiles/Volumic/filament/Volumic ASA Ultra.json index 62de93ee24..2225125c3c 100644 --- a/resources/profiles/Volumic/filament/Volumic ASA Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic ASA Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OF2EB9Iz", "setting_id": "LOAp2zgQWqg1lQQ4", "name": "Volumic ASA Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra Performance.json index 54049ab145..54d0f89bb3 100644 --- a/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFU99", + "filament_id": "OFUH1aee", "setting_id": "k5V3bjZrtr7t8zl0", "name": "Volumic FLEX93 Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json index 16f143b405..84ccdc6d19 100644 --- a/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFU99", + "filament_id": "OFuxH0Uz", "setting_id": "DXZ4Gp5XP5VCJTXY", "name": "Volumic FLEX93 Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic NYLON Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic NYLON Ultra Performance.json index 44ab540de1..8a4b44f59b 100644 --- a/resources/profiles/Volumic/filament/Volumic NYLON Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic NYLON Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFN99", + "filament_id": "OFi90KlM", "setting_id": "RC5gFyIejXWDJuHH", "name": "Volumic NYLON Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json b/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json index 9b7cbd0602..95c5f81a6a 100644 --- a/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFN99", + "filament_id": "OFWa0NiB", "setting_id": "AL4xDgN8EIYb3UrL", "name": "Volumic NYLON Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PC Performance.json b/resources/profiles/Volumic/filament/Volumic PC Performance.json index d239419ccf..d454de5688 100644 --- a/resources/profiles/Volumic/filament/Volumic PC Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PC Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFC99", + "filament_id": "OFgSbX7E", "setting_id": "ht6Ar3ilCkPT7geN", "name": "Volumic PC (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PC.json b/resources/profiles/Volumic/filament/Volumic PC.json index 5ffe6cd415..12ea420585 100644 --- a/resources/profiles/Volumic/filament/Volumic PC.json +++ b/resources/profiles/Volumic/filament/Volumic PC.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFC99", + "filament_id": "OFaHjk1V", "setting_id": "3pUnwXise3J77Qmc", "name": "Volumic PC", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PCTG Ultra (Performance).json b/resources/profiles/Volumic/filament/Volumic PCTG Ultra (Performance).json index d28d3732ed..5e20cb2922 100644 --- a/resources/profiles/Volumic/filament/Volumic PCTG Ultra (Performance).json +++ b/resources/profiles/Volumic/filament/Volumic PCTG Ultra (Performance).json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFTdauIq", "setting_id": "NdegYSDVrQ4Rawtp", "name": "Volumic PCTG Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra Performance.json index 3a3d240a4e..6b98fc49d2 100644 --- a/resources/profiles/Volumic/filament/Volumic PETG Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFsD974q", "setting_id": "bNcC5kGe9jOm7Ltu", "name": "Volumic PETG Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone Performance.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone Performance.json index adf3a8fc45..91827ebe80 100644 --- a/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG98", + "filament_id": "OFY0F5qA", "setting_id": "IIFtCkVvHoLtxPxj", "name": "Volumic PETG Ultra carbone (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json index 4ee0a68464..137bad9d53 100644 --- a/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG98", + "filament_id": "OFu08yGN", "setting_id": "nOKT0adoQi3O7Tge", "name": "Volumic PETG Ultra carbone", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra.json index 25162f2d94..8db07d0bab 100644 --- a/resources/profiles/Volumic/filament/Volumic PETG Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG99", + "filament_id": "OFG0kOKX", "setting_id": "CuBXW7SqUeJOcxPP", "name": "Volumic PETG Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PLA Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic PLA Ultra Performance.json index 741d2eab82..2a02fe7c88 100644 --- a/resources/profiles/Volumic/filament/Volumic PLA Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PLA Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OF3dJf4E", "setting_id": "8J2ZIz8ByFNEB9PC", "name": "Volumic PLA Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PLA Ultra.json b/resources/profiles/Volumic/filament/Volumic PLA Ultra.json index 67d33d3b52..2e5f762d39 100644 --- a/resources/profiles/Volumic/filament/Volumic PLA Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic PLA Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFXuGxvQ", "setting_id": "3BeQ60i4cOs3BfZn", "name": "Volumic PLA Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PP Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic PP Ultra Performance.json index 91bfcf197d..3fafb8aac0 100644 --- a/resources/profiles/Volumic/filament/Volumic PP Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PP Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFNSYu5h", "setting_id": "nsiOJ8ExySR1RksQ", "name": "Volumic PP Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PP Ultra.json b/resources/profiles/Volumic/filament/Volumic PP Ultra.json index 895c9ed467..eba78219bc 100644 --- a/resources/profiles/Volumic/filament/Volumic PP Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic PP Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "OFsFo7ms", "setting_id": "UA91pv54dzbBRkFe", "name": "Volumic PP Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PVA Performance.json b/resources/profiles/Volumic/filament/Volumic PVA Performance.json index 92a94ac5c1..199d33ed62 100644 --- a/resources/profiles/Volumic/filament/Volumic PVA Performance.json +++ b/resources/profiles/Volumic/filament/Volumic PVA Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFS99", + "filament_id": "OFRkjhxK", "setting_id": "L9ZTGhwNpVWT6E5j", "name": "Volumic PVA-BVOH (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic PVA.json b/resources/profiles/Volumic/filament/Volumic PVA.json index 5d9892417c..24c28a89a5 100644 --- a/resources/profiles/Volumic/filament/Volumic PVA.json +++ b/resources/profiles/Volumic/filament/Volumic PVA.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFS99", + "filament_id": "OFGdP6Na", "setting_id": "rw4bB5gYM6YF8v9e", "name": "Volumic PVA", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra Performance.json b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra Performance.json index e20e88ed67..90562ebba2 100644 --- a/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra Performance.json +++ b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra Performance.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFkGp50Y", "setting_id": "rxVkBvMZYgHOoFW6", "name": "Volumic UNIVERSAL Ultra (Performance)", "from": "system", diff --git a/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json index 568b3a5beb..ee50a25ffd 100644 --- a/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json +++ b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFL99", + "filament_id": "OFpumhCM", "setting_id": "6iOFERN4x6xBbtuT", "name": "Volumic UNIVERSAL Ultra", "from": "system", diff --git a/resources/profiles/Volumic/filament/desactive.json b/resources/profiles/Volumic/filament/desactive.json index 6485f044f0..1c490c957e 100644 --- a/resources/profiles/Volumic/filament/desactive.json +++ b/resources/profiles/Volumic/filament/desactive.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "DFL99", + "filament_id": "OFCuaCer", "setting_id": "Sphn4hoDMpH2uy86", "name": "Désactivé", "from": "system", diff --git a/resources/profiles/Vzbot.json b/resources/profiles/Vzbot.json index 12ec13402b..bcefdaf26c 100644 --- a/resources/profiles/Vzbot.json +++ b/resources/profiles/Vzbot.json @@ -1,6 +1,6 @@ { "name": "Vzbot", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Vzbot configurations", "machine_model_list": [ @@ -149,44 +149,44 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Vzbot Generic ABS", - "sub_path": "filament/Vzbot Generic ABS.json" + "name": "Generic ABS @Vzbot", + "sub_path": "filament/Generic ABS @Vzbot.json" }, { - "name": "Vzbot Generic ASA", - "sub_path": "filament/Vzbot Generic ASA.json" + "name": "Generic ASA @Vzbot", + "sub_path": "filament/Generic ASA @Vzbot.json" }, { - "name": "Vzbot Generic PA", - "sub_path": "filament/Vzbot Generic PA.json" + "name": "Generic PA @Vzbot", + "sub_path": "filament/Generic PA @Vzbot.json" }, { - "name": "Vzbot Generic PA-CF", - "sub_path": "filament/Vzbot Generic PA-CF.json" + "name": "Generic PA-CF @Vzbot", + "sub_path": "filament/Generic PA-CF @Vzbot.json" }, { - "name": "Vzbot Generic PC", - "sub_path": "filament/Vzbot Generic PC.json" + "name": "Generic PC @Vzbot", + "sub_path": "filament/Generic PC @Vzbot.json" }, { - "name": "Vzbot Generic PETG", - "sub_path": "filament/Vzbot Generic PETG.json" + "name": "Generic PETG @Vzbot", + "sub_path": "filament/Generic PETG @Vzbot.json" }, { - "name": "Vzbot Generic PLA", - "sub_path": "filament/Vzbot Generic PLA.json" + "name": "Generic PLA @Vzbot", + "sub_path": "filament/Generic PLA @Vzbot.json" }, { - "name": "Vzbot Generic PLA-CF", - "sub_path": "filament/Vzbot Generic PLA-CF.json" + "name": "Generic PLA-CF @Vzbot", + "sub_path": "filament/Generic PLA-CF @Vzbot.json" }, { - "name": "Vzbot Generic PVA", - "sub_path": "filament/Vzbot Generic PVA.json" + "name": "Generic PVA @Vzbot", + "sub_path": "filament/Generic PVA @Vzbot.json" }, { - "name": "Vzbot Generic TPU", - "sub_path": "filament/Vzbot Generic TPU.json" + "name": "Generic TPU @Vzbot", + "sub_path": "filament/Generic TPU @Vzbot.json" } ], "machine_list": [ diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic ABS.json b/resources/profiles/Vzbot/filament/Generic ABS @Vzbot.json similarity index 75% rename from resources/profiles/Vzbot/filament/Vzbot Generic ABS.json rename to resources/profiles/Vzbot/filament/Generic ABS @Vzbot.json index 831670240c..bc59bdfea7 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic ABS.json +++ b/resources/profiles/Vzbot/filament/Generic ABS @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic ABS", + "name": "Generic ABS @Vzbot", "inherits": "fdm_filament_abs", + "renamed_from": "Vzbot Generic ABS", "from": "system", - "setting_id": "nRFPlbSKRMb0UpSI", - "filament_id": "GFB99", + "setting_id": "0gr3MwdhoGW44mbr", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_flow_ratio": [ "0.926" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic ASA.json b/resources/profiles/Vzbot/filament/Generic ASA @Vzbot.json similarity index 75% rename from resources/profiles/Vzbot/filament/Vzbot Generic ASA.json rename to resources/profiles/Vzbot/filament/Generic ASA @Vzbot.json index 0996b8cd18..9495f5cb1e 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic ASA.json +++ b/resources/profiles/Vzbot/filament/Generic ASA @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic ASA", + "name": "Generic ASA @Vzbot", "inherits": "fdm_filament_asa", + "renamed_from": "Vzbot Generic ASA", "from": "system", - "setting_id": "rP4Qul9OY7lUhPgO", - "filament_id": "GFB98", + "setting_id": "0MutZpaR9XVzUGGS", + "filament_id": "OFLPAxz3", "instantiation": "true", "filament_flow_ratio": [ "0.93" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PA.json b/resources/profiles/Vzbot/filament/Generic PA @Vzbot.json similarity index 77% rename from resources/profiles/Vzbot/filament/Vzbot Generic PA.json rename to resources/profiles/Vzbot/filament/Generic PA @Vzbot.json index 815969c712..a5e39c829c 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PA.json +++ b/resources/profiles/Vzbot/filament/Generic PA @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PA", + "name": "Generic PA @Vzbot", "inherits": "fdm_filament_pa", + "renamed_from": "Vzbot Generic PA", "from": "system", - "setting_id": "4CBO5MnUk8Smhs3q", - "filament_id": "GFN99", + "setting_id": "fwiU6RaIAOV38A9B", + "filament_id": "OFg8ndtj", "instantiation": "true", "nozzle_temperature_initial_layer": [ "280" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PA-CF.json b/resources/profiles/Vzbot/filament/Generic PA-CF @Vzbot.json similarity index 77% rename from resources/profiles/Vzbot/filament/Vzbot Generic PA-CF.json rename to resources/profiles/Vzbot/filament/Generic PA-CF @Vzbot.json index f51cda8ed9..30a13910e0 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PA-CF.json +++ b/resources/profiles/Vzbot/filament/Generic PA-CF @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PA-CF", + "name": "Generic PA-CF @Vzbot", "inherits": "fdm_filament_pa", + "renamed_from": "Vzbot Generic PA-CF", "from": "system", - "setting_id": "AKO1twNgFO67N5GK", - "filament_id": "GFN98", + "setting_id": "q8DtJmdJUN3KFV3E", + "filament_id": "OFQLcbps", "instantiation": "true", "filament_type": [ "PA-CF" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PC.json b/resources/profiles/Vzbot/filament/Generic PC @Vzbot.json similarity index 75% rename from resources/profiles/Vzbot/filament/Vzbot Generic PC.json rename to resources/profiles/Vzbot/filament/Generic PC @Vzbot.json index ebb44e627a..e2fecd6301 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PC.json +++ b/resources/profiles/Vzbot/filament/Generic PC @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PC", + "name": "Generic PC @Vzbot", "inherits": "fdm_filament_pc", + "renamed_from": "Vzbot Generic PC", "from": "system", - "setting_id": "wUe99Mr4HqzSNxgO", - "filament_id": "GFC99", + "setting_id": "crcoB7BvhVnnHNaF", + "filament_id": "OFLakOUI", "instantiation": "true", "filament_max_volumetric_speed": [ "50" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PETG.json b/resources/profiles/Vzbot/filament/Generic PETG @Vzbot.json similarity index 85% rename from resources/profiles/Vzbot/filament/Vzbot Generic PETG.json rename to resources/profiles/Vzbot/filament/Generic PETG @Vzbot.json index cc48d69299..bfb1f5af81 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PETG.json +++ b/resources/profiles/Vzbot/filament/Generic PETG @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PETG", + "name": "Generic PETG @Vzbot", "inherits": "fdm_filament_pet", + "renamed_from": "Vzbot Generic PETG", "from": "system", - "setting_id": "C8LMRvN350POVqC2", - "filament_id": "GFG99", + "setting_id": "NInr0jEJnziZ1poM", + "filament_id": "OFYPdQJh", "instantiation": "true", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PLA.json b/resources/profiles/Vzbot/filament/Generic PLA @Vzbot.json similarity index 76% rename from resources/profiles/Vzbot/filament/Vzbot Generic PLA.json rename to resources/profiles/Vzbot/filament/Generic PLA @Vzbot.json index 48a8aefecc..ee77c2fd61 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PLA.json +++ b/resources/profiles/Vzbot/filament/Generic PLA @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PLA", + "name": "Generic PLA @Vzbot", "inherits": "fdm_filament_pla", + "renamed_from": "Vzbot Generic PLA", "from": "system", - "setting_id": "4JMiuJbl1gNrBipT", - "filament_id": "GFL99", + "setting_id": "Skn1ODpcSXd2NFcH", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PLA-CF.json b/resources/profiles/Vzbot/filament/Generic PLA-CF @Vzbot.json similarity index 77% rename from resources/profiles/Vzbot/filament/Vzbot Generic PLA-CF.json rename to resources/profiles/Vzbot/filament/Generic PLA-CF @Vzbot.json index 33ab4f69a3..2fd8b03ee5 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PLA-CF.json +++ b/resources/profiles/Vzbot/filament/Generic PLA-CF @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PLA-CF", + "name": "Generic PLA-CF @Vzbot", "inherits": "fdm_filament_pla", + "renamed_from": "Vzbot Generic PLA-CF", "from": "system", - "setting_id": "nt1egZD1dQEVXp0v", - "filament_id": "GFL98", + "setting_id": "FETpZHhHj60hztGS", + "filament_id": "OFWbdGsC", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic PVA.json b/resources/profiles/Vzbot/filament/Generic PVA @Vzbot.json similarity index 78% rename from resources/profiles/Vzbot/filament/Vzbot Generic PVA.json rename to resources/profiles/Vzbot/filament/Generic PVA @Vzbot.json index 0d0bd62a3e..f8b6793e74 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic PVA.json +++ b/resources/profiles/Vzbot/filament/Generic PVA @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic PVA", + "name": "Generic PVA @Vzbot", "inherits": "fdm_filament_pva", + "renamed_from": "Vzbot Generic PVA", "from": "system", - "setting_id": "DX4eZb2tlNVqeUrn", - "filament_id": "GFS99", + "setting_id": "3xgrPw1nCEUaKQwQ", + "filament_id": "OFDvXujf", "instantiation": "true", "filament_flow_ratio": [ "0.95" diff --git a/resources/profiles/Vzbot/filament/Vzbot Generic TPU.json b/resources/profiles/Vzbot/filament/Generic TPU @Vzbot.json similarity index 73% rename from resources/profiles/Vzbot/filament/Vzbot Generic TPU.json rename to resources/profiles/Vzbot/filament/Generic TPU @Vzbot.json index f5ca392779..6ba3a3e9e4 100644 --- a/resources/profiles/Vzbot/filament/Vzbot Generic TPU.json +++ b/resources/profiles/Vzbot/filament/Generic TPU @Vzbot.json @@ -1,10 +1,11 @@ { "type": "filament", - "name": "Vzbot Generic TPU", + "name": "Generic TPU @Vzbot", "inherits": "fdm_filament_tpu", + "renamed_from": "Vzbot Generic TPU", "from": "system", - "setting_id": "YlhTF1F3OA2qj6o2", - "filament_id": "GFU99", + "setting_id": "eC3Pgdpbwi2amDbk", + "filament_id": "OFgbpcy9", "instantiation": "true", "filament_max_volumetric_speed": [ "50" diff --git a/resources/profiles/Vzbot/machine/Vzbot 235 AWD.json b/resources/profiles/Vzbot/machine/Vzbot 235 AWD.json index a29123add7..760c478b42 100644 --- a/resources/profiles/Vzbot/machine/Vzbot 235 AWD.json +++ b/resources/profiles/Vzbot/machine/Vzbot 235 AWD.json @@ -8,5 +8,5 @@ "bed_model": "Vz235SlicerBedModel-cnc.stl", "bed_texture": "VzBot_PS_bed_235.svg", "hotend_model": "Goliath.stl", - "default_materials": "Vzbot Generic ABS;Vzbot Generic PLA;Vzbot Generic PLA-CF;Vzbot Generic PETG;Vzbot Generic TPU;Vzbot Generic ASA;Vzbot Generic PC;Vzbot Generic PVA;Vzbot Generic PA;Vzbot Generic PA-CF" + "default_materials": "Generic ABS @Vzbot;Generic PLA @Vzbot;Generic PLA-CF @Vzbot;Generic PETG @Vzbot;Generic TPU @Vzbot;Generic ASA @Vzbot;Generic PC @Vzbot;Generic PVA @Vzbot;Generic PA @Vzbot;Generic PA-CF @Vzbot" } diff --git a/resources/profiles/Vzbot/machine/Vzbot 330 AWD.json b/resources/profiles/Vzbot/machine/Vzbot 330 AWD.json index 71561ce630..b30f6639fd 100644 --- a/resources/profiles/Vzbot/machine/Vzbot 330 AWD.json +++ b/resources/profiles/Vzbot/machine/Vzbot 330 AWD.json @@ -8,5 +8,5 @@ "bed_model": "Vz330SlicerBedModel-cnc.stl", "bed_texture": "VzBot_PS_bed_330.svg", "hotend_model": "Goliath.stl", - "default_materials": "Vzbot Generic ABS;Vzbot Generic PLA;Vzbot Generic PLA-CF;Vzbot Generic PETG;Vzbot Generic TPU;Vzbot Generic ASA;Vzbot Generic PC;Vzbot Generic PVA;Vzbot Generic PA;Vzbot Generic PA-CF" + "default_materials": "Generic ABS @Vzbot;Generic PLA @Vzbot;Generic PLA-CF @Vzbot;Generic PETG @Vzbot;Generic TPU @Vzbot;Generic ASA @Vzbot;Generic PC @Vzbot;Generic PVA @Vzbot;Generic PA @Vzbot;Generic PA-CF @Vzbot" } diff --git a/resources/profiles/Vzbot/machine/fdm_klipper_common.json b/resources/profiles/Vzbot/machine/fdm_klipper_common.json index 617015864c..97e546f272 100644 --- a/resources/profiles/Vzbot/machine/fdm_klipper_common.json +++ b/resources/profiles/Vzbot/machine/fdm_klipper_common.json @@ -125,7 +125,7 @@ "1" ], "default_filament_profile": [ - "Vzbot Generic ABS" + "Generic ABS @Vzbot" ], "default_print_profile": "0.20mm Standard @Vzbot", "bed_exclude_area": [ diff --git a/resources/profiles/Wanhao France.json b/resources/profiles/Wanhao France.json index 92694fe476..ce18d5c5d0 100644 --- a/resources/profiles/Wanhao France.json +++ b/resources/profiles/Wanhao France.json @@ -1,6 +1,6 @@ { "name": "Wanhao France", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Wanhao France D12 configurations", "machine_model_list": [ @@ -177,12 +177,12 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Yumi Generic PETG", - "sub_path": "filament/Yumi Generic PETG.json" + "name": "Generic PETG @Yumi", + "sub_path": "filament/Generic PETG @Yumi.json" }, { - "name": "Yumi Generic PLA", - "sub_path": "filament/Yumi Generic PLA.json" + "name": "Generic PLA @Yumi", + "sub_path": "filament/Generic PLA @Yumi.json" }, { "name": "YUMI PETG", diff --git a/resources/profiles/Wanhao France/filament/Yumi Generic PETG.json b/resources/profiles/Wanhao France/filament/Generic PETG @Yumi.json similarity index 91% rename from resources/profiles/Wanhao France/filament/Yumi Generic PETG.json rename to resources/profiles/Wanhao France/filament/Generic PETG @Yumi.json index 83d505ac6f..945df6cb10 100644 --- a/resources/profiles/Wanhao France/filament/Yumi Generic PETG.json +++ b/resources/profiles/Wanhao France/filament/Generic PETG @Yumi.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Yumi Generic PETG", + "name": "Generic PETG @Yumi", "inherits": "fdm_filament_pet", "from": "system", - "filament_id": "GFG99", + "filament_id": "OFYPdQJh", "instantiation": "false", "reduce_fan_stop_start_freq": [ "1" diff --git a/resources/profiles/Wanhao France/filament/Yumi Generic PLA.json b/resources/profiles/Wanhao France/filament/Generic PLA @Yumi.json similarity index 81% rename from resources/profiles/Wanhao France/filament/Yumi Generic PLA.json rename to resources/profiles/Wanhao France/filament/Generic PLA @Yumi.json index bbace09129..1bcd4923a8 100644 --- a/resources/profiles/Wanhao France/filament/Yumi Generic PLA.json +++ b/resources/profiles/Wanhao France/filament/Generic PLA @Yumi.json @@ -1,9 +1,9 @@ { "type": "filament", - "name": "Yumi Generic PLA", + "name": "Generic PLA @Yumi", "inherits": "fdm_filament_pla", "from": "system", - "filament_id": "GFL99", + "filament_id": "OFDSrzZ8", "instantiation": "false", "filament_flow_ratio": [ "0.98" diff --git a/resources/profiles/Wanhao France/filament/YUMI PETG.json b/resources/profiles/Wanhao France/filament/YUMI PETG.json index ca5eb1b5c9..9d1bf0288a 100644 --- a/resources/profiles/Wanhao France/filament/YUMI PETG.json +++ b/resources/profiles/Wanhao France/filament/YUMI PETG.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "YUMI PETG", - "inherits": "Yumi Generic PETG", + "inherits": "Generic PETG @Yumi", "from": "system", "setting_id": "PFFm20QNgwqyuglH", - "filament_id": "GFG99", + "filament_id": "OF5NqBfC", "instantiation": "true", "filament_vendor": [ "Yumi" diff --git a/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json b/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json index d6a5d6dcc6..6636fe680d 100644 --- a/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json +++ b/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "YUMI PLA Bowden", - "inherits": "Yumi Generic PLA", + "inherits": "Generic PLA @Yumi", "from": "system", "setting_id": "zQSSA2QZi27ESyQK", - "filament_id": "GFU99", + "filament_id": "OFZ2LuAi", "instantiation": "true", "filament_vendor": [ "Yumi" @@ -58,12 +58,6 @@ "0.4" ], "compatible_printers": [ - "D12 230 PRO M2 DIRECT 0.4 nozzle", - "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", - "D12 300 PRO M2 DIRECT 0.4 nozzle", - "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", - "D12 500 PRO M2 DIRECT 0.4 nozzle", - "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", "D12 230 PRO M2 MONO DUAL 0.4 nozzle", "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", "D12 300 PRO M2 MONO DUAL PoopTool 0.4 nozzle", diff --git a/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json b/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json index be13517ab5..050e003e77 100644 --- a/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json +++ b/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json @@ -1,10 +1,10 @@ { "type": "filament", "name": "YUMI PLA Direct Drive", - "inherits": "Yumi Generic PLA", + "inherits": "Generic PLA @Yumi", "from": "system", "setting_id": "v2p0ooSxHnvVkn57", - "filament_id": "GFU99", + "filament_id": "OFJxSqO4", "instantiation": "true", "filament_vendor": [ "Yumi" diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json index 45e7243ee3..cf912002ee 100644 --- a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-230_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json index b74b11321e..24a798c531 100644 --- a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-230_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json index a51f0bafbf..7447f4481b 100644 --- a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-300_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json index 563d05ca53..8290a99d9e 100644 --- a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-300_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json index d54d0d6e51..3c85fac7eb 100644 --- a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-500_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json index 2fe6842bc8..3588797494 100644 --- a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json @@ -8,5 +8,5 @@ "bed_model": "Wanhao_D12-500_buildplate_model.stl", "bed_texture": "D12_texture.png", "hotend_model": "Wanhao D12-300_hotend.stl", - "default_materials": "YUMI PLA Bowden;YUMI PETG;" + "default_materials": "YUMI PLA Direct Drive;YUMI PETG;" } diff --git a/resources/profiles/WonderMaker.json b/resources/profiles/WonderMaker.json index c65bc82729..0eeffdb045 100755 --- a/resources/profiles/WonderMaker.json +++ b/resources/profiles/WonderMaker.json @@ -1,7 +1,7 @@ { "name": "WonderMaker", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "WonderMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker ABS.json b/resources/profiles/WonderMaker/filament/WonderMaker ABS.json index ab6833cb04..a15b27e098 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker ABS.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker ABS.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_abs", "from": "system", "setting_id": "cyLAXg9zBIDNkYNx", - "filament_id": "GFB00", + "filament_id": "OFjHrAX0", "instantiation": "true", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker ASA.json b/resources/profiles/WonderMaker/filament/WonderMaker ASA.json index b73a974ea9..186045f104 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker ASA.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker ASA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_asa", "from": "system", "setting_id": "Wu70ukKHBqIa4TDv", - "filament_id": "GFB01", + "filament_id": "OFy3sW6j", "instantiation": "true", "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "eng_plate_temp": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PET-CF.json b/resources/profiles/WonderMaker/filament/WonderMaker PET-CF.json index 79d0a85a77..b86695c98d 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PET-CF.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PET-CF.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "Rnm03E1ifi5A2vrQ", - "filament_id": "GFT01", + "filament_id": "OF4f8vVp", "instantiation": "true", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "cool_plate_temp": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PETG Basic.json b/resources/profiles/WonderMaker/filament/WonderMaker PETG Basic.json index 434c0f9fca..0da03e7d8d 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PETG Basic.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PETG Basic.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pet", "from": "system", "setting_id": "ZtPZlMNIqq3Gaavc", - "filament_id": "GFG00", + "filament_id": "OF5lGPup", "instantiation": "true", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Basic.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Basic.json index 7440eae0ee..2723ffd1bb 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Basic.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Basic.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "HRFI81hKAaT1LwjF", - "filament_id": "GFA00", + "filament_id": "OFMK5gVo", "instantiation": "true", "filament_cost": [ "24.99" diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Marble.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Marble.json index 7c641e69b0..9ebd12b035 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Marble.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Marble.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "eudiDwK2EVLlGnha", - "filament_id": "GFA07", + "filament_id": "OFEbIx49", "instantiation": "true", "filament_cost": [ "29.99" diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Matte.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Matte.json index a935c96157..53fc60c709 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Matte.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Matte.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "YufHNkKBRBBxucHO", - "filament_id": "GFA01", + "filament_id": "OFepU7Tl", "instantiation": "true", "filament_cost": [ "24.99" diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Metal.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Metal.json index 222fcbce1a..09454f9a80 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Metal.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Metal.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "4B7gD5YwPbUCvLAh", - "filament_id": "GFA02", + "filament_id": "OFcogyWl", "instantiation": "true", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Silk.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Silk.json index 6738e2802e..7e2b3be650 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Silk.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Silk.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "8kSWEkCpitdwX11c", - "filament_id": "GFA05", + "filament_id": "OFncpm7O", "instantiation": "true", "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PLA Wood.json b/resources/profiles/WonderMaker/filament/WonderMaker PLA Wood.json index d4b51f4b0d..a2b96925a6 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PLA Wood.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PLA Wood.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pla", "from": "system", "setting_id": "KxnOjANQuyO10zzH", - "filament_id": "GFA16", + "filament_id": "OFBBgw7B", "instantiation": "true", "filament_cost": [ "24.99" diff --git a/resources/profiles/WonderMaker/filament/WonderMaker PVA.json b/resources/profiles/WonderMaker/filament/WonderMaker PVA.json index 65f504da95..1ec283f106 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker PVA.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker PVA.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_pva", "from": "system", "setting_id": "PRdEoagTzltjzJCQ", - "filament_id": "GFS04", + "filament_id": "OF4ulo9Y", "instantiation": "true", "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_cost": [ diff --git a/resources/profiles/WonderMaker/filament/WonderMaker TPU 95A.json b/resources/profiles/WonderMaker/filament/WonderMaker TPU 95A.json index 3b617e15ab..a8d7620cec 100755 --- a/resources/profiles/WonderMaker/filament/WonderMaker TPU 95A.json +++ b/resources/profiles/WonderMaker/filament/WonderMaker TPU 95A.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "eUyRprcb22IdYNv3", - "filament_id": "GFU01", + "filament_id": "OFLAXKqP", "instantiation": "true", "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ diff --git a/resources/profiles/Z-Bolt.json b/resources/profiles/Z-Bolt.json index 8e3d3a0cd5..aa092cc8b2 100644 --- a/resources/profiles/Z-Bolt.json +++ b/resources/profiles/Z-Bolt.json @@ -1,7 +1,7 @@ { "name": "Z-Bolt", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Z-Bolt configurations", "machine_model_list": [ diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.4 nozzle.json index 5f505d80da..10b5421797 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.4 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS;Generic ABS @Z-Bolt;Z-Bolt ABS @0.4 nozzle", "from": "system", "setting_id": "p97bQCnVyGgwMn2y", - "filament_id": "GFL204", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_max_volumetric_speed": [ "15" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.6 nozzle.json index 641fff9a6b..ea89fac80f 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.6 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS @0.6 nozzle", "from": "system", "setting_id": "BQdgCL8lvVW7I8Dw", - "filament_id": "GFL206", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.8 nozzle.json index 1b55d4460b..48c8a20136 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt 0.8 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS @0.8 nozzle", "from": "system", "setting_id": "Xn2L7IBp26Bb6G2K", - "filament_id": "GFL208", + "filament_id": "OFY9muEs", "instantiation": "true", "filament_max_volumetric_speed": [ "21" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt Base.json b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt Base.json index bdef07fbb7..26374ba05c 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt Base.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS @Z-Bolt Base.json @@ -2,9 +2,8 @@ "type": "filament", "name": "Generic ABS @Z-Bolt Base", "inherits": "fdm_filament_abs", - "renamed_from": "Z-Bolt ABS;Generic ABS @Z-Bolt", "from": "system", - "filament_id": "GFL200", + "filament_id": "OFY9muEs", "instantiation": "false", "filament_max_volumetric_speed": [ "20" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.4 nozzle.json index a933deaf74..7ee03a1904 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.4 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS HT;Generic ABS HT @Z-Bolt;Z-Bolt ABS HT @0.4 nozzle", "from": "system", "setting_id": "TDGj84iuRAL9R1d4", - "filament_id": "GFL504", + "filament_id": "OFsP8PKH", "instantiation": "true", "filament_max_volumetric_speed": [ "15" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.6 nozzle.json index 701a2e6b7f..626fbe9977 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.6 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS HT @0.6 nozzle", "from": "system", "setting_id": "2AKxm2VhVlL2vMM1", - "filament_id": "GFL506", + "filament_id": "OFsP8PKH", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.8 nozzle.json index 6c73a3d99f..feb932dcdb 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt 0.8 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt ABS HT @0.8 nozzle", "from": "system", "setting_id": "ztusMudd96Ns3Ip0", - "filament_id": "GFL508", + "filament_id": "OFsP8PKH", "instantiation": "true", "filament_max_volumetric_speed": [ "21" diff --git a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt Base.json b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt Base.json index 431d4dc7c2..7bacdfde2e 100644 --- a/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt Base.json +++ b/resources/profiles/Z-Bolt/filament/Generic ABS HT @Z-Bolt Base.json @@ -2,9 +2,8 @@ "type": "filament", "name": "Generic ABS HT @Z-Bolt Base", "inherits": "Generic ABS @Z-Bolt Base", - "renamed_from": "Z-Bolt ABS HT;Generic ABS HT @Z-Bolt", "from": "system", - "filament_id": "GFL500", + "filament_id": "OFsP8PKH", "instantiation": "false", "description": "Use this filament profile to print big ABS models with chamber heating", "chamber_temperatures": [ diff --git a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.4 nozzle.json index e9b01c547c..c09de55efa 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.4 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PA;Generic PA @Z-Bolt;Z-Bolt PA @0.4 nozzle", "from": "system", "setting_id": "zuvJBWxHOiPMyExQ", - "filament_id": "GFL404", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.6 nozzle.json index d74fcf8470..d6886e6b1e 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.6 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PA @0.6 nozzle", "from": "system", "setting_id": "MB0n4BeDFEI25yTe", - "filament_id": "GFL406", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_max_volumetric_speed": [ "10" diff --git a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.8 nozzle.json index 42d675d826..12a005431f 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt 0.8 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PA @0.8 nozzle", "from": "system", "setting_id": "WZc4C1f6cPG8HZR3", - "filament_id": "GFL408", + "filament_id": "OFg8ndtj", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt Base.json b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt Base.json index 73459bf326..07416a8d81 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt Base.json +++ b/resources/profiles/Z-Bolt/filament/Generic PA @Z-Bolt Base.json @@ -2,9 +2,8 @@ "type": "filament", "name": "Generic PA @Z-Bolt Base", "inherits": "fdm_filament_pa", - "renamed_from": "Z-Bolt PA;Generic PA @Z-Bolt", "from": "system", - "filament_id": "GFL400", + "filament_id": "OFg8ndtj", "instantiation": "false", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.4 nozzle.json index 476ece5d3b..a28c4bc1c3 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.4 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PETG;Generic PETG @Z-Bolt;Z-Bolt PETG @0.4 nozzle", "from": "system", "setting_id": "LWwbNXs8bf1iGELi", - "filament_id": "GFL304", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_max_volumetric_speed": [ "8" diff --git a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.6 nozzle.json index 8bd7ff1efa..15aab3fe46 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.6 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PETG @0.6 nozzle", "from": "system", "setting_id": "w4HVBbunzssG9j3s", - "filament_id": "GFL306", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_max_volumetric_speed": [ "10" diff --git a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.8 nozzle.json index 3bce1def13..4fe8b41490 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt 0.8 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PETG @0.8 nozzle", "from": "system", "setting_id": "TnLZ0vOVjIjng3u0", - "filament_id": "GFL308", + "filament_id": "OFYPdQJh", "instantiation": "true", "filament_max_volumetric_speed": [ "12" diff --git a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt Base.json b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt Base.json index 8e64cc6200..18f2530d8a 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt Base.json +++ b/resources/profiles/Z-Bolt/filament/Generic PETG @Z-Bolt Base.json @@ -2,9 +2,8 @@ "type": "filament", "name": "Generic PETG @Z-Bolt Base", "inherits": "fdm_filament_pet", - "renamed_from": "Z-Bolt PETG;Generic PETG @Z-Bolt", "from": "system", - "filament_id": "GFL300", + "filament_id": "OFYPdQJh", "instantiation": "false", "fan_cooling_layer_time": [ "30" diff --git a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.4 nozzle.json index 943d57d6c1..527888a93f 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.4 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PLA;Generic PLA @Z-Bolt;Z-Bolt PLA @0.4 nozzle", "from": "system", "setting_id": "0MfamDPH1L6sMRff", - "filament_id": "GFL100", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_max_volumetric_speed": [ "15" diff --git a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.6 nozzle.json index a87f145129..af58bff7c5 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.6 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PLA @0.6 nozzle", "from": "system", "setting_id": "tdq9Ye9GLpZXlak6", - "filament_id": "GFL106", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_max_volumetric_speed": [ "18" diff --git a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.8 nozzle.json index 283951b1a2..dbe507507b 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt 0.8 nozzle.json @@ -5,7 +5,7 @@ "renamed_from": "Z-Bolt PLA @0.8 nozzle", "from": "system", "setting_id": "GKtc9mJusUZJD6kx", - "filament_id": "GFL108", + "filament_id": "OFDSrzZ8", "instantiation": "true", "filament_max_volumetric_speed": [ "21" diff --git a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt Base.json b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt Base.json index 4b946c44cd..2b64f307ac 100644 --- a/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt Base.json +++ b/resources/profiles/Z-Bolt/filament/Generic PLA @Z-Bolt Base.json @@ -2,9 +2,8 @@ "type": "filament", "name": "Generic PLA @Z-Bolt Base", "inherits": "fdm_filament_pla", - "renamed_from": "Z-Bolt PLA;Generic PLA @Z-Bolt", "from": "system", - "filament_id": "GFL100", + "filament_id": "OFDSrzZ8", "instantiation": "false", "filament_max_volumetric_speed": [ "20" diff --git a/resources/profiles/iQ.json b/resources/profiles/iQ.json index 4afcb18328..050a0a2eb2 100644 --- a/resources/profiles/iQ.json +++ b/resources/profiles/iQ.json @@ -1,6 +1,6 @@ { "name": "innovatiQ", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "1", "description": "innovatiQ configuration", "machine_model_list": [ diff --git a/resources/profiles/iQ/filament/Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle.json b/resources/profiles/iQ/filament/Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle.json index 79be89b387..5710a6c96e 100644 --- a/resources/profiles/iQ/filament/Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "7YUqT6co3NfvJ8L9", - "filament_id": "IQM1", + "filament_id": "OFjUGUIK", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/iQ/filament/Fiberthree PACF Pro P2 @iQ TiQ2 0.4 Nozzle.json b/resources/profiles/iQ/filament/Fiberthree PACF Pro P2 @iQ TiQ2 0.4 Nozzle.json index 8b07c6af0f..f3dfafcd74 100644 --- a/resources/profiles/iQ/filament/Fiberthree PACF Pro P2 @iQ TiQ2 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/Fiberthree PACF Pro P2 @iQ TiQ2 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "B5VrAYqX9Dzj5qfV", - "filament_id": "IQM7", + "filament_id": "OF6kj4jI", "instantiation": "true", "compatible_prints": [ "0.20mm Standard @iQ TiQ2 P2 - PACF Pro Fiberthree + VXL90 Xioneer (0.4 Nozzle)" diff --git a/resources/profiles/iQ/filament/Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle.json b/resources/profiles/iQ/filament/Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle.json index b692152c71..3ead9c48e3 100644 --- a/resources/profiles/iQ/filament/Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "5M829nxsQdq2Sde5", - "filament_id": "IQM1", + "filament_id": "OFXJ9iom", "instantiation": "true", "compatible_prints": [ "0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)" diff --git a/resources/profiles/iQ/filament/Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle.json b/resources/profiles/iQ/filament/Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle.json index e0faf6eb71..3409911a32 100644 --- a/resources/profiles/iQ/filament/Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "2gaJup2jw52l27sv", - "filament_id": "IQM2", + "filament_id": "OFJWKoYG", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/iQ/filament/Polymaker PETG Polymax black P1 @iQ TiQ2 0.4 Nozzle.json b/resources/profiles/iQ/filament/Polymaker PETG Polymax black P1 @iQ TiQ2 0.4 Nozzle.json index 5226e1e755..2bcd99b952 100644 --- a/resources/profiles/iQ/filament/Polymaker PETG Polymax black P1 @iQ TiQ2 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/Polymaker PETG Polymax black P1 @iQ TiQ2 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "QefI7iu8bAQ9jzDK", - "filament_id": "IQM3", + "filament_id": "OFaeIx7W", "instantiation": "true", "activate_air_filtration": [ "0" diff --git a/resources/profiles/iQ/filament/VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle.json b/resources/profiles/iQ/filament/VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle.json index 2855f13552..aacf080a4b 100644 --- a/resources/profiles/iQ/filament/VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle.json +++ b/resources/profiles/iQ/filament/VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_common", "from": "system", "setting_id": "rVzUhxKEDUfGMnQi", - "filament_id": "IQM1011", + "filament_id": "OFOJPAAS", "instantiation": "true", "compatible_prints": [ "0.20mm Standard @iQ TiQ2 P2 - PACF Pro Fiberthree + VXL90 Xioneer (0.4 Nozzle)" diff --git a/resources/profiles/re3D.json b/resources/profiles/re3D.json index 94cca3c2ef..7a66cb4ce1 100644 --- a/resources/profiles/re3D.json +++ b/resources/profiles/re3D.json @@ -1,7 +1,7 @@ { "name": "re3D", "url": "", - "version": "03.00.08", + "version": "03.00.10", "force_update": "0", "description": "re3D configurations", "machine_model_list": [ @@ -93,26 +93,6 @@ "name": "fdm_filament_pc", "sub_path": "filament/fdm_filament_pc.json" }, - { - "name": "re3D PLA", - "sub_path": "filament/re3D PLA.json" - }, - { - "name": "re3D PETG", - "sub_path": "filament/re3D PETG.json" - }, - { - "name": "re3D PC", - "sub_path": "filament/re3D PC.json" - }, - { - "name": "re3D rPETG", - "sub_path": "filament/re3D rPETG.json" - }, - { - "name": "re3D rPP", - "sub_path": "filament/re3D rPP.json" - }, { "name": "re3D PLA @0.4 nozzle", "sub_path": "filament/re3D PLA @0.4 nozzle.json" diff --git a/resources/profiles/re3D/filament/re3D PC @0.4 nozzle.json b/resources/profiles/re3D/filament/re3D PC @0.4 nozzle.json index d3ec58f07c..aa4a0baa91 100644 --- a/resources/profiles/re3D/filament/re3D PC @0.4 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PC @0.4 nozzle.json @@ -2,9 +2,10 @@ "type": "filament", "name": "re3D PC @0.4 nozzle", "from": "system", + "renamed_from": "re3D PC", "instantiation": "true", "inherits": "fdm_filament_pc", - "filament_id": "GFG99", + "filament_id": "OFU3QXL7", "setting_id": "6yqRE2eSyER7X82N", "filament_settings_id": [ "re3D PC @0.4 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PC @0.8 nozzle.json b/resources/profiles/re3D/filament/re3D PC @0.8 nozzle.json index 2f4f743d07..370a16baca 100644 --- a/resources/profiles/re3D/filament/re3D PC @0.8 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PC @0.8 nozzle.json @@ -4,7 +4,7 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pc", - "filament_id": "GFG99", + "filament_id": "OFU3QXL7", "setting_id": "YVPbVSiVCzjp5ynf", "filament_settings_id": [ "re3D PC @0.8 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PC.json b/resources/profiles/re3D/filament/re3D PC.json deleted file mode 100644 index d24b00d482..0000000000 --- a/resources/profiles/re3D/filament/re3D PC.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "name": "re3D PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_id": "GFG99", - "setting_id": "eSR00TZTotTvJs8l", - "filament_settings_id": [ - "re3D PC" - ], - "compatible_printers": [ - "re3D Gigabot 4 0.4 nozzle", - "re3D Gigabot 4 XLT 0.4 nozzle", - "re3D Terabot 4 0.4 nozzle", - "re3D Gigabot 4 0.8 nozzle", - "re3D Gigabot 4 XLT 0.8 nozzle", - "re3D Terabot 4 0.8 nozzle" - ], - "filament_vendor": [ - "re3D" - ] -} \ No newline at end of file diff --git a/resources/profiles/re3D/filament/re3D PETG @0.4 nozzle.json b/resources/profiles/re3D/filament/re3D PETG @0.4 nozzle.json index d85397a1c0..444fa42c55 100644 --- a/resources/profiles/re3D/filament/re3D PETG @0.4 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PETG @0.4 nozzle.json @@ -2,9 +2,10 @@ "type": "filament", "name": "re3D PETG @0.4 nozzle", "from": "system", + "renamed_from": "re3D PETG", "instantiation": "true", "inherits": "fdm_filament_pet", - "filament_id": "GFG03", + "filament_id": "OF3F63OE", "setting_id": "epcrSCwjgRXMycBx", "filament_settings_id": [ "re3D PETG @0.4 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PETG @0.8 nozzle.json b/resources/profiles/re3D/filament/re3D PETG @0.8 nozzle.json index c45d4a84e5..93ae0e65a2 100644 --- a/resources/profiles/re3D/filament/re3D PETG @0.8 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PETG @0.8 nozzle.json @@ -4,7 +4,7 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pet", - "filament_id": "GFG03", + "filament_id": "OF3F63OE", "setting_id": "MoQie1JMlUeH0BwR", "filament_settings_id": [ "re3D PETG @0.8 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PETG.json b/resources/profiles/re3D/filament/re3D PETG.json deleted file mode 100644 index a52d5b742c..0000000000 --- a/resources/profiles/re3D/filament/re3D PETG.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "name": "re3D PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "filament_id": "GFG03", - "setting_id": "msXDK31R8KOvqNqK", - "filament_settings_id": [ - "re3D PETG" - ], - "compatible_printers": [ - "re3D Gigabot 4 0.4 nozzle", - "re3D Gigabot 4 XLT 0.4 nozzle", - "re3D Terabot 4 0.4 nozzle", - "re3D Gigabot 4 0.8 nozzle", - "re3D Gigabot 4 XLT 0.8 nozzle", - "re3D Terabot 4 0.8 nozzle" - ], - "filament_vendor": [ - "re3D" - ] -} \ No newline at end of file diff --git a/resources/profiles/re3D/filament/re3D PLA @0.4 nozzle.json b/resources/profiles/re3D/filament/re3D PLA @0.4 nozzle.json index a3630d0111..0314778218 100644 --- a/resources/profiles/re3D/filament/re3D PLA @0.4 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PLA @0.4 nozzle.json @@ -2,9 +2,10 @@ "type": "filament", "name": "re3D PLA @0.4 nozzle", "from": "system", + "renamed_from": "re3D PLA", "instantiation": "true", "inherits": "fdm_filament_pla", - "filament_id": "GFL99", + "filament_id": "OFRyOsZj", "setting_id": "M8OOntNjjDBR4W32", "filament_settings_id": [ "re3D PLA @0.4 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PLA @0.8 nozzle.json b/resources/profiles/re3D/filament/re3D PLA @0.8 nozzle.json index 002e18f67c..f537d9316c 100644 --- a/resources/profiles/re3D/filament/re3D PLA @0.8 nozzle.json +++ b/resources/profiles/re3D/filament/re3D PLA @0.8 nozzle.json @@ -4,7 +4,7 @@ "from": "system", "instantiation": "true", "inherits": "fdm_filament_pla", - "filament_id": "GFL99", + "filament_id": "OFRyOsZj", "setting_id": "SpF19Y2sSYbPHyxz", "filament_settings_id": [ "re3D PLA @0.8 nozzle" diff --git a/resources/profiles/re3D/filament/re3D PLA.json b/resources/profiles/re3D/filament/re3D PLA.json deleted file mode 100644 index 7b153db22b..0000000000 --- a/resources/profiles/re3D/filament/re3D PLA.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "name": "re3D PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_id": "GFL99", - "setting_id": "nPpDwvFg7WQr7K3t", - "filament_settings_id": [ - "re3D PLA" - ], - "compatible_printers": [ - "re3D Gigabot 4 0.4 nozzle", - "re3D Gigabot 4 XLT 0.4 nozzle", - "re3D Terabot 4 0.4 nozzle", - "re3D Gigabot 4 0.8 nozzle", - "re3D Gigabot 4 XLT 0.8 nozzle", - "re3D Terabot 4 0.8 nozzle" - ], - "filament_vendor": [ - "re3D" - ] -} \ No newline at end of file diff --git a/resources/profiles/re3D/filament/re3D rPETG @0.8 nozzle.json b/resources/profiles/re3D/filament/re3D rPETG @0.8 nozzle.json index 0ac0d012f5..5bc3c037bf 100644 --- a/resources/profiles/re3D/filament/re3D rPETG @0.8 nozzle.json +++ b/resources/profiles/re3D/filament/re3D rPETG @0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "filament", - "filament_id": "GFG01", + "filament_id": "OFmCOW2Y", "setting_id": "WlELqPVnuL7DaTxs", "name": "re3D rPETG @0.8 nozzle", "from": "system", - "renamed_from": "re3D Greengate rPETG @0.8 nozzle", + "renamed_from": "re3D Greengate rPETG @0.8 nozzle;re3D rPETG;re3D Greengate rPETG", "instantiation": "true", "inherits": "fdm_filament_pet", "nozzle_temperature_initial_layer": [ diff --git a/resources/profiles/re3D/filament/re3D rPETG @1.75 nozzle.json b/resources/profiles/re3D/filament/re3D rPETG @1.75 nozzle.json index 8cd090fc06..888880055f 100644 --- a/resources/profiles/re3D/filament/re3D rPETG @1.75 nozzle.json +++ b/resources/profiles/re3D/filament/re3D rPETG @1.75 nozzle.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG01", + "filament_id": "OFmCOW2Y", "setting_id": "sHzO2S3mmE6Iqs2O", "name": "re3D rPETG @1.75 nozzle", "from": "system", diff --git a/resources/profiles/re3D/filament/re3D rPETG.json b/resources/profiles/re3D/filament/re3D rPETG.json deleted file mode 100644 index fe19f12539..0000000000 --- a/resources/profiles/re3D/filament/re3D rPETG.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "filament", - "name": "re3D rPETG", - "from": "system", - "renamed_from": "re3D Greengate rPETG", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "filament_id": "GFG01", - "setting_id": "6aESuJ2S2Kogd4Lq", - "filament_settings_id": [ - "re3D rPETG" - ], - "compatible_printers": [ - "re3D GigabotX 2 0.8 nozzle", - "re3D GigabotX 2 XLT 0.8 nozzle", - "re3D TerabotX 2 0.8 nozzle", - "re3D GigabotX 2 1.75 nozzle", - "re3D GigabotX 2 XLT 1.75 nozzle", - "re3D TerabotX 2 1.75 nozzle" - ], - "filament_vendor": [ - "re3D" - ] -} \ No newline at end of file diff --git a/resources/profiles/re3D/filament/re3D rPP @0.8 nozzle.json b/resources/profiles/re3D/filament/re3D rPP @0.8 nozzle.json index 5f5467e86d..0b8b99eda1 100644 --- a/resources/profiles/re3D/filament/re3D rPP @0.8 nozzle.json +++ b/resources/profiles/re3D/filament/re3D rPP @0.8 nozzle.json @@ -1,9 +1,10 @@ { "type": "filament", - "filament_id": "GFG02", + "filament_id": "OFfHGM1D", "setting_id": "i9ii0b7qFYWnkGSq", "name": "re3D rPP @0.8 nozzle", "from": "system", + "renamed_from": "re3D rPP", "instantiation": "true", "inherits": "fdm_filament_pp", "filament_type": [ diff --git a/resources/profiles/re3D/filament/re3D rPP @1.75 nozzle.json b/resources/profiles/re3D/filament/re3D rPP @1.75 nozzle.json index 2e5a3f4386..e0b8574ab7 100644 --- a/resources/profiles/re3D/filament/re3D rPP @1.75 nozzle.json +++ b/resources/profiles/re3D/filament/re3D rPP @1.75 nozzle.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFG02", + "filament_id": "OFfHGM1D", "setting_id": "356nOwsfGLI3CNqU", "name": "re3D rPP @1.75 nozzle", "from": "system", diff --git a/resources/profiles/re3D/filament/re3D rPP.json b/resources/profiles/re3D/filament/re3D rPP.json deleted file mode 100644 index f7244f5985..0000000000 --- a/resources/profiles/re3D/filament/re3D rPP.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "name": "re3D rPP", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pp", - "filament_id": "GFG02", - "setting_id": "8PB62qm5Cd3SHLf4", - "filament_settings_id": [ - "re3D rPP" - ], - "compatible_printers": [ - "re3D GigabotX 2 0.8 nozzle", - "re3D GigabotX 2 XLT 0.8 nozzle", - "re3D TerabotX 2 0.8 nozzle", - "re3D GigabotX 2 1.75 nozzle", - "re3D GigabotX 2 XLT 1.75 nozzle", - "re3D TerabotX 2 1.75 nozzle" - ], - "filament_vendor": [ - "re3D" - ] -} \ No newline at end of file diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4 0.4 nozzle.json b/resources/profiles/re3D/machine/re3D Gigabot 4 0.4 nozzle.json index d14d3c260e..6ab8f4ed61 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4 0.4 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4 0.4 nozzle.json @@ -7,7 +7,7 @@ "model_id": "GB4", "printer_model": "re3D Gigabot 4", "bed_texture": "re3D Gigabot 4_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.4 nozzle;re3D PLA @0.4 nozzle;re3D PC @0.4 nozzle", "printable_area": [ "0x0", "590x0", diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4 0.8 nozzle.json b/resources/profiles/re3D/machine/re3D Gigabot 4 0.8 nozzle.json index 9bc78b36ad..e87cdacef1 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4 0.8 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4 0.8 nozzle.json @@ -7,7 +7,7 @@ "model_id": "GB4", "printer_model": "re3D Gigabot 4", "bed_texture": "re3D Gigabot 4_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.8 nozzle;re3D PLA @0.8 nozzle;re3D PC @0.8 nozzle", "printable_area": [ "0x0", "590x0", diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.4 nozzle.json b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.4 nozzle.json index 56b4030476..dedb29c3e8 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.4 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.4 nozzle.json @@ -7,7 +7,7 @@ "model_id": "GB4", "printer_model": "re3D Gigabot 4 XLT", "bed_texture": "re3D Gigabot 4 XLT_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.4 nozzle;re3D PLA @0.4 nozzle;re3D PC @0.4 nozzle", "printable_area": [ "0x0", "590x0", diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.8 nozzle.json b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.8 nozzle.json index a14e730b30..f34890289c 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.8 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT 0.8 nozzle.json @@ -7,7 +7,7 @@ "model_id": "GB4", "printer_model": "re3D Gigabot 4 XLT", "bed_texture": "re3D Gigabot 4 XLT_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.8 nozzle;re3D PLA @0.8 nozzle;re3D PC @0.8 nozzle", "printable_area": [ "0x0", "590x0", diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT.json b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT.json index fcad038e3d..fd7858de60 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4 XLT.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4 XLT.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D Gigabot 4 XLT_buildplate_texture.svg", "hotend_model": "GB-HOTEND.stl", - "default_materials": "re3D PLA;re3D PETG;re3D PC;" + "default_materials": "re3D PLA @0.4 nozzle;re3D PLA @0.8 nozzle;re3D PETG @0.4 nozzle;re3D PETG @0.8 nozzle;re3D PC @0.4 nozzle;re3D PC @0.8 nozzle" } diff --git a/resources/profiles/re3D/machine/re3D Gigabot 4.json b/resources/profiles/re3D/machine/re3D Gigabot 4.json index 642fabc7d8..67531b1214 100644 --- a/resources/profiles/re3D/machine/re3D Gigabot 4.json +++ b/resources/profiles/re3D/machine/re3D Gigabot 4.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D Gigabot 4_buildplate_texture.svg", "hotend_model": "GB-HOTEND.stl", - "default_materials": "re3D PLA;re3D PETG;re3D PC;" + "default_materials": "re3D PLA @0.4 nozzle;re3D PLA @0.8 nozzle;re3D PETG @0.4 nozzle;re3D PETG @0.8 nozzle;re3D PC @0.4 nozzle;re3D PC @0.8 nozzle" } diff --git a/resources/profiles/re3D/machine/re3D GigabotX 2 XLT.json b/resources/profiles/re3D/machine/re3D GigabotX 2 XLT.json index 99800331d9..1b77360139 100644 --- a/resources/profiles/re3D/machine/re3D GigabotX 2 XLT.json +++ b/resources/profiles/re3D/machine/re3D GigabotX 2 XLT.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D GigabotX 2 XLT_buildplate_texture.svg", "hotend_model": "GBX-HOTEND.stl", - "default_materials": "re3D rPETG;re3D rPP;" + "default_materials": "re3D rPETG @0.8 nozzle;re3D rPETG @1.75 nozzle;re3D rPP @0.8 nozzle;re3D rPP @1.75 nozzle" } diff --git a/resources/profiles/re3D/machine/re3D GigabotX 2.json b/resources/profiles/re3D/machine/re3D GigabotX 2.json index 3a1db130b0..20ec4ff207 100644 --- a/resources/profiles/re3D/machine/re3D GigabotX 2.json +++ b/resources/profiles/re3D/machine/re3D GigabotX 2.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D GigabotX 2_buildplate_texture.svg", "hotend_model": "GBX-HOTEND.stl", - "default_materials": "re3D rPETG;re3D rPP;" + "default_materials": "re3D rPETG @0.8 nozzle;re3D rPETG @1.75 nozzle;re3D rPP @0.8 nozzle;re3D rPP @1.75 nozzle" } diff --git a/resources/profiles/re3D/machine/re3D Terabot 4 0.4 nozzle.json b/resources/profiles/re3D/machine/re3D Terabot 4 0.4 nozzle.json index d24ba564a2..e57e4058af 100644 --- a/resources/profiles/re3D/machine/re3D Terabot 4 0.4 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Terabot 4 0.4 nozzle.json @@ -7,7 +7,7 @@ "model_id": "TB4", "printer_model": "re3D Terabot 4", "bed_texture": "re3D Terabot 4_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.4 nozzle;re3D PLA @0.4 nozzle;re3D PC @0.4 nozzle", "printable_area": [ "0x0", "915x0", diff --git a/resources/profiles/re3D/machine/re3D Terabot 4 0.8 nozzle.json b/resources/profiles/re3D/machine/re3D Terabot 4 0.8 nozzle.json index 6255e84896..c15ac1f8b9 100644 --- a/resources/profiles/re3D/machine/re3D Terabot 4 0.8 nozzle.json +++ b/resources/profiles/re3D/machine/re3D Terabot 4 0.8 nozzle.json @@ -7,7 +7,7 @@ "model_id": "TB4", "printer_model": "re3D Terabot 4", "bed_texture": "re3D Terabot 4_buildplate_texture.svg", - "default_materials": "re3D PETG;re3D PLA;re3D PC", + "default_materials": "re3D PETG @0.8 nozzle;re3D PLA @0.8 nozzle;re3D PC @0.8 nozzle", "printable_area": [ "0x0", "915x0", diff --git a/resources/profiles/re3D/machine/re3D Terabot 4.json b/resources/profiles/re3D/machine/re3D Terabot 4.json index 725f67470e..eaca67fba0 100644 --- a/resources/profiles/re3D/machine/re3D Terabot 4.json +++ b/resources/profiles/re3D/machine/re3D Terabot 4.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D Terabot 4_buildplate_texture.svg", "hotend_model": "GB-HOTEND.stl", - "default_materials": "re3D PLA;re3D PETG;re3D PC;" + "default_materials": "re3D PLA @0.4 nozzle;re3D PLA @0.8 nozzle;re3D PETG @0.4 nozzle;re3D PETG @0.8 nozzle;re3D PC @0.4 nozzle;re3D PC @0.8 nozzle" } diff --git a/resources/profiles/re3D/machine/re3D TerabotX 2.json b/resources/profiles/re3D/machine/re3D TerabotX 2.json index f541a62ad7..177c1e05d0 100644 --- a/resources/profiles/re3D/machine/re3D TerabotX 2.json +++ b/resources/profiles/re3D/machine/re3D TerabotX 2.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "re3D TerabotX 2_buildplate_texture.svg", "hotend_model": "GBX-HOTEND.stl", - "default_materials": "re3D rPETG;re3D rPP;" + "default_materials": "re3D rPETG @0.8 nozzle;re3D rPETG @1.75 nozzle;re3D rPP @0.8 nozzle;re3D rPP @1.75 nozzle" } diff --git a/resources/web/homepage/css/dark.css b/resources/web/homepage/css/dark.css index d4950c9c80..9e72c4c2b7 100644 --- a/resources/web/homepage/css/dark.css +++ b/resources/web/homepage/css/dark.css @@ -39,7 +39,7 @@ body .BtnItem:hover { color: #efeff0; - background-color: #223C3C; + background-color: var(--row-hover); } .BtnItem:hover .LeftIcon @@ -50,7 +50,7 @@ body .BtnItemSelected { color: #efeff0; - background-color: #223C3C; + background-color: var(--row-hover); } .BtnItemSelected .LeftIcon @@ -129,12 +129,23 @@ body border: 1px solid rgba(129, 129, 131, 0.64); } -/*--- Account Sections ---*/ -.AccountSectionLabel { color: #818183; } -.OrcaAccountText { color: #efeff0; } -.AccountStatusText { color: #818183; } - -/*--- Bambu Cloud Section ---*/ -#BambuCloudHeader { color: #818183; } -#BambuCloudHeader:hover { color: #efeff0; } -.bambu-chevron svg path { stroke: currentColor; } +/*--- Account rows and account menu ---*/ +:root +{ + --row-hover : #223C3C; + --warn-color : #F07E4A; + --account-avatar-bg : #3A3A40; + --account-avatar-glyph : #7E8785; + --account-surface : #36363B; + --account-name : #EFEFF0; + --account-meta : #949494; + --account-border : #4A4A51; + --account-divider : #3A3A42; + --account-action : #26A69A; + --account-danger : #FF6A6A; + --account-danger-bg : rgba(225, 71, 71, 0.16); + --account-warn-bg : rgba(240, 126, 74, 0.16); /*----var(--warn-color) at 16%----*/ + --account-dot-off : #5A5A62; + --account-dot-on : #4CAF50; + --account-menu-shadow : 0 10px 28px rgba(0, 0, 0, 0.45); +} diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index e99d22ec64..950e330b86 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -41,7 +41,7 @@ html, body { .RedFont { font-size:12px; - color: #F07E4A; + color: var(--warn-color); } .LinkBtn @@ -78,129 +78,267 @@ body height: 100%; } -#LoginArea +/*------Account rows and account menu------*/ + +/*----These shadow similar tokens in global.css on purpose: global.css themes on the OS + via prefers-color-scheme, while this page themes on the dark.css link that + SwitchDarkMode() injects from the app theme, so the two can disagree.----*/ +:root { - display: flex; - flex-direction: column; - align-items: center; - flex-wrap: nowrap; - position: relative; - width:262px; + --row-hover : #BFE1DE; + --warn-color : #F07E4A; + --account-avatar-bg : #E6EBEA; + --account-avatar-glyph : #9AA5A3; + --account-surface : #FFFFFF; + --account-name : #262E30; + --account-meta : #7C8282; + --account-border : #DBDBDB; + --account-divider : #E2E4E4; + --account-action : #00796B; + --account-danger : #D33B3B; + --account-danger-bg : rgba(211, 59, 59, 0.10); + --account-warn-bg : rgba(240, 126, 74, 0.12); /*----var(--warn-color) at 12%----*/ + --account-dot-off : #C4CBCA; + --account-dot-on : #34A853; + --account-menu-shadow : 0 10px 28px rgba(20, 30, 28, 0.18); + + --glyph-account: + url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><circle cx="16" cy="12" r="5.6"/><path d="M4.9 29a11.1 11.1 0 0 1 22.2 0Z"/></svg>'); + --glyph-logout: + url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="black" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><path d="M9.5 2.5H3.5v11h6"/><path d="M11 5.5L14 8l-3 2.5"/><path d="M14 8H6.5"/></svg>'); } -.AccountSectionLabel +#LoginArea +{ + position: relative; + padding: 10px 8px; + box-sizing: border-box; + width: 262px; + border-bottom: 1px solid var(--account-divider); +} + +.AccountRow { display: flex; align-items: center; gap: 8px; - font-size: 13px; - font-weight: 600; - color: var(--fg-color-text); - padding: 16px 20px 6px; - width: 262px; - box-sizing: border-box; -} - -.AccountSectionIcon -{ - width: 18px; - height: 18px; - flex: 0 0 auto; -} - -.AccountStatusText -{ - font-size: 12px; - color: #A8A8A8; - margin-top: 8px; -} - -.OrcaAccountText -{ - font-weight: bold; -} - -#OrcaLoginSection -{ - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - width: 100%; -} - -#OrcaLogin1 -{ - display: flex; - flex-direction: column; /*ORCA*/ - align-items: center; /*Allow icon centered vertically*/ - justify-content: center; /*and use login button in new line*/ + padding: 8px 10px 8px 14px; /*----label column lines up with the navigation below----*/ + border-radius: 8px; + cursor: pointer; user-select: none; - padding: 10px 0; } -#OrcaLogin2 +.AccountRow:hover +{ + background-color: var(--row-hover); +} + +.AccountRow:focus-visible +{ + outline: 2px solid var(--account-action); + outline-offset: -2px; +} + +.AccountRow.Disabled +{ + cursor: default; + opacity: 0.5; +} + +.AccountRow.Disabled:hover +{ + background-color: transparent; +} + +.AccountRow.Disabled .AccountSignIn { display: none; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - padding: 14px 0 16px; - box-sizing: border-box; - width: 262px; } -/* --- Bambu Cloud Section --- */ +/*----Avatar----*/ +.AccountAvatar +{ + position: relative; + flex: 0 0 auto; + width: 36px; + height: 36px; + border-radius: 50%; + background-color: var(--account-avatar-bg); +} + +.AccountAvatar::before /* placeholder shown until an avatar image loads */ +{ + content: ""; + position: absolute; + inset: 0; + -webkit-mask-image: var(--glyph-account); + mask-image: var(--glyph-account); + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + background-color: var(--account-avatar-glyph); +} + +.AccountAvatarImg +{ + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; + display: block; +} + +.AccountAvatarImg:not([src]) +{ + display: none; +} + +/*----Row labels----*/ +.AccountText +{ + display: flex; + flex-direction: column; + justify-content: center; + flex: 1 1 auto; + min-width: 0; +} + +.AccountName, +.AccountSecondary /*----the provider name, or the sign-in state where the row has no name yet----*/ +{ + font-size: 15px; + line-height: 20px; + color: var(--account-name); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.AccountName +{ + display: none; + font-weight: 600; +} + +.AccountSignIn +{ + flex: 0 0 auto; + font-size: 12px; + font-weight: 600; + color: var(--account-action); +} + +.AccountChevron +{ + display: none; + flex: 0 0 auto; + width: 12px; + height: 12px; + color: var(--account-meta); + transition: transform 0.15s ease; +} + +.AccountRow.SignedIn .AccountName { display: block; } +.AccountRow.SignedIn .AccountChevron { display: block; } +.AccountRow.SignedIn .AccountSignIn { display: none; } +.AccountRow.SignedIn .AccountSecondary +{ + font-size: 11px; + line-height: 14px; + color: var(--account-meta); +} + +.AccountRow.MenuOpen .AccountChevron { transform: rotate(180deg); } + +#NoPluginTip +{ + display: none; + margin: 4px 0 2px; + padding: 8px 10px; + border-radius: 6px; + background-color: var(--account-warn-bg); +} + +#NoPluginText +{ + line-height: 16px; +} + +#NoPluginTip .LinkBtn +{ + color: var(--warn-color); + text-decoration: underline; +} + +/*----Bambu Cloud, folded under the main account----*/ #BambuCloudSection { display: none; /* shown by cloud_providers_info from backend */ - border-top: 1px solid; - width: 262px; + margin-top: 8px; + padding-top: 6px; + border-top: 1px solid var(--account-divider); } #BambuCloudHeader { - height: 40px; display: flex; align-items: center; - padding: 0 20px; - cursor: pointer; - font-size: 13px; - color: #A8A8A8; gap: 8px; + height: 28px; + padding: 0 10px 0 14px; + border-radius: 6px; + font-size: 12px; + color: var(--account-meta); + cursor: pointer; + user-select: none; } #BambuCloudHeader:hover { - color: inherit; + color: var(--account-name); } -.bambu-chevron +#BambuCloudHeader:focus-visible { + outline: 2px solid var(--account-action); + outline-offset: -2px; +} + +.SectionChevron +{ + flex: 0 0 auto; width: 12px; height: 12px; transition: transform 0.2s ease; - transform: rotate(0deg); } -.bambu-chevron.expanded +#BambuCloudHeader.Expanded .SectionChevron { transform: rotate(90deg); } -.bambu-status-dot +.SectionLabel { - width: 8px; - height: 8px; - border-radius: 50%; - background-color: #A8A8A8; - margin-left: auto; + flex: 1 1 auto; + min-width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.bambu-status-dot.online +#BambuStatusDot { - background-color: #4CAF50; + flex: 0 0 auto; + width: 7px; + height: 7px; + border-radius: 50%; + background-color: var(--account-dot-off); +} + +#BambuStatusDot.Online +{ + background-color: var(--account-dot-on); } #BambuCloudBody @@ -208,99 +346,125 @@ body max-height: 0; overflow: hidden; transition: max-height 0.25s ease; - display: flex; - flex-direction: column; - align-items: center; } -#BambuCloudBody.expanded +#BambuCloudBody.Expanded { max-height: 200px; + padding-bottom: 2px; } -#NoPluginTip +.AccountRowCompact { - position: static; - display: none; - flex-direction: column; - padding: 5px 10px; - z-index: auto; + padding: 6px 10px 6px 24px; } -#BambuLogin1 +.AccountRowCompact .AccountAvatar { - padding: 10px 0; + width: 26px; + height: 26px; } -#BambuLogin2 +.AccountRowCompact .AccountName, +.AccountRowCompact .AccountSecondary { - display: none; - flex-direction: column; - align-items: center; - text-align: center; - padding: 8px 0; - width: 262px; -} - -#BambuAvatarIcon -{ - height: 40px; - border-radius: 50%; -} - -#BambuUserName -{ - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 80%; - text-align: center; font-size: 13px; + line-height: 17px; } - -#DownloadBtn +.AccountRowCompact .AccountSecondary { - color:#00ffd9; + color: var(--account-meta); } - -#Icon1 +.AccountRowCompact.SignedIn .AccountSecondary /*----the section header already names this provider----*/ { - margin-right: 10px; + display: none; } -#BBLIcon +/*----Account menu----*/ +#AccountMenu { - height:96px; /*ORCA use bigger icon to fit logo size*/ + display: none; + position: absolute; + left: 8px; + right: 8px; + z-index: 20; + padding: 4px; + border-radius: 10px; + border: 1px solid var(--account-border); + background-color: var(--account-surface); + box-shadow: var(--account-menu-shadow); } -#UserAvatarIcon +#AccountMenu.Open { - width: 64px; - height: 64px; display: block; - margin: 2px auto 10px; - object-fit: cover; - border-radius: 50%; + animation: AccountMenuIn 0.12s ease-out; } -#UserName +@keyframes AccountMenuIn { + from { opacity: 0; transform: translateY(-4px); } + to { opacity: 1; transform: none; } +} + +@media (prefers-reduced-motion: reduce) +{ + #AccountMenu.Open { animation: none; } + .AccountChevron, + .SectionChevron, + #BambuCloudBody { transition: none; } +} + +#AccountMenuHandle +{ + display: none; + padding: 9px 10px; + border-bottom: 1px solid var(--account-border); + font-size: 12px; + line-height: 16px; + color: var(--account-meta); white-space: nowrap; + overflow: hidden; text-overflow: ellipsis; - text-align: center; - overflow: hidden; - width: 80%; - max-width: 190px; - line-height: 22px; } -#LogoutBtn +#AccountMenuLogout { - margin-top: 8px; + display: flex; + align-items: center; + gap: 8px; + height: 34px; + padding: 0 10px; + border-radius: 6px; + font-size: 13px; + color: var(--account-name); + cursor: pointer; } +#AccountMenuLogout:hover +{ + background-color: var(--account-danger-bg); + color: var(--account-danger); +} + +#AccountMenuLogout:focus-visible +{ + outline: 2px solid var(--account-action); + outline-offset: -2px; +} + +#AccountMenuLogoutIcon +{ + width: 15px; + height: 15px; + -webkit-mask: var(--glyph-logout) center / contain no-repeat; + mask: var(--glyph-logout) center / contain no-repeat; + background-color: currentColor; +} + + /*------------------*/ #BtnArea { @@ -320,12 +484,12 @@ body .BtnItem:hover { - background-color: #BFE1DE; /*ORCA color with %25 opacity*/ + background-color: var(--row-hover); } .BtnItemSelected { - background-color: #BFE1DE; /*ORCA color with %25 opacity*/ + background-color: var(--row-hover); } .BtnIcon @@ -552,7 +716,8 @@ body background-color: #E4E4E4; border-radius: 8px; width: 184px; - height: 184px; + height: 184px; + position: relative; } .FileItem img @@ -564,6 +729,19 @@ body object-fit: cover; } +.FileImg .FileLogoBadge +{ + position: absolute; + top: 8px; + left: 8px; + width: 26px; + height: 26px; + padding: 2px; + box-sizing: border-box; + background-color: rgba(255,255,255,0.85); + border-radius: 50%; +} + .FileName { white-space: nowrap; @@ -572,6 +750,35 @@ body word-break: break-all; } +.FileNamePack +{ + display: flex; + align-items: center; + min-width: 0; + overflow: hidden; +} + +.FileNamePack .FileName +{ + flex: 1 1 auto; + min-width: 0; +} + +.FilePublishedBadge +{ + flex: 0 0 auto; + margin-right: 4px; + padding: 0 4px; + height: 16px; + line-height: 16px; + font-size: 10px; + font-weight: 600; + color: #FFFFFF; + background-color: #009688; + border-radius: 2px; + white-space: nowrap; +} + .FileDate { color: #A8A8A8; diff --git a/resources/web/homepage/img/c.jpg b/resources/web/homepage/img/c.jpg deleted file mode 100644 index 50c5883ca0..0000000000 Binary files a/resources/web/homepage/img/c.jpg and /dev/null differ diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html index 24eb8285a7..bc5f83311b 100644 --- a/resources/web/homepage/index.html +++ b/resources/web/homepage/index.html @@ -23,56 +23,65 @@ <div id="LeftBoard"> <div id="LoginArea"> - <!-- Orca Login Section --> - <div id="OrcaSectionLabel" class="AccountSectionLabel"> - <img class="AccountSectionIcon" src="../../images/OrcaSlicer_gradient_circle.svg" alt="" /> - <span class="trans OrcaAccountText" tid="orca7">Orca Cloud</span> - </div> - - <div id="OrcaLoginSection"> - <div id="OrcaLogin1"> - <div id="Icon1"><img id="BBLIcon" src="../image/logo.png" /></div> <!-- ORCA use square icon for better consistency on UI --> - <div id="LoginBtn" class="ButtonStyleRegular ButtonTypeWindow" onClick="OnLoginOrRegister()"><span class="trans" tid="t26">login</span> / <span class="trans" tid="t27">register</span></div> - <div id="OrcaStatusText" class="AccountStatusText trans" tid="orca8">Not signed in</div> - </div> - - <div id="OrcaLogin2"> - <div> - <img id="UserAvatarIcon" src="img/c.jpg" onerror="this.onerror=null;this.src='img/c.jpg';" /> - </div> - <div id="UserName" class="TextS1"></div> - <div id="LogoutBtn" class="ButtonStyleAlert ButtonTypeWindow trans" tid="t50" onClick="OnLogOut()">log out</div> - </div> - </div> - - <!-- Bambu Cloud Section --> - <div id="BambuCloudSection"> - <div id="BambuCloudHeader" onClick="ToggleBambuSection()"> - <svg class="bambu-chevron" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M4.5 2.5L8 6L4.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> + <!-- Orca Cloud account --> + <div id="OrcaAccount" class="AccountRow" tabindex="0" role="button" aria-haspopup="true" aria-expanded="false" + onClick="OnAccountRowClick('orca')"> + <span class="AccountAvatar"> + <img id="UserAvatarIcon" class="AccountAvatarImg" alt="" onerror="OnAvatarLoadError(this)" /> + </span> + <span class="AccountText"> + <span id="UserName" class="AccountName"></span> + <span class="AccountSecondary">Orca Cloud</span> + </span> + <span class="AccountSignIn trans" tid="t26">Login</span> + <svg class="AccountChevron" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> + <path d="M3 4.75L6 7.75L9 4.75" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/> </svg> - <span class="trans" tid="orca6">Bambu Cloud</span> - <span class="bambu-status-dot"></span> </div> - <div id="BambuCloudBody"> - <div id="BambuLogin1"> - <div id="BambuLoginBtn" class="ButtonStyleRegular ButtonTypeWindow" onClick="OnBambuLoginOrRegister()"><span class="trans" tid="t26">login</span></div> + <!-- Bambu Cloud, a secondary provider folded away under the main account --> + <div id="BambuCloudSection"> + <div id="BambuCloudHeader" tabindex="0" role="button" aria-expanded="false" aria-controls="BambuCloudBody" + onClick="ToggleBambuSection()"> + <svg class="SectionChevron" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> + <path d="M4.5 2.5L8 6L4.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> + </svg> + <span class="SectionLabel trans" tid="orca6">Bambu Cloud</span> + <span id="BambuStatusDot"></span> </div> - <div id="BambuLogin2"> - <div> - <img id="BambuAvatarIcon" src="img/c.jpg" onerror="this.onerror=null;this.src='img/c.jpg';" /> + <div id="BambuCloudBody"> + <div id="BambuAccount" class="AccountRow AccountRowCompact" tabindex="0" role="button" aria-haspopup="true" aria-expanded="false" + onClick="OnAccountRowClick('bambu')"> + <span class="AccountAvatar"> + <img id="BambuAvatarIcon" class="AccountAvatarImg" alt="" onerror="OnAvatarLoadError(this)" /> + </span> + <span class="AccountText"> + <span id="BambuUserName" class="AccountName"></span> + <span class="AccountSecondary trans" tid="orca8">Not signed in</span> + </span> + <span class="AccountSignIn trans" tid="t26">Login</span> + <svg class="AccountChevron" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> + <path d="M3 4.75L6 7.75L9 4.75" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/> + </svg> </div> - <div id="BambuUserName" class="TextS1"></div> - <div id="BambuLogoutBtn" class="ButtonStyleAlert ButtonTypeWindow trans" tid="t50" onClick="OnBambuLogOut()">log out</div> - </div> - <div id="NoPluginTip"> - <div id="NoPluginText"><a class="RedFont trans" tid="t76">Network plugin not detected. Click </a><a Class="LinkBtn trans" onClick="BeginDownloadNetworkPlugin()" tid="t77">here</a><a class="RedFont trans" tid="t78"> to install it.</a></div> + <div id="NoPluginTip"> + <div id="NoPluginText"><a class="RedFont trans" tid="t76">Network plugin not detected. Click </a><a Class="LinkBtn trans" onClick="BeginDownloadNetworkPlugin()" tid="t77">here</a><a class="RedFont trans" tid="t78"> to install it.</a></div> + </div> + </div> + </div> + + <!-- Shared account menu, anchored under the row it was opened from. + The row already carries the avatar, name and provider, so the menu only + adds the account handle. --> + <div id="AccountMenu" role="menu"> + <div id="AccountMenuHandle" role="presentation"></div> + <div id="AccountMenuLogout" role="menuitem" tabindex="0" onClick="OnAccountMenuLogout()"> + <span id="AccountMenuLogoutIcon"></span> + <span class="trans" tid="t50">Log out</span> </div> </div> - </div> </div> diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index f522c44bed..aee0d8cd37 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -1,7 +1,6 @@ //var TestData={"sequence_id":"0","command":"get_recent_projects","response":[{"path":"D:\\work\\Models\\Toy\\3d-puzzle-cube-model_files\\3d-puzzle-cube.3mf","time":"2022\/3\/24 20:33:10"},{"path":"D:\\work\\Models\\Art\\Carved Stone Vase - remeshed+drainage\\Carved Stone Vase.3mf","time":"2022\/3\/24 17:11:51"},{"path":"D:\\work\\Models\\Art\\Kity & Cat\\Cat.3mf","time":"2022\/3\/24 17:07:55"},{"path":"D:\\work\\Models\\Toy\\鐩村墤.3mf","time":"2022\/3\/24 17:06:02"},{"path":"D:\\work\\Models\\Toy\\minimalistic-dual-tone-whistle-model_files\\minimalistic-dual-tone-whistle.3mf","time":"2022\/3\/22 21:12:22"},{"path":"D:\\work\\Models\\Toy\\spiral-city-model_files\\spiral-city.3mf","time":"2022\/3\/22 18:58:37"},{"path":"D:\\work\\Models\\Toy\\impossible-dovetail-puzzle-box-model_files\\impossible-dovetail-puzzle-box.3mf","time":"2022\/3\/22 20:08:40"}]}; var m_HotModelList=null; -var bambuSectionExpanded = false; function OnInit() { @@ -12,6 +11,8 @@ function OnInit() SendMsg_GetBambuLoginInfo(); SendMsg_GetRecentFile(); SendMsg_GetStaffPick(); + + Set_AccountMenu_Event(); } //------最佳打开文件的右键菜单功能---------- @@ -89,7 +90,7 @@ function HandleStudio( pVal ) if (strCmd == "get_recent_projects") { ShowRecentFileList(pVal["response"]); } else if (strCmd == "orca_userlogin") { - SetOrcaLoginInfo(pVal["data"]["avatar"], pVal["data"]["name"]); + SetOrcaLoginInfo(pVal["data"]["avatar"], pVal["data"]["name"], pVal["data"]["account"]); } else if (strCmd == "orca_useroffline") { SetOrcaUserOffline(); } else if (strCmd == "studio_bambu_userlogin") { @@ -118,21 +119,12 @@ function HandleStudio( pVal ) $("#LeftBoard").hide(); } } else if (strCmd == "network_plugin_installtip") { - let nShow = pVal["show"] * 1; + // Bambu Cloud is unreachable without the network plugin, so its row only carries the tip. + let bMissing = pVal["show"] * 1 == 1; - if (nShow == 1) { - // Auto-expand Bambu section to show the tip - if (!bambuSectionExpanded) ToggleBambuSection(); - $("#BambuLogin1").hide(); - $("#NoPluginTip").show(); - $("#NoPluginTip").css("display", "flex"); - } else { - $("#NoPluginTip").hide(); - // Only restore login button if not already logged in - if ($("#BambuLogin2").is(":hidden")) { - $("#BambuLogin1").show(); - } - } + $("#NoPluginTip").css("display", bMissing ? "block" : "none"); + $("#BambuAccount").toggleClass("Disabled", bMissing).attr("aria-disabled", bMissing ? "true" : null); + if (bMissing) SetBambuSectionExpanded(true, false); } else if (strCmd == "modelmall_model_advise_get") { //alert('hot'); if (m_HotModelList != null) { @@ -170,34 +162,128 @@ function GotoMenu( strMenu ) } } -function SetOrcaLoginInfo( strAvatar, strName ) -{ - $("#OrcaLogin1").hide(); - $("#OrcaStatusText").hide(); +/*------Account rows------*/ - $("#UserName").text(strName); +/*----Everything that differs between the two cloud providers lives here----*/ +var AccountRows = { + orca: { row: "#OrcaAccount", name: "#UserName", avatar: "#UserAvatarIcon", dot: null, + loginCmd: "homepage_orca_login_or_register", logoutCmd: "homepage_orca_logout" }, + bambu: { row: "#BambuAccount", name: "#BambuUserName", avatar: "#BambuAvatarIcon", dot: "#BambuStatusDot", + loginCmd: "homepage_bambu_login_or_register", logoutCmd: "homepage_bambu_logout" } +}; - let OriginAvatar=$("#UserAvatarIcon").prop("src"); - if(strAvatar != null && strAvatar.trim() !== '' && strAvatar!=OriginAvatar) - $("#UserAvatarIcon").prop("src",strAvatar); - else - { - //alert('Avatar is Same'); - } +var BAMBU_FOLD_KEY = "OrcaHome_BambuCloudExpanded"; - $("#OrcaLogin2").show(); - $("#OrcaLogin2").css("display","flex"); +var m_OpenAccountMenu = null; + +function SetAccountAvatar(selector, strAvatar) { + if (strAvatar != null && strAvatar.trim() !== '') { + if ($(selector).attr("src") !== strAvatar) $(selector).attr("src", strAvatar); + } else { + $(selector).removeAttr("src"); + } } -function SetOrcaUserOffline() -{ - $("#UserAvatarIcon").prop("src","img/c.jpg"); - $("#UserName").text(''); - $("#OrcaLogin2").hide(); +function OnAvatarLoadError(img) { + img.removeAttribute("src"); // fall back to the placeholder glyph +} - $("#OrcaLogin1").show(); - $("#OrcaLogin1").css("display","flex"); - $("#OrcaStatusText").show(); +function SetAccountSignedIn(strProvider, strAvatar, strName, strHandle) { + var account = AccountRows[strProvider]; + + $(account.name).text(strName).attr("title", strName); /*----long names are ellipsized----*/ + SetAccountAvatar(account.avatar, strAvatar); + /*----the handle is the one thing the row does not already show----*/ + $(account.row).addClass("SignedIn").data("handle", strHandle !== strName ? strHandle : null); + $(account.dot).addClass("Online"); + + if (m_OpenAccountMenu === strProvider) OpenAccountMenu(strProvider); +} + +function SetAccountSignedOut(strProvider) { + var account = AccountRows[strProvider]; + + if (m_OpenAccountMenu === strProvider) CloseAccountMenu(); + $(account.name).text('').removeAttr("title"); + SetAccountAvatar(account.avatar, null); + $(account.row).removeClass("SignedIn").removeData("handle"); + $(account.dot).removeClass("Online"); +} + +function OnAccountRowClick(strProvider) { + var account = AccountRows[strProvider]; + var row = $(account.row); + if (row.hasClass("Disabled")) return; + + if (!row.hasClass("SignedIn")) { + CloseAccountMenu(); + SendSimpleCommand(account.loginCmd); + } else if (m_OpenAccountMenu === strProvider) { + CloseAccountMenu(); + } else { + OpenAccountMenu(strProvider); + } +} + +function OpenAccountMenu(strProvider) { + var account = AccountRows[strProvider]; + var row = $(account.row); + var top = row[0].offsetTop + row[0].offsetHeight + 6; /*----read the geometry before writing----*/ + var strHandle = row.data("handle") || ""; + + $("#AccountMenuHandle").text(strHandle).css("display", strHandle === "" ? "none" : "block"); + $("#AccountMenu").css("top", top + "px").addClass("Open"); + $(".AccountRow").removeClass("MenuOpen").attr("aria-expanded", "false"); + row.addClass("MenuOpen").attr("aria-expanded", "true"); + m_OpenAccountMenu = strProvider; +} + +function CloseAccountMenu() { + $("#AccountMenu").removeClass("Open"); + $(".AccountRow").removeClass("MenuOpen").attr("aria-expanded", "false"); + m_OpenAccountMenu = null; +} + +function OnAccountMenuLogout() { + var account = AccountRows[m_OpenAccountMenu]; + CloseAccountMenu(); + if (account) SendSimpleCommand(account.logoutCmd); +} + +/*----Bambu Cloud is secondary, so its account folds away under the main one----*/ +function SetBambuSectionExpanded(bExpanded, bPersist) { + $("#BambuCloudBody").toggleClass("Expanded", bExpanded); + $("#BambuAccount").attr("tabindex", bExpanded ? "0" : "-1"); /*----keep the folded row out of the tab order----*/ + $("#BambuCloudHeader").toggleClass("Expanded", bExpanded).attr("aria-expanded", bExpanded ? "true" : "false"); + if (!bExpanded && m_OpenAccountMenu === "bambu") CloseAccountMenu(); + // Best effort: the fold is a per-machine convenience, not a synced preference. + if (bPersist) { try { localStorage.setItem(BAMBU_FOLD_KEY, bExpanded ? "1" : "0"); } catch (e) {} } +} + +function ToggleBambuSection() { + SetBambuSectionExpanded(!$("#BambuCloudBody").hasClass("Expanded"), true); +} + +function Set_AccountMenu_Event() { + var bExpanded = false; + try { bExpanded = localStorage.getItem(BAMBU_FOLD_KEY) === "1"; } catch (e) {} + SetBambuSectionExpanded(bExpanded, false); + + $(document).mousedown(function (e) { + if (m_OpenAccountMenu === null) return; + if ($(e.target).closest("#AccountMenu, .AccountRow").length === 0) CloseAccountMenu(); + }); + + $(document).keydown(function (e) { + if (m_OpenAccountMenu !== null && e.key === "Escape") CloseAccountMenu(); + }); + + /*----Enter and Space activate the div-based buttons of this panel----*/ + $(document).on("keydown", "#LoginArea [role=button], #LoginArea [role=menuitem]", function (e) { + if (e.key !== "Enter" && e.key !== " " && e.key !== "Spacebar") return; + e.preventDefault(); + this.click(); + }); } function SetMallUrl( strUrl ) @@ -219,15 +305,19 @@ function ShowRecentFileList( pList ) let sImg=OneFile["image"] || sImages[sPath]; let sTime=OneFile['time']; let sName=OneFile['project_name']; + let sPublished=OneFile['published'] == '1'; sImages[sPath] = sImg; //let index=sPath.lastIndexOf('\\')>0?sPath.lastIndexOf('\\'):sPath.lastIndexOf('\/'); //let sShortName=sPath.substring(index+1,sPath.length); + let sBadge=sPublished? '<span class="FilePublishedBadge">PUB</span>':''; + let sLogoBadge=sPublished? '<img class="FileLogoBadge" src="../../images/OrcaSlicer_gradient_circle.svg" alt="" />':''; + let TmpHtml='<div class="FileItem" fpath="'+sPath+'" >'+ '<a class="FileTip" title="'+sPath+'"></a>'+ - '<div class="FileImg" ><img src="'+sImg+'" onerror="this.onerror=null;this.src=\'img/d.png\';" alt="No Image" /></div>'+ - '<div class="FileName TextS1">'+sName+'</div>'+ + '<div class="FileImg" ><img src="'+sImg+'" onerror="this.onerror=null;this.src=\'img/d.png\';" alt="No Image" />'+sLogoBadge+'</div>'+ + '<div class="FileNamePack">'+sBadge+'<div class="FileName TextS1">'+sName+'</div></div>'+ '<div class="FileDate">'+sTime+'</div>'+ '</div>'; @@ -279,8 +369,6 @@ function SendSimpleCommand(command) { SendWXMessage(JSON.stringify(tSend)); } -function OnOrcaLoginOrRegister() { SendSimpleCommand("homepage_orca_login_or_register"); } -function OnOrcaLogOut() { SendSimpleCommand("homepage_orca_logout"); } function SendMsg_GetOrcaLoginInfo() { SendSimpleCommand("get_orca_login_info"); } @@ -294,15 +382,6 @@ function SendMsg_GetRecentFile() } -function OnLoginOrRegister() -{ - var tSend={}; - tSend['sequence_id']=Math.round(new Date() / 1000); - tSend['command']="homepage_login_or_register"; - - SendWXMessage( JSON.stringify(tSend) ); -} - function OnClickModelDepot() { var tSend={}; @@ -405,59 +484,13 @@ function OnExploreRecentFile( ) $("#recnet_context_menu").hide(); } -function OnLogOut() -{ - var tSend={}; - tSend['sequence_id']=Math.round(new Date() / 1000); - tSend['command']="homepage_logout"; +// --- Cloud providers --- - SendWXMessage( JSON.stringify(tSend) ); -} +function SetOrcaLoginInfo(strAvatar, strName, strAccount) { SetAccountSignedIn("orca", strAvatar, strName, strAccount); } +function SetOrcaUserOffline() { SetAccountSignedOut("orca"); } +function SetBambuLoginInfo(strAvatar, strName) { SetAccountSignedIn("bambu", strAvatar, strName, null); } +function SetBambuUserOffline() { SetAccountSignedOut("bambu"); } -// --- Bambu Cloud Section --- - -function ToggleBambuSection() { - var body = document.getElementById('BambuCloudBody'); - var chevron = document.querySelector('.bambu-chevron'); - if (!body || !chevron) return; - bambuSectionExpanded = !bambuSectionExpanded; - if (bambuSectionExpanded) { - body.classList.add('expanded'); - chevron.classList.add('expanded'); - } else { - body.classList.remove('expanded'); - chevron.classList.remove('expanded'); - } -} - -function SetBambuLoginInfo(strAvatar, strName) { - $("#BambuLogin1").hide(); - $("#BambuUserName").text(strName); - if (strAvatar && strAvatar.trim() !== '') { - $("#BambuAvatarIcon").prop("src", strAvatar); - } - $("#BambuLogin2").show(); - $("#BambuLogin2").css("display", "flex"); - $(".bambu-status-dot").addClass("online"); - $("#BambuStatusText").text("Connected"); - $("#BambuStatusText").attr("tid", "orca11"); -} - -function SetBambuUserOffline() { - $("#BambuAvatarIcon").prop("src", "img/c.jpg"); - $("#BambuUserName").text(''); - $("#BambuLogin2").hide(); - if ($("#NoPluginTip").is(":hidden")) { - $("#BambuLogin1").show(); - $("#BambuLogin1").css("display", "flex"); - } - $(".bambu-status-dot").removeClass("online"); - $("#BambuStatusText").text("Not connected"); - $("#BambuStatusText").attr("tid", "orca10"); -} - -function OnBambuLoginOrRegister() { SendSimpleCommand("homepage_bambu_login_or_register"); } -function OnBambuLogOut() { SendSimpleCommand("homepage_bambu_logout"); } function SendMsg_GetBambuLoginInfo() { SendSimpleCommand("get_bambu_login_info"); } function BeginDownloadNetworkPlugin() diff --git a/scripts/assign_vendor_setting_ids.py b/scripts/assign_vendor_setting_ids.py deleted file mode 100644 index 8ed607f591..0000000000 --- a/scripts/assign_vendor_setting_ids.py +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env python3 -""" -Assign deterministic, globally-unique setting_id to OrcaSlicer system profiles. - -Policy (see AGENTS.md "Critical Constraints"): - * A preset's setting_id is a pure function of its identity: - setting_id = base62_16( uuid5(NAMESPACE, "<vendor>/<type>/<name>") ) - The same value is recomputed on the fly by the C++ app - (Slic3r::generate_preset_setting_id); the two MUST stay byte-identical. The rule - (generate_preset_setting_id, below) is also imported by the validator - (orca_extra_profile_check.py). Uniqueness is therefore automatic: two presets - collide only if they share vendor + type + name, which the validator flags. - * Bambu (BBL) owns the authoritative "G*" id space and is the only reserved vendor: - its ids are never rewritten (preserves backward-compat with Bambu-synced presets). - Every other vendor - including OrcaFilamentLibrary and Custom - follows the - deterministic rule. - * Only instantiated presets (instantiation == "true") carry a setting_id; base / - template profiles do not. - -Only setting_id is rewritten. filament_id is deliberately left untouched: it is a -per-material id, shared across a filament's nozzle variants and inherited from base -templates, so it must not be made per-file unique. - -Run from anywhere: python3 scripts/assign_vendor_setting_ids.py -The script is idempotent: a second run over an unchanged tree produces no diff. -""" - -import json -import os -import re -import sys -import uuid - - -# Deterministic preset setting_id rule. Imported by the validator -# (orca_extra_profile_check.py) and kept byte-identical to the C++ -# Slic3r::generate_preset_setting_id. Dedicated namespace, distinct from the cloud -# namespace (f47ac10b-...) so the two id spaces never coincide; this constant is baked -# into both languages - never change it. -NAMESPACE = uuid.UUID("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f") -ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" -ID_LENGTH = 16 - - -def generate_preset_setting_id(vendor, type_name, name): - """Deterministic 16-char base62 setting_id for a preset. - - input = f"{vendor}/{type_name}/{name}"; u = uuid5(NAMESPACE, input); - id = the low ID_LENGTH base62 digits of int(u.bytes, "big"), most-significant first. - """ - u = uuid.uuid5(NAMESPACE, f"{vendor}/{type_name}/{name}") - n = int.from_bytes(u.bytes, "big") - digits = [] - for _ in range(ID_LENGTH): - digits.append(ALPHABET[n % 62]) - n //= 62 - return "".join(reversed(digits)) - - -PROFILES_DIR = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "resources", "profiles")) - -# Bambu (BBL) is the only reserved vendor: it keeps its authoritative "G*" cloud ids. -RESERVED_VENDORS = {"BBL"} - -PROFILE_SUBDIRS = ("filament", "process", "machine") - - -def iter_profile_files(vendor_dir): - """Yield (json path, type) under a vendor, in a deterministic order. - - type is the subdir name ("filament"/"process"/"machine"), which matches - Preset::get_type_string() on the C++ side. - """ - for sub in PROFILE_SUBDIRS: - base = os.path.join(vendor_dir, sub) - if not os.path.isdir(base): - continue - for root, dirs, files in os.walk(base): - dirs.sort() # deterministic traversal across filesystems - for name in sorted(files): - if name.endswith(".json"): - yield os.path.join(root, name), sub - - -def read_profile(path): - """Return (setting_id, instantiation, name) as present (or None).""" - try: - with open(path, "rb") as f: - data = json.loads(f.read()) - except (ValueError, OSError): - return None, None, None - if not isinstance(data, dict): - return None, None, None - return data.get("setting_id"), data.get("instantiation"), data.get("name") - - -def list_vendors(): - return sorted( - d for d in os.listdir(PROFILES_DIR) - if os.path.isdir(os.path.join(PROFILES_DIR, d)) - ) - - -_JSON_STR = r'"(?:[^"\\]|\\.)*"' - - -def remove_key_line(text, key): - """Remove a top-level `"key": "..."` member, preserving formatting. - - Handles both the common case (member has a trailing comma) and the member - being the LAST in its object (consume the preceding comma instead, so no - dangling comma is left). Returns (new_text, count). - """ - # Member followed by a comma (not the last in the object). - trailing = re.compile( - r'[ \t]*"' + re.escape(key) + r'"[ \t]*:[ \t]*' + _JSON_STR + r'[ \t]*,[ \t]*\r?\n' - ) - new, n = trailing.subn("", text, count=1) - if n: - return new, n - # Member is the last one: drop the preceding comma and the member itself. - leading = re.compile( - r',[ \t]*\r?\n[ \t]*"' + re.escape(key) + r'"[ \t]*:[ \t]*' + _JSON_STR - ) - return leading.subn("", text, count=1) - - -def _remove_key_in_tree(key, should_remove): - """Remove `key` from files where should_remove(sid, inst, text) is True.""" - removed = 0 - for vendor in list_vendors(): - for path, _type in iter_profile_files(os.path.join(PROFILES_DIR, vendor)): - with open(path, "rb") as f: - text = f.read().decode("utf-8") - sid, inst, _name = read_profile(path) - if not should_remove(sid, inst, text): - continue - new_text, n = remove_key_line(text, key) - if n == 0: - raise RuntimeError(f"Could not locate {key} line to remove: {path}") - json.loads(new_text) # fail loudly if removal broke the JSON - with open(path, "wb") as f: - f.write(new_text.encode("utf-8")) - removed += 1 - return removed - - -def remove_misspelled_settings_id(): - """Delete the misspelled "settings_id" key (extra "s") wherever it appears. - - The app never reads that key, so those presets effectively had no setting_id - and get a correct one assigned by the normal pass; here we drop the junk key. - """ - return _remove_key_in_tree( - "settings_id", lambda sid, inst, text: '"settings_id"' in text - ) - - -def strip_base_setting_ids(): - """Remove setting_id from every base profile (instantiation != "true"). - - Convention: only instantiated, user-selectable presets carry a setting_id; - base/template profiles do not. Applied across all vendors. - """ - return _remove_key_in_tree( - "setting_id", lambda sid, inst, text: bool(sid) and inst != "true" - ) - - -def replace_id_value(text, key, new_value): - """Replace the first top-level `"key": "..."` value, preserving all formatting.""" - pattern = re.compile(r'("' + re.escape(key) + r'"\s*:\s*)"(?:[^"\\]|\\.)*"') - repl = lambda m: m.group(1) + json.dumps(new_value, ensure_ascii=False) - new_text, n = pattern.subn(repl, text, count=1) - return new_text, n - - -def insert_setting_id(text, new_id): - """Insert a `"setting_id"` line into a preset that lacks one. - - Placed just before `filament_id` (or, failing that, `instantiation`) so it - matches the canonical key order, reusing that anchor line's indentation and - line ending. Only setting_id is added; filament_id is left untouched. - """ - for key in ("filament_id", "instantiation"): - m = re.search(r'^([ \t]*)"' + key + r'"[ \t]*:.*?(\r?\n)', text, re.MULTILINE) - if m: - line = f'{m.group(1)}"setting_id": {json.dumps(new_id, ensure_ascii=False)},{m.group(2)}' - return text[:m.start()] + line + text[m.start():], 1 - return text, 0 - - -def rewrite_file(path, new_id, has_setting_id): - """Set the preset's setting_id to new_id (replacing or inserting as needed). - - filament_id is intentionally left untouched. Uses binary IO so the file's - original line endings (LF or CRLF) and exact formatting are preserved - byte-for-byte apart from the changed/added line. The result is re-parsed to - guarantee it is still valid JSON. - """ - with open(path, "rb") as f: - text = f.read().decode("utf-8") - if has_setting_id: - text, n = replace_id_value(text, "setting_id", new_id) - else: - text, n = insert_setting_id(text, new_id) - if n == 0: - raise RuntimeError(f"Could not set setting_id on {path}") - json.loads(text) # fail loudly if the edit broke the JSON - with open(path, "wb") as f: - f.write(text.encode("utf-8")) - return True - - -def main(): - # 0. Drop the misspelled "settings_id" key wherever it appears. - typos = remove_misspelled_settings_id() - - # 1. Strip setting_id from base profiles everywhere (only instantiated presets keep one). - stripped = strip_base_setting_ids() - - # 2. Assign the deterministic setting_id to every instantiated preset of every - # non-reserved vendor. - changed = added = 0 - vendors_touched = [] - for vendor in list_vendors(): - if vendor in RESERVED_VENDORS: - continue - vendor_changed = 0 - for path, type_name in iter_profile_files(os.path.join(PROFILES_DIR, vendor)): - sid, inst, name = read_profile(path) - if inst != "true": - continue - if not name: - raise RuntimeError(f"instantiated preset has no \"name\": {path}") - new_id = generate_preset_setting_id(vendor, type_name, name) - if sid == new_id: - continue # already correct - idempotent - rewrite_file(path, new_id, has_setting_id=sid is not None) - changed += 1 - vendor_changed += 1 - if sid is None: - added += 1 - if vendor_changed: - vendors_touched.append((vendor, vendor_changed)) - - print(f"Misspelled settings_id removed : {typos}") - print(f"Base setting_ids stripped : {stripped}") - print(f"Reserved vendors : {sorted(RESERVED_VENDORS)}") - print(f"Vendors updated : {len(vendors_touched)}") - for v, n in vendors_touched: - print(f" {v} ({n} files)") - print(f"Files rewritten : {changed} (of which newly assigned: {added})") - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/scripts/build_flatpak_with_docker.sh b/scripts/build_flatpak_with_docker.sh index 9e8805af2f..eedfe53692 100755 --- a/scripts/build_flatpak_with_docker.sh +++ b/scripts/build_flatpak_with_docker.sh @@ -122,6 +122,9 @@ sed "/name: OrcaSlicer/{ \1 git_commit_hash: \"$GIT_COMMIT_HASH\"| }" > "$MANIFEST_DOCKER" +# ---------- pack deps/ ---------- +./scripts/flatpak/make_deps_tar.sh + # ---------- run build in Docker ---------- DOCKER="${DOCKER:-docker}" diff --git a/scripts/check_profile.bat b/scripts/check_profile.bat new file mode 100644 index 0000000000..e92f9fe0e8 --- /dev/null +++ b/scripts/check_profile.bat @@ -0,0 +1,8 @@ +@echo off +REM Runs check_profile.ps1, the Windows twin of check_profile.sh, from cmd. +REM Arguments are passed straight through, so anything the .ps1 takes works here: +REM scripts\check_profile.bat -Vendor Elegoo validate_custom +REM -ExecutionPolicy Bypass is needed because a Windows client defaults to Restricted, +REM which refuses to run a checked-out .ps1 at all. +powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0check_profile.ps1" %* +exit /b %ERRORLEVEL% diff --git a/scripts/check_profile.ps1 b/scripts/check_profile.ps1 new file mode 100644 index 0000000000..66ed33c31d --- /dev/null +++ b/scripts/check_profile.ps1 @@ -0,0 +1,689 @@ +<# +.SYNOPSIS + Local twin of the "Check profiles" CI job (.github/workflows/check_profiles.yml), for Windows. + +.DESCRIPTION + The Windows counterpart of scripts/check_profile.sh, and kept deliberately close to it. + + Runs the same five checks, in the same order, with the same validator flags, and with the + same semantics: every check runs even after an earlier one fails (the workflow's + continue-on-error), then the script exits non-zero once at the end. + + extra_json_check scripts/orca_extra_profile_check.py + validate_system validator -p <profiles> -l <level> + validate_slice validator -p <profiles> -s -l <level> + validate_filament_subtypes validator -p <profiles> -l <level> -f + validate_custom validator against every released custom-preset fixture + + Everything that has to be downloaded - the profile validator and the custom-preset fixture + archives - lands under <repo>\.test\check_profiles and is reused on the next run. That + directory also holds one log per check plus a copy of the comment CI would post on the PR. + + resources\profiles\user, which the validator creates as its data dir but a CI checkout never + has, is moved aside for the duration of the run and restored on exit. Only one run per work + dir at a time. + + -Vendor narrows a run to one vendor while working on that vendor's profiles - the one + deliberate divergence from CI, which always checks the whole tree. A check that cannot be + narrowed is left out of the run and reported as skipped. + + x64 and ARM64 hosts are both supported. A locally built validator is chosen by the machine + type in its PE header rather than by the name of its build tree, so build\ (x64) and + build-arm64\ side by side resolve correctly; the published nightly is x64 only and runs + under emulation on ARM64. + +.PARAMETER ProfilesDir + Profile tree to validate (default: resources\profiles). extra_json_check always looks at the + tree next to the script, so this only redirects the validator checks. + +.PARAMETER Vendor + Check only this vendor, named after its <Vendor>.json (e.g. "Co Print"). validate_custom is + narrowed with it too, by keeping only that vendor's presets in each fixture tree. The one + check it cannot narrow is validate_slice for a vendor that ships no printers; the summary + reports that one as skipped, and naming it explicitly still runs it. extra_json_check keeps + its two cross-vendor checks (setting_id and filament_id) tree-wide, so a scoped run can still + fail on another vendor's files. + +.PARAMETER Validator + OrcaSlicer_profile_validator.exe to use; also $env:ORCA_PROFILE_VALIDATOR. Default: the local + build*\ Release build (then RelWithDebInfo, MinSizeRel, Debug) for this architecture, else + the nightly release build is downloaded. + +.PARAMETER Download + Ignore local builds and use the downloaded nightly validator. + +.PARAMETER Refresh + Re-download the validator and fixtures instead of using the cache. + +.PARAMETER WorkDir + Downloads, logs and fixture trees (default: .test\check_profiles). Point it somewhere short, + such as D:\t, if a fixture tree trips Windows' 260-character path limit. + +.PARAMETER LogLevel + Validator log level (default: 2, as in CI). + +.PARAMETER Checks + Checks to run, by name (default: all of them, in the order listed above). + +.EXAMPLE + scripts\check_profile.bat + +.EXAMPLE + powershell -ExecutionPolicy Bypass -File scripts\check_profile.ps1 validate_system validate_slice + +.EXAMPLE + scripts\check_profile.bat -Vendor Elegoo +#> + +# PositionalBinding is off so that the check names are the only positional arguments; left on, +# a bare "validate_system" would bind to whichever named parameter came next in this block. +[CmdletBinding(PositionalBinding = $false)] +param( + [Alias('p')] [string] $ProfilesDir, + [Alias('v')] [string] $Vendor, + [string] $Validator, + [string] $WorkDir, + [Alias('l')] [int] $LogLevel = 2, + [switch] $Download, + [switch] $Refresh, + [Alias('h')] [switch] $Help, + [Parameter(Position = 0, ValueFromRemainingArguments = $true)] [string[]] $Checks +) + +$ErrorActionPreference = 'Stop' + +# Windows PowerShell 5.1 still negotiates TLS 1.0/1.1, which github.com refuses. +[Net.ServicePointManager]::SecurityProtocol = + [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 + +$ValidatorReleaseUrl = 'https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds' +$FixtureReleaseUrl = 'https://github.com/OrcaSlicer/OrcaSlicer-profile-validator/releases/download/fixture-archive' + +$RepoRoot = Split-Path -Parent $PSScriptRoot + +# PROCESSOR_ARCHITECTURE reports the architecture of the *shell*, so a 32-bit PowerShell on a +# 64-bit OS says x86; ARCHITEW6432 is the machine's own in that case. +$HostArch = if ($env:PROCESSOR_ARCHITEW6432) { $env:PROCESSOR_ARCHITEW6432 } else { $env:PROCESSOR_ARCHITECTURE } +$HostArch = switch ($HostArch) { + 'ARM64' { 'arm64' } + 'AMD64' { 'x64' } + default { 'x86' } +} + +$AllChecks = @('extra_json_check', 'validate_system', 'validate_slice', 'validate_filament_subtypes', 'validate_custom') + +$script:LogWriter = $null +$script:Python = '' + +# ---------------------------------------------------------------------------- helpers + +function Die([string] $Message) { + Write-Host "check_profile.ps1: $Message" -ForegroundColor Red + exit 2 +} + +# UTF-8 without a BOM, so a log reads the same here as the artifact CI uploads. +function New-LogWriter([string] $Path) { + New-Object IO.StreamWriter($Path, $false, (New-Object Text.UTF8Encoding($false))) +} + +# Output of the check being run: shown, and kept in that check's log. +function Write-CheckLog([string] $Text) { + Write-Host $Text + if ($script:LogWriter) { $script:LogWriter.WriteLine($Text) } +} + +# Runs a program and returns its exit code, streaming stdout and stderr into the current check's +# log. -OutFile sends that output to a file of its own instead, silently. +function Invoke-Tool { + param([string] $Exe, [string[]] $Arguments, [string] $OutFile) + + # Under 'Stop', 2>&1 turns every stderr line of a native command into a terminating error. + # Assigning the preference here scopes it to this function, so it undoes itself on return. + $ErrorActionPreference = 'Continue' + + $writer = if ($OutFile) { New-LogWriter $OutFile } else { $null } + try { + & $Exe @Arguments 2>&1 | ForEach-Object { + if ($writer) { $writer.WriteLine("$_") } else { Write-CheckLog "$_" } + } + return $LASTEXITCODE + } catch { + if ($writer) { $writer.WriteLine("$_") } else { Write-CheckLog "$_" } + return 1 + } finally { + if ($writer) { $writer.Dispose() } + } +} + +# The first $Limit characters of a log, as CI truncates them for the PR comment. +function Get-LogHead([string] $Path, [int] $Limit) { + $text = if (Test-Path -LiteralPath $Path) { [IO.File]::ReadAllText($Path) } else { '' } + if (-not $text) { return 'No output captured' } + if ($text.Length -gt $Limit) { return $text.Substring(0, $Limit) } + return $text +} + +# ---------------------------------------------------------------------------- arguments + +if ($Help) { Get-Help $PSCommandPath -Detailed; exit 0 } + +foreach ($name in $Checks) { + if ($name -like '-*') { Die "unknown option '$name' (try -Help)" } + if ($AllChecks -notcontains $name) { Die "unknown check '$name' (try -Help)" } +} +# A check named on the command line always runs; only the default set is narrowed (see the run +# loop below). +$NamedChecks = [bool] $Checks +if (-not $Checks) { $Checks = $AllChecks } + +if (-not $ProfilesDir) { $ProfilesDir = Join-Path $RepoRoot 'resources\profiles' } +if (-not (Test-Path -LiteralPath $ProfilesDir -PathType Container)) { Die "profile directory not found: $ProfilesDir" } +$ProfilesDir = (Resolve-Path -LiteralPath $ProfilesDir).Path + +# A vendor neither tool knows is not an error to them: the static checks load nothing of their own +# and still report success, so a typo would otherwise be three green checks and one baffling slice +# failure. The match has to be made on the names themselves rather than with a Test-Path - the +# validator compares the <Vendor>.json stem case-sensitively, while Windows' case-insensitive +# filesystem would let "creality" pass a path test and then match no vendor. A vendor is a +# <name>.json with a sibling <name> directory; that pair is also what tells one apart from +# blacklist.json, which sits in the same folder. +if ($Vendor) { + $found = $false + $suggestion = '' + foreach ($file in (Get-ChildItem -LiteralPath $ProfilesDir -Filter '*.json' -File)) { + $name = [IO.Path]::GetFileNameWithoutExtension($file.Name) + if (-not (Test-Path -LiteralPath (Join-Path $ProfilesDir $name) -PathType Container)) { continue } + if ($name -ceq $Vendor) { $found = $true; break } + if ($name -eq $Vendor) { $suggestion = $name } + } + if (-not $found) { + if ($suggestion) { Die "unknown vendor '$Vendor'; vendor names are case-sensitive, did you mean '$suggestion'?" } + Die "unknown vendor '$Vendor': no such vendor in $ProfilesDir" + } +} + +# The validator's -v and orca_extra_profile_check.py's --vendor both take that stem; an unscoped +# run passes neither, so the checks below splat these in either way. +$VendorArgs = if ($Vendor) { @('-v', $Vendor) } else { @() } +$VendorPyArgs = if ($Vendor) { @('--vendor', $Vendor) } else { @() } + +if (-not $WorkDir) { $WorkDir = Join-Path $RepoRoot '.test\check_profiles' } +$LogDir = Join-Path $WorkDir 'logs' +try { New-Item -ItemType Directory -Force -Path $LogDir | Out-Null } catch { Die "cannot create ${LogDir}: $_" } +$WorkDir = (Resolve-Path -LiteralPath $WorkDir).Path +$LogDir = Join-Path $WorkDir 'logs' + +if (-not $Validator) { $Validator = $env:ORCA_PROFILE_VALIDATOR } + +# ------------------------------------------------------------------- clean profile tree + +# The validator points its data dir at the profile tree, so it creates - and, with -g, fills - +# <profiles>\user. A CI checkout never has that directory, and anything left in it from an +# earlier local run would be loaded as user presets and validated too. Move it aside for the +# duration of the run so what gets checked is what CI checks. +$script:StashedUserDir = '' + +function Push-UserPresets { + $user = Join-Path $ProfilesDir 'user' + if (-not (Test-Path -LiteralPath $user -PathType Container)) { return } + $script:StashedUserDir = Join-Path $WorkDir "user-presets-$PID" + Remove-Item -LiteralPath $script:StashedUserDir -Recurse -Force -ErrorAction SilentlyContinue + try { Move-Item -LiteralPath $user -Destination $script:StashedUserDir } + catch { $script:StashedUserDir = ''; Die "cannot move $user aside: $_" } + Write-Host "moved $user aside for the run (restored on exit)" +} + +function Pop-UserPresets { + # The validator leaves an empty user\default\{filament,machine,process} skeleton behind. + # Prune it directory by directory, never wholesale: one that holds a real file survives and + # is reported instead of being deleted. Runs even when nothing was stashed, so a tree that + # had no user\ before the run does not gain one. + $user = Join-Path $ProfilesDir 'user' + Remove-EmptyDirs $user + if (-not $script:StashedUserDir) { return } + if (Test-Path -LiteralPath $user) { + Write-Host "$user is not empty; your presets stay in $($script:StashedUserDir)" + } else { + Move-Item -LiteralPath $script:StashedUserDir -Destination $user + } + $script:StashedUserDir = '' +} + +function Remove-EmptyDirs([string] $Path) { + if (-not (Test-Path -LiteralPath $Path -PathType Container)) { return } + Get-ChildItem -LiteralPath $Path -Recurse -Directory -Force | + Sort-Object { $_.FullName.Length } -Descending | + ForEach-Object { + if (-not (Get-ChildItem -LiteralPath $_.FullName -Force)) { + Remove-Item -LiteralPath $_.FullName -Force + } + } + if (-not (Get-ChildItem -LiteralPath $Path -Force)) { Remove-Item -LiteralPath $Path -Force } +} + +# ---------------------------------------------------------------------------- downloads + +# Cached; -Refresh, or -Force, pulls a new copy. Release assets never change, so caching them is +# safe; the fixture manifest is the index that grows with every release, and CI re-reads it on +# every run. +function Save-Asset { + param([string] $Url, [string] $Dest, [switch] $Force) + + if (-not $Refresh -and -not $Force -and (Test-Path -LiteralPath $Dest -PathType Leaf) -and + (Get-Item -LiteralPath $Dest).Length -gt 0) { + return + } + New-Item -ItemType Directory -Force -Path (Split-Path -Parent $Dest) | Out-Null + Write-Host "downloading $(Split-Path -Leaf $Dest) ..." + + # Invoke-WebRequest spends most of a large download repainting its progress bar. + $ProgressPreference = 'SilentlyContinue' + $part = "$Dest.part" + for ($attempt = 1; ; $attempt++) { + try { + Invoke-WebRequest -Uri $Url -OutFile $part -UseBasicParsing + break + } catch { + if ($attempt -ge 3) { + Remove-Item -LiteralPath $part -Force -ErrorAction SilentlyContinue + throw "download failed: $Url" + } + } + } + Move-Item -LiteralPath $part -Destination $Dest -Force +} + +function Get-Sha256([string] $Path) { + return (Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash +} + +# Directories a built validator can sit in, best first: build_win.bat names its trees build, +# build-dbginfo, build-minsize and build-dbg, each optionally -clang and -arm64 suffixed, and +# CMake puts the binary in src\<config>. Each pattern is matched both directly under a build root +# and one level down (build\x64), for trees laid out the way the macOS ones are. +function Get-ValidatorSearchDirs { + foreach ($config in 'Release', 'RelWithDebInfo', 'MinSizeRel', 'Debug') { + Join-Path $RepoRoot "build*\src\$config" + Join-Path $RepoRoot "build*\*\src\$config" + } + Join-Path $RepoRoot 'build*\src' + Join-Path $RepoRoot 'build*\*\src' +} + +# The machine type from the PE header, which is what actually decides whether an .exe can run +# here - the name of the build tree only says what it was meant to be. +function Get-ExeArch([string] $Path) { + try { + $stream = [IO.File]::OpenRead($Path) + try { + $reader = New-Object IO.BinaryReader($stream) + $stream.Position = 0x3C # e_lfanew: offset of the PE header + $stream.Position = $reader.ReadInt32() + if ($reader.ReadUInt32() -ne 0x00004550) { return '' } # "PE\0\0" + switch ($reader.ReadUInt16()) { + 0x8664 { 'x64' } + 0xAA64 { 'arm64' } + 0x014C { 'x86' } + default { '' } + } + } finally { $stream.Dispose() } + } catch { '' } +} + +# First locally built OrcaSlicer_profile_validator.exe, in the order above. An x86 build, and on +# ARM64 an x64 one, is kept only as a fallback: it runs, but emulated. An ARM64 build on an x64 +# host does not run at all and is never offered. +function Find-LocalValidator { + $emulated = '' + foreach ($pattern in (Get-ValidatorSearchDirs)) { + foreach ($dir in @(Resolve-Path -Path $pattern -ErrorAction SilentlyContinue)) { + $candidate = Join-Path $dir.Path 'OrcaSlicer_profile_validator.exe' + if (-not (Test-Path -LiteralPath $candidate -PathType Leaf)) { continue } + $arch = Get-ExeArch $candidate + if (-not $arch -or $arch -eq $HostArch) { return $candidate } + if (-not $emulated -and ($arch -eq 'x86' -or $HostArch -eq 'arm64')) { $emulated = $candidate } + } + } + if ($emulated) { Write-Host "no $HostArch build found, falling back to $emulated (emulated)" } + return $emulated +} + +# The nightly release build, same one CI uses. Windows ships the bare .exe, x64 only. +function Save-NightlyValidator { + if ($HostArch -ne 'x64') { + Write-Host "the nightly Windows validator is x64; it runs here under emulation" + } + $exe = Join-Path $WorkDir 'validator\OrcaSlicer_profile_validator.exe' + Save-Asset -Url "$ValidatorReleaseUrl/OrcaSlicer_profile_validator_Windows_nightly.exe" -Dest $exe + return $exe +} + +function Resolve-Validator { + if ($Validator) { + if (-not (Test-Path -LiteralPath $Validator -PathType Leaf)) { Die "validator not found: $Validator" } + return (Resolve-Path -LiteralPath $Validator).Path + } + if (-not $Download) { + $local = Find-LocalValidator + if ($local) { + Write-Host "using locally built validator: $local" + return $local + } + } + try { $downloaded = Save-NightlyValidator } catch { Die "could not obtain a profile validator: $_" } + Write-Host "using downloaded validator: $downloaded" + return $downloaded +} + +# python3 is rarely on PATH on Windows: the py launcher is the reliable way in, and a bare +# `python` may be the Store stub, which prints an advert and exits non-zero. Probe each for the +# interpreter it actually resolves to, and use that. +function Resolve-Python { + $ErrorActionPreference = 'Continue' + if ($script:Python) { return $script:Python } + foreach ($candidate in 'py -3', 'python', 'python3') { + $words = $candidate -split ' ' + $exe = Get-Command $words[0] -CommandType Application -ErrorAction SilentlyContinue | Select-Object -First 1 + if (-not $exe) { continue } + $leading = @($words | Select-Object -Skip 1) + $found = & $exe.Source @leading -c 'import sys; print(sys.executable)' 2>$null + if ($LASTEXITCODE -eq 0 -and $found) { + $script:Python = "$found" + return $script:Python + } + } + Die 'no Python 3 found; install it (or the py launcher) and re-run' +} + +# The fixtures name every preset "<vendor>_<parent preset>_orca_test", after the "name" inside +# <Vendor>.json rather than the file stem -Vendor takes - BBL.json is "Bambulab", iQ.json is +# "innovatiQ". Falls back to the stem for a vendor file with no readable name. +function Get-VendorDisplayName { + $name = '' + try { $name = (Get-Content -LiteralPath (Join-Path $ProfilesDir "$Vendor.json") -Raw -ErrorAction Stop | ConvertFrom-Json).name } catch { } + if ($name) { return "$name" } + return $Vendor +} + +# Unpack just the presets one vendor's profiles own, and return how many that was. Each fixture +# preset was generated from a single system preset and inherits it by name - none inherits another +# user preset - so the selection is self-contained. +function Expand-VendorPresets([string] $Zip, [string] $Tree, [string] $Prefix) { + # .NET rather than Expand-Archive: a fixture holds around 20,000 entries, and unpacking every + # one of them to keep a twentieth costs more than the validation this is speeding up. + Add-Type -AssemblyName System.IO.Compression.FileSystem + $kept = 0 + $archive = [IO.Compression.ZipFile]::OpenRead($Zip) + try { + foreach ($entry in $archive.Entries) { + # A directory entry has an empty Name, so it never matches and is never created. + if (-not $entry.Name.StartsWith($Prefix, [StringComparison]::Ordinal)) { continue } + $dest = Join-Path $Tree $entry.FullName.Replace('/', [IO.Path]::DirectorySeparatorChar) + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($dest)) | Out-Null + [IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $dest, $true) + $kept++ + } + } finally { + $archive.Dispose() + } + return $kept +} + +# ---------------------------------------------------------------------------- checks + +$CheckBodies = @{ + + extra_json_check = { + Invoke-Tool -Exe (Resolve-Python) -Arguments (@((Join-Path $RepoRoot 'scripts\orca_extra_profile_check.py')) + $VendorPyArgs) + } + + validate_system = { + Invoke-Tool -Exe $Validator -Arguments (@('-p', $ProfilesDir) + $VendorArgs + @('-l', "$LogLevel")) + } + + # Slices a two-colour cube through every printer so all custom g-code (incl. + # change_filament_gcode) is expanded - catches undefined-placeholder / invalid-flow bugs the + # static checks cannot see. + validate_slice = { + Invoke-Tool -Exe $Validator -Arguments (@('-p', $ProfilesDir) + $VendorArgs + @('-s', '-l', "$LogLevel")) + } + + validate_filament_subtypes = { + Invoke-Tool -Exe $Validator -Arguments (@('-p', $ProfilesDir) + $VendorArgs + @('-l', "$LogLevel", '-f')) + } + + # Every released fixture is a snapshot of user presets saved by that OrcaSlicer version; each + # is unpacked over the current system profiles and validated, so a profile change that would + # break an existing user's presets fails here. + # + # Under -Vendor only that vendor's presets are unpacked, which is what makes the validator's + # -v usable here: -v filters the system vendors but never the user presets, so on a whole-tree + # snapshot it reports every other vendor's presets as unresolvable parents - thousands of + # errors saying nothing about the vendor under test. Teaching -v to filter user presets too is + # the deeper fix, but this runs against whatever validator is to hand, the published nightly + # included, so the picking has to happen here. It picks on the "<vendor display name>_" + # filename prefix that generate_custom_presets() (the validator's -g mode) gave every preset in + # these fixtures; a fixture cut from a renamed generator would surface as the "checked nothing" + # warning below. Presets whose source had no vendor carry no prefix - a few of those still name + # one in the middle, like "PET @BBL A1_orca_test" - and only an unscoped run covers them. + validate_custom = { + $fixturesDir = Join-Path $WorkDir 'profile-fixtures' + $outputDir = Join-Path $WorkDir 'custom-preset-validation' + New-Item -ItemType Directory -Force -Path $fixturesDir, $outputDir | Out-Null + + $manifestPath = Join-Path $fixturesDir 'manifest.json' + Save-Asset -Url "$FixtureReleaseUrl/manifest.json" -Dest $manifestPath -Force + + $manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json + $entries = if ($manifest -is [array]) { $manifest } else { $manifest.fixtures } + $fixtures = @($entries | Where-Object { $_.version -and $_.asset }) + if (-not $fixtures) { + Write-CheckLog "No custom preset fixtures found in $FixtureReleaseUrl/manifest.json" + return 1 + } + + $vendorPrefix = if ($Vendor) { "$(Get-VendorDisplayName)_" } else { '' } + $totalKept = 0 + $status = 0 + $failedLogs = @() + $summary = @('## Custom Preset Fixture Validation', '', '| Version | Status | Log |', '| --- | --- | --- |') + + foreach ($fixture in $fixtures) { + $version = $fixture.version + $asset = $fixture.asset + $fixtureZip = Join-Path $fixturesDir $asset + $profileTree = Join-Path $outputDir "profiles-$version" + $logPath = Join-Path $outputDir "$version.log" + $assetUrl = "$FixtureReleaseUrl/$([uri]::EscapeDataString($asset))" + + Save-Asset -Url $assetUrl -Dest $fixtureZip + + $expected = $fixture.asset_sha256 + if ($expected -and $expected -ne '<sha256>' -and (Get-Sha256 $fixtureZip) -ne $expected.ToUpperInvariant()) { + # A cached zip can be stale or truncated; the release asset itself is immutable, + # so deleting it forces Save-Asset to pull a fresh copy. + Write-Host "checksum mismatch for $asset, re-downloading" + Remove-Item -LiteralPath $fixtureZip -Force + Save-Asset -Url $assetUrl -Dest $fixtureZip + $actual = Get-Sha256 $fixtureZip + if ($actual -ne $expected.ToUpperInvariant()) { + Write-CheckLog "${asset}: expected $expected, got $actual" + return 1 + } + } + + Write-Host "validating custom presets from $version ..." + Remove-Item -LiteralPath $profileTree -Recurse -Force -ErrorAction SilentlyContinue + New-Item -ItemType Directory -Force -Path $profileTree | Out-Null + # Piped rather than copied through <profiles>\*, so a vendor directory whose name + # holds a wildcard character is still copied by its literal path. Under -Vendor the + # validator opens only that vendor and OrcaFilamentLibrary and skips the other sixty-odd + # (PresetBundle::load_system_presets_from_json), so the rest are left out of the copy: + # ~3s a fixture that was going on files nothing opens. + Get-ChildItem -LiteralPath $ProfilesDir -Force | + Where-Object { -not $Vendor -or -not $_.PSIsContainer -or $_.Name -eq $Vendor -or $_.Name -eq 'OrcaFilamentLibrary' } | + Copy-Item -Destination $profileTree -Recurse -Force + Remove-Item -LiteralPath (Join-Path $profileTree 'user') -Recurse -Force -ErrorAction SilentlyContinue + if ($Vendor) { + $kept = Expand-VendorPresets $fixtureZip $profileTree $vendorPrefix + $totalKept += $kept + Write-CheckLog " $kept $Vendor preset file(s)" + } else { + Expand-Archive -LiteralPath $fixtureZip -DestinationPath $profileTree -Force + } + + $result = Invoke-Tool -Exe $Validator -Arguments (@('-p', $profileTree) + $VendorArgs + @('-l', "$LogLevel")) -OutFile $logPath + if ($result -eq 0) { + $summary += "| $version | PASS | $version.log |" + # Only failures are worth keeping; each tree is a full copy of resources\profiles. + Remove-Item -LiteralPath $profileTree -Recurse -Force + } else { + $summary += "| $version | FAIL | $version.log |" + $failedLogs += $logPath + $status = 1 + } + } + + # A vendor added after the newest fixture was cut appears in none of them: nothing failed, + # but nothing was checked either. + if ($Vendor -and $totalKept -eq 0) { + Write-CheckLog "no $Vendor presets in any fixture; validate_custom checked nothing" + } + + [IO.File]::WriteAllLines((Join-Path $outputDir 'summary.md'), [string[]] $summary) + $summary | ForEach-Object { Write-CheckLog $_ } + + if ($failedLogs) { + Write-CheckLog '' + Write-CheckLog '## Failed Fixture Logs' + foreach ($logPath in $failedLogs) { + Write-CheckLog '' + Write-CheckLog "### $([IO.Path]::GetFileNameWithoutExtension($logPath))" + Write-CheckLog '```' + Write-CheckLog (Get-LogHead $logPath 12000) + Write-CheckLog '```' + } + } + return $status + } +} + +# Heading CI puts above this check's log in the PR comment. +$CommentHeadings = @{ + extra_json_check = '### Extra JSON Check Failed' + validate_system = '### System Profile Validation Failed' + validate_slice = '### Slice Validation Failed (custom g-code expansion)' + validate_filament_subtypes = '### Filament Subtype Validation Failed' + validate_custom = '### Custom Preset Validation Failed' +} + +# ---------------------------------------------------------------------------- run + +function Invoke-Check([string] $Name) { + $log = Join-Path $LogDir "$Name.log" + Write-Host '' + Write-Host "==> $Name$(if ($Vendor) { " ($Vendor)" })" -ForegroundColor Cyan + + $script:LogWriter = New-LogWriter $log + try { + $result = & $CheckBodies[$Name] | Select-Object -Last 1 + } catch { + Write-CheckLog "$_" + $result = 1 + } finally { + $script:LogWriter.Dispose() + $script:LogWriter = $null + } + + if ([int] $result -eq 0) { + Write-Host " $Name passed" -ForegroundColor Green + return $true + } + Write-Host " $Name failed (exit $result)" -ForegroundColor Red + return $false +} + +# The fixture trees under the work dir are shared scratch space keyed by fixture version, so a +# second run would delete a tree the first one is validating. +$LockDir = Join-Path $WorkDir '.lock' +try { New-Item -ItemType Directory -Path $LockDir -ErrorAction Stop | Out-Null } +catch { Die "another run is using $WorkDir (pass -WorkDir, or remove $LockDir if no run is active)" } + +# The validator writes UTF-8, but PowerShell decodes a child process's output using the console +# code page, which mangles the accented and CJK preset names in its messages. +$PreviousOutputEncoding = [Console]::OutputEncoding + +try { + [Console]::OutputEncoding = New-Object Text.UTF8Encoding($false) + Push-UserPresets + + if ($Checks | Where-Object { $_ -ne 'extra_json_check' }) { $Validator = Resolve-Validator } + + # An empty printer set is a failure to the sweep, so validate_slice is recorded as skipped + # rather than run for a vendor that ships no printers (the filament-only OrcaFilamentLibrary); + # naming the check explicitly still runs it. + $results = [ordered] @{} + $skipReasons = @{} + foreach ($name in $AllChecks) { + if ($Checks -notcontains $name) { continue } + if ($name -eq 'validate_slice' -and -not $NamedChecks -and $Vendor -and + -not (Test-Path -LiteralPath (Join-Path (Join-Path $ProfilesDir $Vendor) 'machine') -PathType Container)) { + $results[$name] = 'skip' + $skipReasons[$name] = "$Vendor ships no printers" + } else { + $results[$name] = if (Invoke-Check $name) { 'pass' } else { 'fail' } + } + } + + Write-Host '' + Write-Host '==> summary' -ForegroundColor Cyan + foreach ($name in $results.Keys) { + switch ($results[$name]) { + 'pass' { Write-Host " PASS $name" -ForegroundColor Green } + 'skip' { Write-Host " SKIP $name ($($skipReasons[$name]))" -ForegroundColor Yellow } + default { Write-Host " FAIL $name ($(Join-Path $LogDir "$name.log"))" -ForegroundColor Red } + } + } + + $failed = @($results.Keys | Where-Object { $results[$_] -eq 'fail' }) + if (-not $failed) { + Remove-Item -LiteralPath (Join-Path $WorkDir 'pr_comment.md') -Force -ErrorAction SilentlyContinue + Write-Host '' + if (@($results.Values) -contains 'skip') { + Write-Host "Every check that ran passed, but CI runs the skipped ones too. Logs: $LogDir" -ForegroundColor Green + } else { + Write-Host "All checks passed. Logs: $LogDir" -ForegroundColor Green + } + exit 0 + } + + # The comment check_profiles_comment.yml would post when something fails. + $comment = @( + # Marker matched by check_profiles_comment.yml to delete prior comments. + '<!-- profile-validation-comment -->' + '## :x: Profile Validation Errors' + '' + foreach ($name in $failed) { + $CommentHeadings[$name] + '' + '```' + Get-LogHead (Join-Path $LogDir "$name.log") 30000 + '```' + '' + } + '---' + '*Please fix the above errors and push a new commit.*' + ) + $commentPath = Join-Path $WorkDir 'pr_comment.md' + [IO.File]::WriteAllLines($commentPath, [string[]] $comment) + + Write-Host '' + Write-Host "One or more profile checks failed. Logs: $LogDir" -ForegroundColor Red + Write-Host "The comment CI would post: $commentPath" + exit 1 +} finally { + Pop-UserPresets + Remove-Item -LiteralPath $LockDir -Force -ErrorAction SilentlyContinue + [Console]::OutputEncoding = $PreviousOutputEncoding +} diff --git a/scripts/check_profile.sh b/scripts/check_profile.sh new file mode 100755 index 0000000000..51c8599b60 --- /dev/null +++ b/scripts/check_profile.sh @@ -0,0 +1,646 @@ +#!/usr/bin/env bash +# +# Local twin of the "Check profiles" CI job (.github/workflows/check_profiles.yml). +# +# Runs the same five checks, in the same order, with the same validator flags, and with the +# same semantics: every check runs even after an earlier one fails (the workflow's +# continue-on-error), then the script exits non-zero once at the end. +# +# Everything that has to be downloaded - the profile validator and the custom-preset fixture +# archives - lands under <repo>/.test/check_profiles/ and is reused on the next run. That +# directory also holds one log per check plus a copy of the comment CI would post on the PR. +# +# resources/profiles/user, which the validator creates as its data dir but a CI checkout never +# has, is moved aside for the duration of the run and restored on exit. Only one run per work +# dir at a time. +# +# -v/--vendor narrows a run to one vendor while working on that vendor's profiles - the one +# deliberate divergence from CI, which always checks the whole tree. A check that cannot be +# narrowed is left out of the run and reported as skipped; see usage(). +# +# Usage: scripts/check_profile.sh [OPTION]... [CHECK]... + +# The check_* functions run through run_check, which dispatches on the check name, so +# ShellCheck cannot see that they (and what they call) are used. +# shellcheck disable=SC2329 + +set -uo pipefail + +VALIDATOR_RELEASE_URL="https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds" +FIXTURE_RELEASE_URL="https://github.com/OrcaSlicer/OrcaSlicer-profile-validator/releases/download/fixture-archive" + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" + +HOST_ARCH="$(uname -m)" + +PROFILES_DIR="${REPO_ROOT}/resources/profiles" +WORK_DIR="${REPO_ROOT}/.test/check_profiles" +VALIDATOR="${ORCA_PROFILE_VALIDATOR:-}" +# Vendor to check, named after its <Vendor>.json - empty means every vendor, which is exactly what +# both the validator's -v and orca_extra_profile_check.py's --vendor take an empty value to mean. +# So the flag is passed unconditionally below rather than kept in an array bash 3.2 cannot expand +# empty under `set -u`. +VENDOR="" +LOG_LEVEL=2 +PREFER_DOWNLOAD=0 +REFRESH=0 + +ALL_CHECKS=(extra_json_check validate_system validate_slice validate_filament_subtypes validate_custom) +CHECKS=() +# "<check><TAB>pass|fail" per check that ran, plus "<check><TAB>skip<TAB>why" for one a vendor +# scope left out; a string rather than an array because bash 3.2 (still the /bin/bash on macOS) +# cannot expand an empty array under `set -u`. +RESULTS="" + +usage() { + cat <<EOF +Run the profile checks from .github/workflows/check_profiles.yml locally. + +Usage: scripts/check_profile.sh [OPTION]... [CHECK]... + +Checks (default: all, in this order): + extra_json_check scripts/orca_extra_profile_check.py + validate_system validator -p <profiles> -l <level> + validate_slice validator -p <profiles> -s -l <level> + validate_filament_subtypes validator -p <profiles> -l <level> -f + validate_custom validator against every released custom-preset fixture + +Options: + -p, --profiles DIR profile tree to validate (default: resources/profiles) + -v, --vendor NAME check only this vendor, named after its <Vendor>.json (e.g. "Co Print") + --validator BIN OrcaSlicer_profile_validator to use; also \$ORCA_PROFILE_VALIDATOR. + Default: the local build*/ Release build (then RelWithDebInfo, then + Debug) for this architecture, else the nightly release build is + downloaded for this platform + --download ignore local builds and use the downloaded nightly validator + --refresh re-download the validator and fixtures instead of using the cache + --work-dir DIR downloads, logs and fixture trees (default: .test/check_profiles) + -l, --log-level N validator log level (default: ${LOG_LEVEL}, as in CI) + -h, --help show this help + +Note: extra_json_check always looks at the tree next to the script +(<repo>/resources/profiles); --profiles only redirects the validator checks. + +Note: --vendor narrows validate_custom too, by keeping only that vendor's presets in each +fixture tree. The one check it cannot narrow is validate_slice for a vendor that ships no +printers; the summary reports that one as skipped, and naming it explicitly still runs it. +extra_json_check keeps its two cross-vendor checks (setting_id and filament_id) tree-wide, +so a scoped run can still fail on another vendor's files. +EOF +} + +msg() { printf '%s\n' "$*" >&2; } +die() { printf 'check_profile.sh: %s\n' "$*" >&2; exit 2; } + +if [ -t 1 ]; then + C_RED=$'\033[91m'; C_GREEN=$'\033[92m'; C_BOLD=$'\033[1m'; C_RESET=$'\033[0m' +else + C_RED=''; C_GREEN=''; C_BOLD=''; C_RESET='' +fi + +# ---------------------------------------------------------------------------- arguments + +while [ $# -gt 0 ]; do + case "$1" in + -h|--help) usage; exit 0 ;; + -p|--profiles) [ $# -ge 2 ] || die "$1 needs a directory"; PROFILES_DIR="$2"; shift 2 ;; + -v|--vendor) [ $# -ge 2 ] || die "$1 needs a vendor name"; VENDOR="$2"; shift 2 ;; + --validator) [ $# -ge 2 ] || die "$1 needs a path"; VALIDATOR="$2"; shift 2 ;; + --work-dir) [ $# -ge 2 ] || die "$1 needs a directory"; WORK_DIR="$2"; shift 2 ;; + -l|--log-level) [ $# -ge 2 ] || die "$1 needs a number"; LOG_LEVEL="$2"; shift 2 ;; + --download) PREFER_DOWNLOAD=1; shift ;; + --refresh) REFRESH=1; shift ;; + -*) die "unknown option '$1' (try --help)" ;; + *) + known=0 + for check in "${ALL_CHECKS[@]}"; do + [ "$1" = "${check}" ] && known=1 + done + [ "${known}" -eq 1 ] || die "unknown check '$1' (try --help)" + CHECKS[${#CHECKS[@]}]="$1" + shift + ;; + esac +done + +# A check named on the command line always runs; only the default set is narrowed (see the run +# loop below). +NAMED_CHECKS="${#CHECKS[@]}" +[ "${NAMED_CHECKS}" -gt 0 ] || CHECKS=("${ALL_CHECKS[@]}") + +[ -d "${PROFILES_DIR}" ] || die "profile directory not found: ${PROFILES_DIR}" +PROFILES_DIR="$(cd -- "${PROFILES_DIR}" && pwd)" + +# A vendor neither tool knows is not an error to them: the static checks load nothing of their own +# and still report success, so a typo would otherwise be three green checks and one baffling slice +# failure. The match has to be made on the names themselves rather than with a -f test - the +# validator compares the <Vendor>.json stem case-sensitively, while a case-insensitive filesystem +# (macOS, Windows) would let "creality" pass a file test and then match no vendor. A vendor is a +# <name>.json with a sibling <name>/ directory; that pair is also what tells one apart from +# blacklist.json, which sits in the same folder. +if [ -n "${VENDOR}" ]; then + wanted="$(printf '%s' "${VENDOR}" | tr '[:upper:]' '[:lower:]')" + found="" + suggestion="" + for file in "${PROFILES_DIR}"/*.json; do + name="${file##*/}"; name="${name%.json}" + [ -d "${PROFILES_DIR}/${name}" ] || continue + if [ "${name}" = "${VENDOR}" ]; then + found=1 + break + fi + [ "$(printf '%s' "${name}" | tr '[:upper:]' '[:lower:]')" = "${wanted}" ] && suggestion="${name}" + done + if [ -z "${found}" ]; then + [ -z "${suggestion}" ] || die "unknown vendor '${VENDOR}'; vendor names are case-sensitive, did you mean '${suggestion}'?" + die "unknown vendor '${VENDOR}': no such vendor in ${PROFILES_DIR}" + fi +fi + +LOG_DIR="${WORK_DIR}/logs" +mkdir -p "${LOG_DIR}" || die "cannot create ${LOG_DIR}" +WORK_DIR="$(cd -- "${WORK_DIR}" && pwd)" +LOG_DIR="${WORK_DIR}/logs" + +wants() { + local check + for check in "${CHECKS[@]}"; do + [ "${check}" = "$1" ] && return 0 + done + return 1 +} + +# ------------------------------------------------------------------- clean profile tree + +# The validator points its data dir at the profile tree, so it creates - and, with -g, fills - +# <profiles>/user. A CI checkout never has that directory, and anything left in it from an +# earlier local run would be loaded as user presets and validated too. Move it aside for the +# duration of the run so what gets checked is what CI checks. +STASHED_USER_DIR="" + +stash_user_presets() { + [ -d "${PROFILES_DIR}/user" ] || return 0 + STASHED_USER_DIR="${WORK_DIR}/user-presets-$$" + rm -rf "${STASHED_USER_DIR}" + mv "${PROFILES_DIR}/user" "${STASHED_USER_DIR}" || { STASHED_USER_DIR=""; die "cannot move ${PROFILES_DIR}/user aside"; } + msg "moved ${PROFILES_DIR}/user aside for the run (restored on exit)" +} + +restore_user_presets() { + # The validator leaves an empty user/default/{filament,machine,process} skeleton behind. + # Prune it with rmdir, never rm -rf: a directory that holds a real file survives and is + # reported instead of being deleted. Runs even when nothing was stashed, so a tree that had + # no user/ before the run does not gain one. + find "${PROFILES_DIR}/user" -depth -type d -exec rmdir {} + 2>/dev/null + [ -n "${STASHED_USER_DIR}" ] || return 0 + if [ -d "${PROFILES_DIR}/user" ]; then + msg "${PROFILES_DIR}/user is not empty; your presets stay in ${STASHED_USER_DIR}" + STASHED_USER_DIR="" + return 0 + fi + mv "${STASHED_USER_DIR}" "${PROFILES_DIR}/user" + STASHED_USER_DIR="" +} + +# The fixture trees under the work dir are shared scratch space keyed by fixture version, so a +# second run would delete a tree the first one is validating. +LOCK_DIR="${WORK_DIR}/.lock" +mkdir "${LOCK_DIR}" 2>/dev/null || + die "another run is using ${WORK_DIR} (pass --work-dir, or remove ${LOCK_DIR} if no run is active)" + +cleanup() { + restore_user_presets + rmdir "${LOCK_DIR}" 2>/dev/null +} + +# Installed only once the lock is ours, so a refused start never releases someone else's. +trap cleanup EXIT +trap 'cleanup; exit 130' INT TERM + +stash_user_presets + +# ---------------------------------------------------------------------------- downloads + +# fetch URL DEST [force] - cached; --refresh, or a non-empty third argument, forces a new +# download. Release assets never change, so caching them is safe; the fixture manifest is the +# index that grows with every release, and CI re-reads it on every run. +fetch() { + local url="$1" dest="$2" force="${3:-}" + if [ "${REFRESH}" -eq 0 ] && [ -z "${force}" ] && [ -s "${dest}" ]; then + return 0 + fi + mkdir -p "$(dirname -- "${dest}")" || return 1 + msg "downloading $(basename -- "${dest}") ..." + if ! curl -fsSL --retry 3 -o "${dest}.part" "${url}"; then + rm -f "${dest}.part" + msg "download failed: ${url}" + return 1 + fi + mv -f "${dest}.part" "${dest}" +} + +sha256_of() { + if command -v sha256sum >/dev/null 2>&1; then + sha256sum "$1" | cut -d' ' -f1 + elif command -v shasum >/dev/null 2>&1; then + shasum -a 256 "$1" | cut -d' ' -f1 + else + return 1 + fi +} + +# Directories a built validator can sit in, best first: every Ninja Multi-Config Release tree, +# then RelWithDebInfo, then Debug, then a single-config generator's plain src/. Each pattern is +# matched both directly under a build root (build/) and one level down (build/arm64, build/x64), +# and unmatched globs are dropped by the caller's -d test. +validator_search_dirs() { + local config + for config in Release RelWithDebInfo Debug; do + printf '%s\n' "${REPO_ROOT}"/build*/src/"${config}" "${REPO_ROOT}"/build*/*/src/"${config}" + done + printf '%s\n' "${REPO_ROOT}"/build*/src "${REPO_ROOT}"/build*/*/src +} + +# A build tree named for the other architecture (build/x86_64 on an arm64 host, build/arm64 on +# an x64 one) is a last resort: on Linux it will not run at all, on macOS it goes via Rosetta. +# Takes a repo-relative path - an absolute one would also match an arch name in the checkout path. +is_foreign_arch_dir() { + case "${HOST_ARCH}" in + arm64|aarch64) case "$1" in *x86_64*|*x86-64*|*x64*|*amd64*) return 0 ;; esac ;; + x86_64|amd64) case "$1" in *arm64*|*aarch64*) return 0 ;; esac ;; + esac + return 1 +} + +# First locally built OrcaSlicer_profile_validator, in the order above. macOS puts it in an .app +# bundle, Linux and Windows next to the other binaries. +find_local_validator() { + local dir candidate foreign="" + while IFS= read -r dir; do + [ -d "${dir}" ] || continue + for candidate in \ + "${dir}/OrcaSlicer_profile_validator" \ + "${dir}/OrcaSlicer_profile_validator.exe" \ + "${dir}/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator"; do + [ -f "${candidate}" ] && [ -x "${candidate}" ] || continue + if ! is_foreign_arch_dir "${dir#"${REPO_ROOT}"/}"; then + printf '%s\n' "${candidate}" + return 0 + fi + [ -n "${foreign}" ] || foreign="${candidate}" + done + done <<EOF +$(validator_search_dirs) +EOF + [ -n "${foreign}" ] || return 1 + msg "no ${HOST_ARCH} build found, falling back to ${foreign}" + printf '%s\n' "${foreign}" +} + +# The nightly release build, same one CI uses. Linux ships the bare binary, macOS a .dmg +# holding the signed .app, Windows an .exe. +download_validator() { + local dest="${WORK_DIR}/validator" binary dmg app mounted app_src + case "$(uname -s)" in + Linux*) + case "${HOST_ARCH}" in + arm64|aarch64) msg "the nightly Linux validator is x86_64; build it locally for ${HOST_ARCH}" ;; + esac + binary="${dest}/OrcaSlicer_profile_validator" + fetch "${VALIDATOR_RELEASE_URL}/OrcaSlicer_profile_validator_Linux_Ubuntu2404_nightly" "${binary}" || return 1 + chmod +x "${binary}" || return 1 + ;; + Darwin*) + dmg="${dest}/OrcaSlicer_profile_validator.dmg" + app="${dest}/OrcaSlicer_profile_validator.app" + binary="${app}/Contents/MacOS/OrcaSlicer_profile_validator" + fetch "${VALIDATOR_RELEASE_URL}/OrcaSlicer_profile_validator_Mac_universal_nightly.dmg" "${dmg}" || return 1 + if [ ! -x "${binary}" ] || [ "${REFRESH}" -eq 1 ]; then + mounted="${dest}/mnt" + rm -rf "${mounted}" "${app}" + mkdir -p "${mounted}" || return 1 + hdiutil attach -nobrowse -readonly -mountpoint "${mounted}" "${dmg}" >/dev/null || return 1 + app_src="$(find "${mounted}" -maxdepth 1 -name '*.app' -print 2>/dev/null | head -n 1)" + if [ -n "${app_src}" ]; then + cp -R "${app_src}" "${app}" + fi + hdiutil detach "${mounted}" >/dev/null 2>&1 + rmdir "${mounted}" 2>/dev/null + [ -x "${binary}" ] || { msg "no validator app inside ${dmg}"; return 1; } + fi + ;; + MINGW*|MSYS*|CYGWIN*) + binary="${dest}/OrcaSlicer_profile_validator.exe" + fetch "${VALIDATOR_RELEASE_URL}/OrcaSlicer_profile_validator_Windows_nightly.exe" "${binary}" || return 1 + chmod +x "${binary}" || return 1 + ;; + *) + msg "no nightly validator published for $(uname -s); build it (-DORCA_TOOLS=ON) and pass --validator" + return 1 + ;; + esac + printf '%s\n' "${binary}" +} + +resolve_validator() { + if [ -n "${VALIDATOR}" ]; then + [ -x "${VALIDATOR}" ] || die "validator not executable: ${VALIDATOR}" + return 0 + fi + if [ "${PREFER_DOWNLOAD}" -eq 0 ]; then + VALIDATOR="$(find_local_validator)" + if [ -n "${VALIDATOR}" ]; then + msg "using locally built validator: ${VALIDATOR}" + return 0 + fi + fi + VALIDATOR="$(download_validator)" || die "could not obtain a profile validator" + msg "using downloaded validator: ${VALIDATOR}" +} + +# ---------------------------------------------------------------------------- checks + +check_extra_json_check() { + python3 "${REPO_ROOT}/scripts/orca_extra_profile_check.py" --vendor "${VENDOR}" +} + +check_validate_system() { + "${VALIDATOR}" -p "${PROFILES_DIR}" -v "${VENDOR}" -l "${LOG_LEVEL}" +} + +# Slices a two-colour cube through every printer so all custom g-code (incl. change_filament_gcode) +# is expanded - catches undefined-placeholder / invalid-flow bugs the static checks cannot see. +check_validate_slice() { + "${VALIDATOR}" -p "${PROFILES_DIR}" -v "${VENDOR}" -s -l "${LOG_LEVEL}" +} + +check_validate_filament_subtypes() { + "${VALIDATOR}" -p "${PROFILES_DIR}" -v "${VENDOR}" -l "${LOG_LEVEL}" -f +} + +# The fixtures name every preset "<vendor>_<parent preset>_orca_test", after the "name" inside +# <Vendor>.json rather than the file stem --vendor takes - BBL.json is "Bambulab", iQ.json is +# "innovatiQ". Falls back to the stem for a vendor file with no readable name. +vendor_display_name() { + local name + name="$(VENDOR_JSON="${PROFILES_DIR}/${VENDOR}.json" python3 - <<'PY' +import json +import os + +try: + with open(os.environ["VENDOR_JSON"], encoding="utf-8") as fh: + print(json.load(fh).get("name", "")) +except Exception: + pass +PY +)" + printf '%s\n' "${name:-${VENDOR}}" +} + +# Every released fixture is a snapshot of user presets saved by that OrcaSlicer version; each is +# unpacked over the current system profiles and validated, so a profile change that would break +# an existing user's presets fails here. +# +# Under --vendor only that vendor's presets are unpacked, which is what makes the validator's -v +# usable here: -v filters the system vendors but never the user presets, so on a whole-tree +# snapshot it reports every other vendor's presets as unresolvable parents - thousands of errors +# saying nothing about the vendor under test. Teaching -v to filter user presets too is the deeper +# fix, but this runs against whatever validator is to hand, the published nightly included, so the +# picking has to happen here. It picks on the "<vendor display name>_" filename prefix that +# generate_custom_presets() (the validator's -g mode) gave every preset in these fixtures; a +# fixture cut from a renamed generator would surface as the "checked nothing" warning below. +# Presets whose source had no vendor carry no prefix - a few of those still name one in the +# middle, like "PET @BBL A1_orca_test" - and only an unscoped run covers them. +check_validate_custom() { + local fixtures_dir="${WORK_DIR}/profile-fixtures" + local output_dir="${WORK_DIR}/custom-preset-validation" + local summary="${output_dir}/summary.md" + local status=0 failed_logs="" vendor_prefix="" total_kept=0 + local version asset expected_sha256 asset_url fixture_zip profile_tree log_path actual_sha256 result kept + + command -v unzip >/dev/null 2>&1 || { msg "unzip is required for validate_custom"; return 1; } + [ -z "${VENDOR}" ] || vendor_prefix="$(vendor_display_name)_" + mkdir -p "${fixtures_dir}" "${output_dir}" || return 1 + + fetch "${FIXTURE_RELEASE_URL}/manifest.json" "${fixtures_dir}/manifest.json" force || return 1 + + MANIFEST_PATH="${fixtures_dir}/manifest.json" python3 - > "${fixtures_dir}/fixtures.tsv" <<'PY' +import json +import os + +with open(os.environ["MANIFEST_PATH"], encoding="utf-8") as fh: + manifest = json.load(fh) + +if isinstance(manifest, dict): + entries = manifest.get("fixtures", []) +else: + entries = manifest + +for entry in entries: + version = entry.get("version", "") + asset = entry.get("asset", "") + sha256 = entry.get("asset_sha256", "") + if not version or not asset: + continue + print(f"{version}\t{asset}\t{sha256}") +PY + + if [ ! -s "${fixtures_dir}/fixtures.tsv" ]; then + echo "No custom preset fixtures found in ${FIXTURE_RELEASE_URL}/manifest.json" + return 1 + fi + + { + echo "## Custom Preset Fixture Validation" + echo "" + echo "| Version | Status | Log |" + echo "| --- | --- | --- |" + } > "${summary}" + + while IFS=$'\t' read -r version asset expected_sha256; do + [ -n "${version}" ] || continue + fixture_zip="${fixtures_dir}/${asset}" + profile_tree="${output_dir}/profiles-${version}" + log_path="${output_dir}/${version}.log" + + asset_url="${FIXTURE_RELEASE_URL}/$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "${asset}")" + fetch "${asset_url}" "${fixture_zip}" || return 1 + + if [ -n "${expected_sha256}" ] && [ "${expected_sha256}" != "<sha256>" ]; then + actual_sha256="$(sha256_of "${fixture_zip}")" + if [ -z "${actual_sha256}" ]; then + msg "no sha256 tool available, skipping checksum of ${asset}" + elif [ "${actual_sha256}" != "${expected_sha256}" ]; then + # A cached zip can be stale or truncated; the release asset itself is immutable, + # so deleting it forces fetch to pull a fresh copy. + msg "checksum mismatch for ${asset}, re-downloading" + rm -f "${fixture_zip}" + fetch "${asset_url}" "${fixture_zip}" || return 1 + actual_sha256="$(sha256_of "${fixture_zip}")" + [ "${actual_sha256}" = "${expected_sha256}" ] || { msg "${asset}: expected ${expected_sha256}, got ${actual_sha256}"; return 1; } + fi + fi + + msg "validating custom presets from ${version} ..." + rm -rf "${profile_tree}" + mkdir -p "${profile_tree}" || return 1 + if [ -n "${VENDOR}" ]; then + # -v has the validator open this vendor and OrcaFilamentLibrary and skip the rest + # (PresetBundle::load_system_presets_from_json), and unzip's * spans '/', so one + # pattern reaches every preset type. Copying and unpacking only those turns a ~5s + # setup per fixture into ~0.5s. Naming the vendor twice, when it is the library + # itself, is not an error to cp; exit 11 is unzip's "nothing matched", which is the + # fixture-predates-the-vendor case the warning below reports. + cp -a "${PROFILES_DIR}"/*.json "${PROFILES_DIR}/${VENDOR}" \ + "${PROFILES_DIR}/OrcaFilamentLibrary" "${profile_tree}/" || return 1 + unzip -q "${fixture_zip}" "user/*/${vendor_prefix}*" -d "${profile_tree}" + result=$? + [ "${result}" -eq 0 ] || [ "${result}" -eq 11 ] || return 1 + kept="$(find "${profile_tree}/user" -type f 2>/dev/null | wc -l | tr -d ' ')" + total_kept=$((total_kept + kept)) + msg " ${kept} ${VENDOR} preset file(s)" + else + cp -a "${PROFILES_DIR}/." "${profile_tree}/" || return 1 + rm -rf "${profile_tree}/user" + unzip -q "${fixture_zip}" -d "${profile_tree}" || return 1 + fi + + "${VALIDATOR}" -p "${profile_tree}" -v "${VENDOR}" -l "${LOG_LEVEL}" > "${log_path}" 2>&1 + result=$? + + if [ "${result}" -eq 0 ]; then + echo "| ${version} | PASS | ${version}.log |" >> "${summary}" + # Only failures are worth keeping; each tree is a full copy of resources/profiles. + rm -rf "${profile_tree}" + else + echo "| ${version} | FAIL | ${version}.log |" >> "${summary}" + failed_logs="${failed_logs}${log_path}"$'\n' + status=1 + fi + done < "${fixtures_dir}/fixtures.tsv" + + # A vendor added after the newest fixture was cut appears in none of them: nothing failed, but + # nothing was checked either. + if [ -n "${VENDOR}" ] && [ "${total_kept}" -eq 0 ]; then + msg "no ${VENDOR} presets in any fixture; validate_custom checked nothing" + fi + + cat "${summary}" + if [ -n "${failed_logs}" ]; then + echo "" + echo "## Failed Fixture Logs" + while IFS= read -r log_path; do + [ -n "${log_path}" ] || continue + echo "" + echo "### $(basename "${log_path}" .log)" + echo '```' + head -c 12000 "${log_path}" || echo "No output captured" + echo '```' + done <<EOF +${failed_logs} +EOF + fi + + return "${status}" +} + +# Heading CI puts above this check's log in the PR comment. +comment_heading() { + case "$1" in + extra_json_check) echo "### Extra JSON Check Failed" ;; + validate_system) echo "### System Profile Validation Failed" ;; + validate_slice) echo "### Slice Validation Failed (custom g-code expansion)" ;; + validate_filament_subtypes) echo "### Filament Subtype Validation Failed" ;; + validate_custom) echo "### Custom Preset Validation Failed" ;; + esac +} + +# ---------------------------------------------------------------------------- run + +run_check() { + local name="$1" + local log="${LOG_DIR}/${name}.log" + local result + printf '\n%s==> %s%s%s\n' "${C_BOLD}" "${name}" "${VENDOR:+ (${VENDOR})}" "${C_RESET}" + "check_${name}" 2>&1 | tee "${log}" + result="${PIPESTATUS[0]}" + if [ "${result}" -eq 0 ]; then + printf '%s %s passed%s\n' "${C_GREEN}" "${name}" "${C_RESET}" + RESULTS="${RESULTS}${name}"$'\t'"pass"$'\n' + else + printf '%s %s failed (exit %s)%s\n' "${C_RED}" "${name}" "${result}" "${C_RESET}" + RESULTS="${RESULTS}${name}"$'\t'"fail"$'\n' + fi +} + +if wants validate_system || wants validate_slice || wants validate_filament_subtypes || wants validate_custom; then + resolve_validator +fi + +# An empty printer set is a failure to the sweep, so validate_slice is recorded as skipped rather +# than run for a vendor that ships no printers (the filament-only OrcaFilamentLibrary); naming the +# check explicitly still runs it. +for check in "${ALL_CHECKS[@]}"; do + wants "${check}" || continue + if [ "${check}" = validate_slice ] && [ "${NAMED_CHECKS}" -eq 0 ] && [ -n "${VENDOR}" ] && + [ ! -d "${PROFILES_DIR}/${VENDOR}/machine" ]; then + RESULTS="${RESULTS}${check}"$'\t'"skip"$'\t'"${VENDOR} ships no printers"$'\n' + else + run_check "${check}" + fi +done + +# Summary, plus the comment check_profiles_comment.yml would post when something fails. +failed=0 +skipped=0 +printf '\n%s==> summary%s\n' "${C_BOLD}" "${C_RESET}" +while IFS=$'\t' read -r name result why; do + [ -n "${name}" ] || continue + if [ "${result}" = "pass" ]; then + printf '%s PASS%s %s\n' "${C_GREEN}" "${C_RESET}" "${name}" + elif [ "${result}" = "skip" ]; then + printf '%s SKIP%s %s (%s)\n' "${C_BOLD}" "${C_RESET}" "${name}" "${why}" + skipped=1 + else + printf '%s FAIL%s %s (%s)\n' "${C_RED}" "${C_RESET}" "${name}" "${LOG_DIR}/${name}.log" + failed=1 + fi +done <<EOF +${RESULTS} +EOF + +if [ "${failed}" -eq 0 ]; then + rm -f "${WORK_DIR}/pr_comment.md" + if [ "${skipped}" -eq 0 ]; then + printf '\n%sAll checks passed.%s Logs: %s\n' "${C_GREEN}" "${C_RESET}" "${LOG_DIR}" + else + printf '\n%sEvery check that ran passed%s, but CI runs the skipped ones too. Logs: %s\n' \ + "${C_GREEN}" "${C_RESET}" "${LOG_DIR}" + fi + exit 0 +fi + +{ + # Marker matched by check_profiles_comment.yml to delete prior comments. + echo "<!-- profile-validation-comment -->" + echo "## :x: Profile Validation Errors" + echo "" + while IFS=$'\t' read -r name result; do + [ "${result}" = "fail" ] || continue + comment_heading "${name}" + echo "" + echo '```' + head -c 30000 "${LOG_DIR}/${name}.log" || echo "No output captured" + echo '```' + echo "" + done <<INNER +${RESULTS} +INNER + echo "---" + echo "*Please fix the above errors and push a new commit.*" +} > "${WORK_DIR}/pr_comment.md" + +printf '\n%sOne or more profile checks failed.%s Logs: %s\n' "${C_RED}" "${C_RESET}" "${LOG_DIR}" +printf 'The comment CI would post: %s\n' "${WORK_DIR}/pr_comment.md" +exit 1 diff --git a/scripts/filament_id_snapshot.json b/scripts/filament_id_snapshot.json new file mode 100644 index 0000000000..5b45e5ca7e --- /dev/null +++ b/scripts/filament_id_snapshot.json @@ -0,0 +1,7783 @@ +{ + "ids": { + "OF02UAVh": { + "filaments": [ + "Creality/Soleyin Ultra PLA" + ], + "name": "Soleyin Ultra PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OF03RK6r": { + "filaments": [ + "BBL/BETA PLA Metal" + ], + "name": "BETA PLA Metal", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF0AquDh": { + "filaments": [ + "Flashforge/FusRock S-Multi" + ], + "name": "FusRock S-Multi", + "filament_type": "PA", + "filament_vendor": "FusRock" + }, + "OF0EYBWQ": { + "filaments": [ + "BBL/addnorth PETG Flame v0" + ], + "name": "addnorth PETG Flame v0", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OF0FfcAG": { + "filaments": [ + "Anycubic/Anycubic TPU for ACE" + ], + "name": "Anycubic TPU for ACE", + "filament_type": "TPU", + "filament_vendor": "Anycubic" + }, + "OF0NgY1y": { + "filaments": [ + "BBL/COEX NYLEX PA6-CF", + "OrcaFilamentLibrary/COEX NYLEX PA6-CF" + ], + "name": "COEX NYLEX PA6-CF", + "filament_type": "PA-CF", + "filament_vendor": "COEX 3D" + }, + "OF0R5Wc7": { + "filaments": [ + "Artillery/Artillery PLA Tough" + ], + "name": "Artillery PLA Tough", + "filament_type": "PLA Tough", + "filament_vendor": "Artillery" + }, + "OF0UJcb6": { + "filaments": [ + "BBL/PolyLite PETG", + "OrcaFilamentLibrary/PolyLite PETG", + "Snapmaker/PolyLite PETG" + ], + "name": "PolyLite PETG", + "filament_type": "PETG", + "filament_vendor": "Polymaker" + }, + "OF0VpkBM": { + "filaments": [ + "Snapmaker/PolyLite PETG Translucent" + ], + "name": "PolyLite PETG Translucent", + "filament_type": "PETG", + "filament_vendor": "Polymaker" + }, + "OF0Vtzaw": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Amarillo Radiante" + ], + "name": "FilAr PETG Amarillo Radiante", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OF0b7M1z": { + "filaments": [ + "SeeMeCNC/SeeMeCNC PA-CF" + ], + "name": "SeeMeCNC PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "SeeMeCNC" + }, + "OF0c7mnL": { + "filaments": [ + "InfiMech/InfiMech ABS" + ], + "name": "InfiMech ABS", + "filament_type": "ABS", + "filament_vendor": "InfiMech" + }, + "OF0gGRWk": { + "filaments": [ + "BBL/Panchroma PLA Glow", + "OrcaFilamentLibrary/Panchroma PLA Glow", + "Snapmaker/Panchroma PLA Glow" + ], + "name": "Panchroma PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF0kCNDK": { + "filaments": [ + "BBL/Panchroma PLA Luminous", + "OrcaFilamentLibrary/Panchroma PLA Luminous", + "Snapmaker/Panchroma PLA Luminous" + ], + "name": "Panchroma PLA Luminous", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF0omtEb": { + "filaments": [ + "Snapmaker/Fiberon ASA-CF08" + ], + "name": "Fiberon ASA-CF08", + "filament_type": "ASA", + "filament_vendor": "Polymaker" + }, + "OF0pzFLc": { + "filaments": [ + "BBL/COEX PLA+Silk", + "OrcaFilamentLibrary/COEX PLA+Silk" + ], + "name": "COEX PLA+Silk", + "filament_type": "PLA", + "filament_vendor": "COEX 3D" + }, + "OF0w7OpJ": { + "filaments": [ + "Qidi/QIDI ABS Rapido 0.8 nozzle" + ], + "name": "QIDI ABS Rapido 0.8 nozzle", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OF0wBGNx": { + "filaments": [ + "BBL/Bambu ASA-CF", + "OrcaFilamentLibrary/Bambu ASA-CF" + ], + "name": "Bambu ASA-CF", + "filament_type": "ASA-CF", + "filament_vendor": "Bambu Lab" + }, + "OF0wz84w": { + "filaments": [ + "Qidi/QIDI ABS Rapido 0.6 nozzle" + ], + "name": "QIDI ABS Rapido 0.6 nozzle", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OF0yFLkY": { + "filaments": [ + "Anycubic/Anycubic ASA" + ], + "name": "Anycubic ASA", + "filament_type": "ASA", + "filament_vendor": "Anycubic" + }, + "OF112FvY": { + "filaments": [ + "Anycubic/Generic PETG Basic" + ], + "name": "Generic PETG Basic", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OF1ID4N1": { + "filaments": [ + "BBL/addnorth PA6 Addlantis" + ], + "name": "addnorth PA6 Addlantis", + "filament_type": "PA6", + "filament_vendor": "addnorth" + }, + "OF1N1qMK": { + "filaments": [ + "BBL/Panchroma PLA UV Shift", + "OrcaFilamentLibrary/Panchroma PLA UV Shift", + "Snapmaker/Panchroma PLA UV Shift" + ], + "name": "Panchroma PLA UV Shift", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF1Pke8t": { + "filaments": [ + "BBL/Overture Easy PLA", + "OrcaFilamentLibrary/Overture Easy PLA" + ], + "name": "Overture Easy PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OF1UNk9P": { + "filaments": [ + "BBL/Generic PP", + "Creality/Generic PP", + "OrcaFilamentLibrary/Generic PP", + "Tiertime/Generic PP" + ], + "name": "Generic PP", + "filament_type": "PP", + "filament_vendor": "Generic" + }, + "OF1W7c76": { + "filaments": [ + "Qidi/QIDI ASA-CF" + ], + "name": "QIDI ASA-CF", + "filament_type": "ASA-CF", + "filament_vendor": "QIDI" + }, + "OF1d7c3A": { + "filaments": [ + "Snapmaker/Snapmaker ASA" + ], + "name": "Snapmaker ASA", + "filament_type": "ASA", + "filament_vendor": "Snapmaker" + }, + "OF1dpPrW": { + "filaments": [ + "Qidi/Bambu PLA" + ], + "name": "Bambu PLA", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OF1hznGB": { + "filaments": [ + "Elegoo/Elegoo PLA PRO", + "OrcaFilamentLibrary/Elegoo PLA PRO" + ], + "name": "Elegoo PLA PRO", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OF20kXr5": { + "filaments": [ + "Elegoo/Elegoo PAHT-CF", + "OrcaFilamentLibrary/Elegoo PAHT-CF" + ], + "name": "Elegoo PAHT-CF", + "filament_type": "PA", + "filament_vendor": "Elegoo" + }, + "OF223rZv": { + "filaments": [ + "Anycubic/Anycubic ABS" + ], + "name": "Anycubic ABS", + "filament_type": "ABS", + "filament_vendor": "Anycubic" + }, + "OF2EB9Iz": { + "filaments": [ + "Volumic/Volumic ASA Ultra" + ], + "name": "Volumic ASA Ultra", + "filament_type": "ASA", + "filament_vendor": "Volumic" + }, + "OF2EK9F1": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Violeta" + ], + "name": "FilAr PLA-mate Violeta", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF2GCW1l": { + "filaments": [ + "BBL/SUNLU PETG", + "Flashforge/SUNLU PETG", + "OrcaFilamentLibrary/SUNLU PETG", + "Sovol/SUNLU PETG" + ], + "name": "SUNLU PETG", + "filament_type": "PETG", + "filament_vendor": "SUNLU" + }, + "OF2TQpOO": { + "filaments": [ + "Qidi/QIDI PLA Silk" + ], + "name": "QIDI PLA Silk", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OF2VFe4J": { + "filaments": [ + "BBL/Bambu PAHT-CF", + "OrcaFilamentLibrary/Bambu PAHT-CF" + ], + "name": "Bambu PAHT-CF", + "filament_type": "PA-CF", + "filament_vendor": "Bambu Lab" + }, + "OF2Z1nT5": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Azul Imperial" + ], + "name": "FilAr PETG Azul Imperial", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OF2hfMcG": { + "filaments": [ + "OrcaArena/Arena PLA-CF" + ], + "name": "Arena PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Orca Arena" + }, + "OF2pj5l5": { + "filaments": [ + "BBL/Overture Super PLA+", + "OrcaFilamentLibrary/Overture Super PLA+" + ], + "name": "Overture Super PLA+", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OF2xccEe": { + "filaments": [], + "name": "DREMC ASA GF", + "filament_type": "ASA", + "filament_vendor": "DREMC" + }, + "OF30Ftju": { + "filaments": [ + "Elegoo/Elegoo Rapid TPU 95A", + "OrcaFilamentLibrary/Elegoo Rapid TPU 95A" + ], + "name": "Elegoo Rapid TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Elegoo" + }, + "OF342jVN": { + "filaments": [ + "BBL/Bambu PLA Tough+" + ], + "name": "Bambu PLA Tough+", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OF3F63OE": { + "filaments": [ + "re3D/re3D PETG" + ], + "name": "re3D PETG", + "filament_type": "PETG", + "filament_vendor": "re3D" + }, + "OF3IKafc": { + "filaments": [ + "Qidi/QIDI PLA Rapido Matte" + ], + "name": "QIDI PLA Rapido Matte", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OF3OMgrI": { + "filaments": [ + "Creality/CR-Silk" + ], + "name": "CR-Silk", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OF3PDEw3": { + "filaments": [ + "BBL/BETA PLA High Speed" + ], + "name": "BETA PLA High Speed", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF3WQaKK": { + "filaments": [ + "Creality/CR-PETG" + ], + "name": "CR-PETG", + "filament_type": "PETG", + "filament_vendor": "Creality" + }, + "OF3dJf4E": { + "filaments": [ + "Volumic/Volumic PLA Ultra (Performance)" + ], + "name": "Volumic PLA Ultra (Performance)", + "filament_type": "PLA", + "filament_vendor": "Volumic" + }, + "OF3fwO8b": { + "filaments": [ + "FlyingBear/FlyingBear PLA Basic" + ], + "name": "FlyingBear PLA Basic", + "filament_type": "PLA", + "filament_vendor": "FlyingBear" + }, + "OF3kBrdA": { + "filaments": [ + "Creality/eSUN PETG", + "OrcaFilamentLibrary/eSUN PETG" + ], + "name": "eSUN PETG", + "filament_type": "PETG", + "filament_vendor": "eSUN" + }, + "OF3msXEa": { + "filaments": [ + "Snapmaker/Snapmaker Dual PETG-CF" + ], + "name": "Snapmaker Dual PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Snapmaker" + }, + "OF3ydJTT": { + "filaments": [ + "InfiMech/InfiMech PLA Hyper" + ], + "name": "InfiMech PLA Hyper", + "filament_type": "PLA", + "filament_vendor": "InfiMech" + }, + "OF43Raws": { + "filaments": [ + "Snapmaker/PolyTerra J1 PLA" + ], + "name": "PolyTerra J1 PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF44ERDr": { + "filaments": [ + "Snapmaker/Polymaker General PLA Family" + ], + "name": "Polymaker General PLA Family", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF44VYzK": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Azul Francia" + ], + "name": "FilAr PETG Azul Francia", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OF4APyxe": { + "filaments": [ + "Creality/Hyper PAHT-CF" + ], + "name": "Hyper PAHT-CF", + "filament_type": "PA-CF", + "filament_vendor": "Creality" + }, + "OF4GM5qX": { + "filaments": [ + "Ratrig/Generic ASA BigNozzle" + ], + "name": "Generic ASA BigNozzle", + "filament_type": "ASA", + "filament_vendor": "Generic" + }, + "OF4KsW72": { + "filaments": [], + "name": "FilAr PLA", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF4Nhggz": { + "filaments": [ + "Artillery/Artillery PLA Basic+" + ], + "name": "Artillery PLA Basic+", + "filament_type": "PLA Basic+", + "filament_vendor": "Artillery" + }, + "OF4PKvem": { + "filaments": [ + "BBL/BETA PLA Fluorescence" + ], + "name": "BETA PLA Fluorescence", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF4QZANi": { + "filaments": [ + "BBL/BETA TPU Matte" + ], + "name": "BETA TPU Matte", + "filament_type": "TPU", + "filament_vendor": "BETA" + }, + "OF4RvVuU": { + "filaments": [ + "BBL/Bambu PPS-CF" + ], + "name": "Bambu PPS-CF", + "filament_type": "PPS-CF", + "filament_vendor": "Bambu Lab" + }, + "OF4S3To3": { + "filaments": [ + "Qidi/QIDI PETG Rapido" + ], + "name": "QIDI PETG Rapido", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OF4WB37S": { + "filaments": [ + "Snapmaker/Snapmaker PETG" + ], + "name": "Snapmaker PETG", + "filament_type": "PETG", + "filament_vendor": "Snapmaker" + }, + "OF4XTfoI": { + "filaments": [ + "BBL/BETA PETG Marble" + ], + "name": "BETA PETG Marble", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OF4f8vVp": { + "filaments": [ + "WonderMaker/WonderMaker PET-CF" + ], + "name": "WonderMaker PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "WonderMaker" + }, + "OF4iWKrE": { + "filaments": [ + "Qidi/QIDI PETG-CF" + ], + "name": "QIDI PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "QIDI" + }, + "OF4nQ62r": { + "filaments": [ + "Qidi/QIDI PLA Basic" + ], + "name": "QIDI PLA Basic", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OF4ulo9Y": { + "filaments": [ + "WonderMaker/WonderMaker PVA" + ], + "name": "WonderMaker PVA", + "filament_type": "PVA", + "filament_vendor": "WonderMaker" + }, + "OF53eLVD": { + "filaments": [ + "Blocks/Generic ASA-CF", + "Creality/Generic ASA-CF", + "Elegoo/Generic ASA-CF" + ], + "name": "Generic ASA-CF", + "filament_type": "ASA-CF", + "filament_vendor": "Generic" + }, + "OF54B0S0": { + "filaments": [ + "BBL/Bambu PPA-CF", + "OrcaFilamentLibrary/Bambu PPA-CF" + ], + "name": "Bambu PPA-CF", + "filament_type": "PPA-CF", + "filament_vendor": "Bambu Lab" + }, + "OF54SvEe": { + "filaments": [ + "Prusa/Prusament PA-CF" + ], + "name": "Prusament PA-CF", + "filament_type": "PA11-CF", + "filament_vendor": "Prusa Polymers" + }, + "OF55jHAJ": { + "filaments": [ + "Prusa/Generic ABS HF" + ], + "name": "Generic ABS HF", + "filament_type": "ABS", + "filament_vendor": "Generic" + }, + "OF5B9sUc": { + "filaments": [ + "BBL/Fiberon PA6-GF25" + ], + "name": "Fiberon PA6-GF25", + "filament_type": "PA-GF", + "filament_vendor": "Polymaker" + }, + "OF5BN24W": { + "filaments": [ + "Flashforge/Flashforge PPA-GF" + ], + "name": "Flashforge PPA-GF", + "filament_type": "PPA-GF", + "filament_vendor": "Flashforge" + }, + "OF5BXhHF": { + "filaments": [ + "BBL/BETA PLA High Temp" + ], + "name": "BETA PLA High Temp", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF5CgdDq": { + "filaments": [ + "BBL/PolyLite PLA", + "OrcaArena/PolyLite PLA", + "OrcaFilamentLibrary/PolyLite PLA", + "Qidi/PolyLite PLA", + "Snapmaker/PolyLite PLA" + ], + "name": "PolyLite PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF5LAnla": { + "filaments": [ + "BBL/BETA PLA Gradient" + ], + "name": "BETA PLA Gradient", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF5NqBfC": { + "filaments": [ + "Wanhao France/YUMI PETG" + ], + "name": "YUMI PETG", + "filament_type": "PETG", + "filament_vendor": "Yumi" + }, + "OF5P4jgA": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Dorado" + ], + "name": "FilAr PLA Dorado", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF5PtjTp": { + "filaments": [ + "Anycubic/Anycubic PLA Glow" + ], + "name": "Anycubic PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OF5SJ3jz": { + "filaments": [ + "Flashforge/Flashforge ABS" + ], + "name": "Flashforge ABS", + "filament_type": "ABS", + "filament_vendor": "Flashforge" + }, + "OF5YVJXH": { + "filaments": [ + "Artillery/Artillery ASA" + ], + "name": "Artillery ASA", + "filament_type": "ASA", + "filament_vendor": "Artillery" + }, + "OF5c6nq3": { + "filaments": [ + "Flashforge/Generic TPU-64D" + ], + "name": "Generic TPU-64D", + "filament_type": "TPU-64D", + "filament_vendor": "Generic" + }, + "OF5lGPup": { + "filaments": [ + "WonderMaker/WonderMaker PETG Basic" + ], + "name": "WonderMaker PETG Basic", + "filament_type": "PETG", + "filament_vendor": "WonderMaker" + }, + "OF5nlfKY": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Oro" + ], + "name": "FilAr PLA Oro", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF5oNRED": { + "filaments": [ + "Eryone/Eryone PP" + ], + "name": "Eryone PP", + "filament_type": "PP", + "filament_vendor": "Eryone" + }, + "OF5oXk4M": { + "filaments": [ + "Anycubic/Polymaker PLA Pro", + "Snapmaker/Polymaker PLA Pro" + ], + "name": "Polymaker PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF5rnhjh": { + "filaments": [], + "name": "FilAr PETG", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OF5tX6va": { + "filaments": [ + "Ratrig/Generic TPU BigNozzle" + ], + "name": "Generic TPU BigNozzle", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OF5umxxT": { + "filaments": [ + "BBL/PolyLite PLA Glow", + "Snapmaker/PolyLite PLA Glow" + ], + "name": "PolyLite PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF5vgi2G": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Azul" + ], + "name": "FilAr PLA-mate Azul", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF65InrS": { + "filaments": [ + "Snapmaker/Snapmaker TPU" + ], + "name": "Snapmaker TPU", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OF66KUAN": { + "filaments": [ + "Creality/PolySonic PLA" + ], + "name": "PolySonic PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF6ATsCF": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA-CF" + ], + "name": "Snapmaker Dual PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Snapmaker" + }, + "OF6H51Xx": { + "filaments": [ + "Snapmaker/Polymaker PETG", + "Sovol/Polymaker PETG" + ], + "name": "Polymaker PETG", + "filament_type": "PETG", + "filament_vendor": "Polymaker" + }, + "OF6Ll8lK": { + "filaments": [ + "Elegoo/Elegoo PETG Translucent", + "OrcaFilamentLibrary/Elegoo PETG Translucent" + ], + "name": "Elegoo PETG Translucent", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OF6MOPWx": { + "filaments": [ + "Creality/Generic PET", + "Elegoo/Generic PET", + "Flashforge/Generic PET" + ], + "name": "Generic PET", + "filament_type": "PET", + "filament_vendor": "Generic" + }, + "OF6TuVAg": { + "filaments": [ + "Snapmaker/Snapmaker J1 PVA" + ], + "name": "Snapmaker J1 PVA", + "filament_type": "PVA", + "filament_vendor": "Snapmaker" + }, + "OF6Yn69v": { + "filaments": [ + "BBL/BETA TPU 90A" + ], + "name": "BETA TPU 90A", + "filament_type": "TPU", + "filament_vendor": "BETA" + }, + "OF6kj4jI": { + "filaments": [ + "iQ/Fiberthree PACF Pro P2" + ], + "name": "Fiberthree PACF Pro P2", + "filament_type": "PACF Pro", + "filament_vendor": "iQ Materials" + }, + "OF6qAuyi": { + "filaments": [ + "Flashforge/Flashforge PLA Matte" + ], + "name": "Flashforge PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OF6qw3Wb": { + "filaments": [ + "BBL/BETA PAHT-CF" + ], + "name": "BETA PAHT-CF", + "filament_type": "PA-CF", + "filament_vendor": "BETA" + }, + "OF6rdQ6M": { + "filaments": [ + "BBL/Generic PPS-CF", + "Creality/Generic PPS-CF", + "Tiertime/Generic PPS-CF" + ], + "name": "Generic PPS-CF", + "filament_type": "PPS-CF", + "filament_vendor": "Generic" + }, + "OF70zbGS": { + "filaments": [ + "Creality/Hyper L-W PLA" + ], + "name": "Hyper L-W PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OF71b7qO": { + "filaments": [ + "BBL/addnorth PLA E-PLA" + ], + "name": "addnorth PLA E-PLA", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OF72YYTd": { + "filaments": [ + "Snapmaker/Snapmaker ABS" + ], + "name": "Snapmaker ABS", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OF74KeQR": { + "filaments": [ + "BBL/Generic PHA", + "OrcaFilamentLibrary/Generic PHA", + "Tiertime/Generic PHA" + ], + "name": "Generic PHA", + "filament_type": "PHA", + "filament_vendor": "Generic" + }, + "OF7H3VJM": { + "filaments": [ + "OrcaFilamentLibrary/eSUN PLA-Marble" + ], + "name": "eSUN PLA-Marble", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OF7OqDp3": { + "filaments": [ + "Tiertime/Tiertime PLA-CF" + ], + "name": "Tiertime PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Tiertime" + }, + "OF7SliVn": { + "filaments": [ + "Snapmaker/PolyLite J1 PLA" + ], + "name": "PolyLite J1 PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OF7c9fln": { + "filaments": [ + "Anycubic/Anycubic PLA Translucent" + ], + "name": "Anycubic PLA Translucent", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OF7lOgYF": { + "filaments": [ + "BBL/Generic PETG HF", + "OrcaFilamentLibrary/Generic PETG HF", + "Prusa/Generic PETG HF" + ], + "name": "Generic PETG HF", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OF7lwj52": { + "filaments": [ + "CoLiDo/CoLiDo PETG" + ], + "name": "CoLiDo PETG", + "filament_type": "PETG", + "filament_vendor": "CoLiDo" + }, + "OF7nBAd3": { + "filaments": [ + "Eryone/Eryone Silk PLA" + ], + "name": "Eryone Silk PLA", + "filament_type": "PLA Silk", + "filament_vendor": "Eryone" + }, + "OF7pjCsO": { + "filaments": [ + "Flashforge/FusRock PAHT" + ], + "name": "FusRock PAHT", + "filament_type": "PAHT", + "filament_vendor": "FusRock" + }, + "OF7tt7DO": { + "filaments": [ + "Cubicon/Cubicon PLA+" + ], + "name": "Cubicon PLA+", + "filament_type": "PLA", + "filament_vendor": "Cubicon" + }, + "OF8GnyFU": { + "filaments": [ + "Creality/Hyper ABS" + ], + "name": "Hyper ABS", + "filament_type": "ABS", + "filament_vendor": "Creality" + }, + "OF8GtyKJ": { + "filaments": [ + "Flashforge/Flashforge TPU-64D" + ], + "name": "Flashforge TPU-64D", + "filament_type": "TPU-64D", + "filament_vendor": "Flashforge" + }, + "OF8Jl6NT": { + "filaments": [ + "Snapmaker/Snapmaker J1 PET" + ], + "name": "Snapmaker J1 PET", + "filament_type": "PET", + "filament_vendor": "Snapmaker" + }, + "OF8O09RG": { + "filaments": [ + "Flashforge/Flashforge HS PLA Burnt Ti" + ], + "name": "Flashforge HS PLA Burnt Ti", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OF8QdQwS": { + "filaments": [ + "BBL/BETA PLA Silk+" + ], + "name": "BETA PLA Silk+", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OF8Tlg47": { + "filaments": [ + "BBL/Generic PPA-GF", + "OrcaFilamentLibrary/Generic PPA-GF", + "Tiertime/Generic PPA-GF" + ], + "name": "Generic PPA-GF", + "filament_type": "PPA-GF", + "filament_vendor": "Generic" + }, + "OF8aFWfQ": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Amarillo Lirio" + ], + "name": "FilAr PLA Amarillo Lirio", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF8dCquh": { + "filaments": [ + "Snapmaker/Snapmaker J1 ABS Benchy" + ], + "name": "Snapmaker J1 ABS Benchy", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OF8eaY7j": { + "filaments": [ + "Creality/Generic PA612-CF" + ], + "name": "Generic PA612-CF", + "filament_type": "PA-CF", + "filament_vendor": "Generic" + }, + "OF8jh0Lk": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Marron" + ], + "name": "FilAr PLA-mate Marron", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OF8kJys9": { + "filaments": [ + "Eryone/Eryone PETG" + ], + "name": "Eryone PETG", + "filament_type": "PETG", + "filament_vendor": "Eryone" + }, + "OF8tPByX": { + "filaments": [ + "BBL/Generic PPA-CF", + "OrcaFilamentLibrary/Generic PPA-CF", + "Tiertime/Generic PPA-CF" + ], + "name": "Generic PPA-CF", + "filament_type": "PPA-CF", + "filament_vendor": "Generic" + }, + "OF8wE5l7": { + "filaments": [ + "Artillery/Artillery PETG Basic" + ], + "name": "Artillery PETG Basic", + "filament_type": "PETG Basic", + "filament_vendor": "Artillery" + }, + "OF99UMPq": { + "filaments": [ + "BBL/COEX ABS", + "OrcaFilamentLibrary/COEX ABS" + ], + "name": "COEX ABS", + "filament_type": "ABS", + "filament_vendor": "COEX 3D" + }, + "OF99vXPs": { + "filaments": [], + "name": "DREMC ABS+", + "filament_type": "ABS", + "filament_vendor": "DREMC" + }, + "OF9EHUKK": { + "filaments": [ + "Qidi/QIDI TPU-GF" + ], + "name": "QIDI TPU-GF", + "filament_type": "TPU-GF", + "filament_vendor": "QIDI" + }, + "OF9HCdyQ": { + "filaments": [ + "Afinia/Afinia PLA" + ], + "name": "Afinia PLA", + "filament_type": "PLA", + "filament_vendor": "Afinia" + }, + "OF9OlTWH": { + "filaments": [ + "BBL/Bambu PLA Marble", + "OrcaFilamentLibrary/Bambu PLA Marble" + ], + "name": "Bambu PLA Marble", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OF9PELEb": { + "filaments": [ + "Qidi/QIDI UltraPA-CF25" + ], + "name": "QIDI UltraPA-CF25", + "filament_type": "UltraPA-CF25", + "filament_vendor": "QIDI" + }, + "OF9UJOGF": { + "filaments": [ + "Anycubic/Anycubic PETG-CF" + ], + "name": "Anycubic PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Anycubic" + }, + "OF9cAwMK": { + "filaments": [ + "Flashforge/Flashforge PLA-CF" + ], + "name": "Flashforge PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Flashforge" + }, + "OF9emAI9": { + "filaments": [ + "Ratrig/RatRig PunkFil PETG" + ], + "name": "RatRig PunkFil PETG", + "filament_type": "PETG", + "filament_vendor": "RatRig" + }, + "OFA026vt": { + "filaments": [ + "OrcaArena/Arena PA-CF" + ], + "name": "Arena PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Orca Arena" + }, + "OFAC7Wyu": { + "filaments": [ + "Artillery/Artillery PLA Matte" + ], + "name": "Artillery PLA Matte", + "filament_type": "PLA Matte", + "filament_vendor": "Artillery" + }, + "OFAIBCLJ": { + "filaments": [ + "Elegoo/Generic ABS-CF" + ], + "name": "Generic ABS-CF", + "filament_type": "ABS-CF", + "filament_vendor": "Generic" + }, + "OFAIrQXu": { + "filaments": [ + "Creality/Creality Hyper PLA" + ], + "name": "Creality Hyper PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFANFm4x": { + "filaments": [ + "Qidi/QIDI PLA Rapido Metal" + ], + "name": "QIDI PLA Rapido Metal", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFAO9A7J": { + "filaments": [ + "Sovol/Sovol Zero PLA Silk HS Nozzle" + ], + "name": "Sovol Zero PLA Silk HS Nozzle", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFAZllAN": { + "filaments": [ + "Artillery/Artillery PLA-CF" + ], + "name": "Artillery PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Artillery" + }, + "OFAc0Pr3": { + "filaments": [ + "BBL/Fiberon PET-CF17" + ], + "name": "Fiberon PET-CF17", + "filament_type": "PET-CF", + "filament_vendor": "Polymaker" + }, + "OFAcJkl1": { + "filaments": [ + "BBL/addnorth PETG-CF Rigid X" + ], + "name": "addnorth PETG-CF Rigid X", + "filament_type": "PETG-CF", + "filament_vendor": "addnorth" + }, + "OFAebKg8": { + "filaments": [ + "Flashforge/Flashforge PLA Metal" + ], + "name": "Flashforge PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFAnyRUI": { + "filaments": [ + "BBL/Bambu Support For PLA", + "OrcaFilamentLibrary/Bambu Support For PLA" + ], + "name": "Bambu Support For PLA", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFAt6ec0": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Marron Oxido" + ], + "name": "FilAr PLA Marron Oxido", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFB5SmWk": { + "filaments": [ + "OrcaFilamentLibrary/Valment PLA Galaxy" + ], + "name": "Valment PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Valment" + }, + "OFBBgw7B": { + "filaments": [ + "WonderMaker/WonderMaker PLA Wood" + ], + "name": "WonderMaker PLA Wood", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFBJAdLw": { + "filaments": [ + "LH/LHS PCTG" + ], + "name": "LHS PCTG", + "filament_type": "PCTG", + "filament_vendor": "LH Stinger" + }, + "OFBLktDy": { + "filaments": [ + "Creality/Soleyin Basic PETG" + ], + "name": "Soleyin Basic PETG", + "filament_type": "PETG", + "filament_vendor": "Creality" + }, + "OFBSW57R": { + "filaments": [ + "BBL/Bambu PLA Aero", + "OrcaFilamentLibrary/Bambu PLA Aero" + ], + "name": "Bambu PLA Aero", + "filament_type": "PLA-AERO", + "filament_vendor": "Bambu Lab" + }, + "OFBUIlZ7": { + "filaments": [ + "Elegoo/Elegoo PLA+", + "OrcaFilamentLibrary/Elegoo PLA+" + ], + "name": "Elegoo PLA+", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFBlFMVp": { + "filaments": [ + "Snapmaker/Snapmaker Dual PETG" + ], + "name": "Snapmaker Dual PETG", + "filament_type": "PETG", + "filament_vendor": "Snapmaker" + }, + "OFBoSWxb": { + "filaments": [ + "BBL/PolyLite PLA Luminous", + "Snapmaker/PolyLite PLA Luminous" + ], + "name": "PolyLite PLA Luminous", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFBsbMMF": { + "filaments": [ + "BBL/addnorth PA-CF Adura X" + ], + "name": "addnorth PA-CF Adura X", + "filament_type": "PA-CF", + "filament_vendor": "addnorth" + }, + "OFBw6eEG": { + "filaments": [ + "BBL/Overture Matte PLA", + "OrcaFilamentLibrary/Overture Matte PLA" + ], + "name": "Overture Matte PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFC1PzXz": { + "filaments": [ + "Creality/Hyper Luminous" + ], + "name": "Hyper Luminous", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFC5f4Ay": { + "filaments": [ + "RH3D/Generic PCCF" + ], + "name": "Generic PCCF", + "filament_type": "PC-CF", + "filament_vendor": "Generic" + }, + "OFC78WGQ": { + "filaments": [ + "BBL/Panchroma PLA Starlight", + "OrcaFilamentLibrary/Panchroma PLA Starlight", + "Snapmaker/Panchroma PLA Starlight" + ], + "name": "Panchroma PLA Starlight", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFCD8qiU": { + "filaments": [ + "BBL/Generic EVA", + "OrcaFilamentLibrary/Generic EVA", + "Tiertime/Generic EVA" + ], + "name": "Generic EVA", + "filament_type": "EVA", + "filament_vendor": "Generic" + }, + "OFCIUsWh": { + "filaments": [ + "BBL/Panchroma PLA Translucent", + "OrcaFilamentLibrary/Panchroma PLA Translucent", + "Snapmaker/Panchroma PLA Translucent" + ], + "name": "Panchroma PLA Translucent", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFCJpR7a": { + "filaments": [ + "Creality/HP Ultra PLA" + ], + "name": "HP Ultra PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFCZsqXg": { + "filaments": [ + "Creality/Hyper PLA" + ], + "name": "Hyper PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFCccVrQ": { + "filaments": [ + "OrcaFilamentLibrary/PolyTerra Dual PLA", + "Snapmaker/PolyTerra Dual PLA" + ], + "name": "PolyTerra Dual PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFCidU7j": { + "filaments": [ + "OrcaFilamentLibrary/DREMC ABS-GF" + ], + "name": "DREMC ABS-GF", + "filament_type": "ABS-GF", + "filament_vendor": "DREMC" + }, + "OFCjG251": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Verde" + ], + "name": "FilAr PLA-mate Verde", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFCn83wF": { + "filaments": [ + "Flashforge/FusRock S-PAHT" + ], + "name": "FusRock S-PAHT", + "filament_type": "PAHT", + "filament_vendor": "FusRock" + }, + "OFCnywiC": { + "filaments": [ + "Tiertime/Tiertime PET-CF" + ], + "name": "Tiertime PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Tiertime" + }, + "OFCoRobU": { + "filaments": [ + "OrcaFilamentLibrary/Elas ASA" + ], + "name": "Elas ASA", + "filament_type": "ASA", + "filament_vendor": "Elas" + }, + "OFCp3Bgo": { + "filaments": [ + "Anycubic/Anycubic PLA SE" + ], + "name": "Anycubic PLA SE", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFCuaCer": { + "filaments": [ + "Volumic/Désactivé" + ], + "name": "Désactivé", + "filament_type": "PLA", + "filament_vendor": "Volumic" + }, + "OFD9taow": { + "filaments": [ + "FlyingBear/FlyingBear PLA Hyper" + ], + "name": "FlyingBear PLA Hyper", + "filament_type": "PLA", + "filament_vendor": "FlyingBear" + }, + "OFDETOM6": { + "filaments": [ + "Creality/eSUN PLA-Matte", + "OrcaFilamentLibrary/eSUN PLA-Matte" + ], + "name": "eSUN PLA-Matte", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFDGigEI": { + "filaments": [ + "BBL/Bambu PLA Dynamic", + "OrcaFilamentLibrary/Bambu PLA Dynamic" + ], + "name": "Bambu PLA Dynamic", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFDIrhbu": { + "filaments": [ + "Qidi/QIDI PC/ABS-FR" + ], + "name": "QIDI PC/ABS-FR", + "filament_type": "PC-ABS-FR", + "filament_vendor": "QIDI" + }, + "OFDJU6R3": { + "filaments": [ + "Afinia/Afinia TPU" + ], + "name": "Afinia TPU", + "filament_type": "TPU", + "filament_vendor": "Afinia" + }, + "OFDKIKyw": { + "filaments": [ + "Snapmaker/Snapmaker Dual PVA" + ], + "name": "Snapmaker Dual PVA", + "filament_type": "PVA", + "filament_vendor": "Snapmaker" + }, + "OFDKgoqx": { + "filaments": [ + "Flashforge/Flashforge PLA" + ], + "name": "Flashforge PLA", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFDRpXLZ": { + "filaments": [ + "FlyingBear/Other PETG", + "InfiMech/Other PETG" + ], + "name": "Other PETG", + "filament_type": "PETG", + "filament_vendor": "Other" + }, + "OFDSrzZ8": { + "filaments": [ + "Anker/Generic PLA", + "Anycubic/Generic PLA", + "Artillery/Generic PLA", + "BBL/Generic PLA", + "Blocks/Generic PLA", + "CONSTRUCT3D/Generic PLA", + "Chuanying/Generic PLA", + "Co Print/Generic PLA", + "CoLiDo/Generic PLA", + "Comgrow/Generic PLA", + "Creality/Generic PLA", + "Custom/Generic PLA", + "DeltaMaker/Generic PLA", + "Dremel/Generic PLA", + "Elegoo/Generic PLA", + "FLSun/Generic PLA", + "Flashforge/Generic PLA", + "FlyingBear/Generic PLA", + "Ginger Additive/Generic PLA", + "InfiMech/Generic PLA", + "LONGER/Generic PLA", + "Lulzbot/Generic PLA", + "OrcaArena/Generic PLA", + "OrcaFilamentLibrary/Generic PLA", + "Peopoly/Generic PLA", + "Phrozen/Generic PLA", + "Prusa/Generic PLA", + "Qidi/Generic PLA", + "RH3D/Generic PLA", + "Ratrig/Generic PLA", + "SecKit/Generic PLA", + "Sovol/Generic PLA", + "Tiertime/Generic PLA", + "Vzbot/Generic PLA", + "Z-Bolt/Generic PLA" + ], + "name": "Generic PLA", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFDe8uyM": { + "filaments": [ + "OrcaFilamentLibrary/Valment PLA" + ], + "name": "Valment PLA", + "filament_type": "PLA", + "filament_vendor": "Valment" + }, + "OFDgQaca": { + "filaments": [ + "FlyingBear/FlyingBear PETG" + ], + "name": "FlyingBear PETG", + "filament_type": "PETG", + "filament_vendor": "FlyingBear" + }, + "OFDpW3J8": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PLA Basic" + ], + "name": "FILL3D PLA Basic", + "filament_type": "PLA", + "filament_vendor": "FILL3D" + }, + "OFDtop41": { + "filaments": [ + "Creality/Generic Support for PA" + ], + "name": "Generic Support for PA", + "filament_type": "PA", + "filament_vendor": "Generic" + }, + "OFDu1qE7": { + "filaments": [ + "Flashforge/FusRock PET-CF" + ], + "name": "FusRock PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "FusRock" + }, + "OFDvXujf": { + "filaments": [ + "Anker/Generic PVA", + "Anycubic/Generic PVA", + "BBL/Generic PVA", + "Blocks/Generic PVA", + "Chuanying/Generic PVA", + "Creality/Generic PVA", + "Custom/Generic PVA", + "FLSun/Generic PVA", + "Flashforge/Generic PVA", + "OrcaArena/Generic PVA", + "OrcaFilamentLibrary/Generic PVA", + "Prusa/Generic PVA", + "Qidi/Generic PVA", + "Ratrig/Generic PVA", + "SecKit/Generic PVA", + "Tiertime/Generic PVA", + "Vzbot/Generic PVA" + ], + "name": "Generic PVA", + "filament_type": "PVA", + "filament_vendor": "Generic" + }, + "OFDvqJ6n": { + "filaments": [ + "OrcaFilamentLibrary/Overture ABS Basic" + ], + "name": "Overture ABS Basic", + "filament_type": "ABS", + "filament_vendor": "Overture" + }, + "OFDwBwO5": { + "filaments": [ + "Prusa/Generic PVA HF" + ], + "name": "Generic PVA HF", + "filament_type": "PVA", + "filament_vendor": "Generic" + }, + "OFDxfPgH": { + "filaments": [ + "BBL/Bambu PLA Sparkle", + "OrcaFilamentLibrary/Bambu PLA Sparkle" + ], + "name": "Bambu PLA Sparkle", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFDxxTpW": { + "filaments": [ + "Flashforge/Flashforge HS PETG" + ], + "name": "Flashforge HS PETG", + "filament_type": "PETG", + "filament_vendor": "Flashforge" + }, + "OFE0NFRh": { + "filaments": [ + "BBL/COEX TPU 60A", + "OrcaFilamentLibrary/COEX TPU 60A" + ], + "name": "COEX TPU 60A", + "filament_type": "TPU", + "filament_vendor": "COEX 3D" + }, + "OFEGNJD4": { + "filaments": [ + "BBL/Bambu PLA Silk", + "OrcaFilamentLibrary/Bambu PLA Silk" + ], + "name": "Bambu PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFEOnBj6": { + "filaments": [ + "Snapmaker/Snapmaker PLA Lite" + ], + "name": "Snapmaker PLA Lite", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFEWYR89": { + "filaments": [ + "Anker/Generic PLA+", + "Qidi/Generic PLA+" + ], + "name": "Generic PLA+", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFEZ449N": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Uva" + ], + "name": "FilAr PLA-mate Uva", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFEZpel7": { + "filaments": [ + "Volumic/PPS Carbone (Performance)" + ], + "name": "PPS Carbone (Performance)", + "filament_type": "PPS-CF", + "filament_vendor": "Volumic" + }, + "OFEabreg": { + "filaments": [ + "Anycubic/Fiberon PA6-CF20", + "BBL/Fiberon PA6-CF20", + "Snapmaker/Fiberon PA6-CF20" + ], + "name": "Fiberon PA6-CF20", + "filament_type": "PA6-CF", + "filament_vendor": "Polymaker" + }, + "OFEbIx49": { + "filaments": [ + "WonderMaker/WonderMaker PLA Marble" + ], + "name": "WonderMaker PLA Marble", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFEhuUNq": { + "filaments": [], + "name": "DREMC PA12-CF", + "filament_type": "PA-CF", + "filament_vendor": "DREMC" + }, + "OFEj7sca": { + "filaments": [ + "Cubicon/Cubicon PC" + ], + "name": "Cubicon PC", + "filament_type": "PC", + "filament_vendor": "Cubicon" + }, + "OFEjbwqG": { + "filaments": [ + "BBL/PolyTerra PLA+", + "Snapmaker/PolyTerra PLA+" + ], + "name": "PolyTerra PLA+", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFEkPBwx": { + "filaments": [ + "BBL/Bambu PLA Glow", + "OrcaFilamentLibrary/Bambu PLA Glow" + ], + "name": "Bambu PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFEmsric": { + "filaments": [ + "Snapmaker/Snapmaker PA-CF" + ], + "name": "Snapmaker PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Snapmaker" + }, + "OFEnbt6D": { + "filaments": [ + "Peopoly/Peopoly Lancer PLA-C" + ], + "name": "Peopoly Lancer PLA-C", + "filament_type": "PLA", + "filament_vendor": "Peopoly" + }, + "OFEswT5W": { + "filaments": [ + "BBL/Bambu PLA-CF", + "OrcaFilamentLibrary/Bambu PLA-CF" + ], + "name": "Bambu PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Bambu Lab" + }, + "OFEvEfw5": { + "filaments": [ + "Flashforge/Flashforge PA" + ], + "name": "Flashforge PA", + "filament_type": "PA", + "filament_vendor": "Flashforge" + }, + "OFEwRwmL": { + "filaments": [ + "Cubicon/Cubicon PLA" + ], + "name": "Cubicon PLA", + "filament_type": "PLA", + "filament_vendor": "Cubicon" + }, + "OFF3cuzT": { + "filaments": [ + "Creality/Generic TPU 64D" + ], + "name": "Generic TPU 64D", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OFF5o7b2": { + "filaments": [ + "BBL/BETA PLA Youth" + ], + "name": "BETA PLA Youth", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFF9OKoY": { + "filaments": [ + "BBL/PolyLite PLA Pro", + "OrcaFilamentLibrary/PolyLite PLA Pro", + "Snapmaker/PolyLite PLA Pro" + ], + "name": "PolyLite PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFF9cgY5": { + "filaments": [ + "Snapmaker/Snapmaker PLA Matte" + ], + "name": "Snapmaker PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFFAWVf0": { + "filaments": [ + "Qidi/QIDI PC-ABS-FR" + ], + "name": "QIDI PC-ABS-FR", + "filament_type": "PC-ABS-FR", + "filament_vendor": "QIDI" + }, + "OFFFg2Pf": { + "filaments": [ + "Flashforge/Flashforge ASA Basic" + ], + "name": "Flashforge ASA Basic", + "filament_type": "ASA", + "filament_vendor": "Flashforge" + }, + "OFFNYwWR": { + "filaments": [ + "BBL/Bambu PA-CF", + "OrcaFilamentLibrary/Bambu PA-CF" + ], + "name": "Bambu PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Bambu Lab" + }, + "OFFP4ORR": { + "filaments": [ + "Creality/Creality Hyper ABS" + ], + "name": "Creality Hyper ABS", + "filament_type": "ABS", + "filament_vendor": "Creality" + }, + "OFFX1DRD": { + "filaments": [ + "FlyingBear/FlyingBear PC" + ], + "name": "FlyingBear PC", + "filament_type": "PC", + "filament_vendor": "FlyingBear" + }, + "OFFZ458u": { + "filaments": [ + "Snapmaker/Fiberon PA612-ESD" + ], + "name": "Fiberon PA612-ESD", + "filament_type": "PA-CF", + "filament_vendor": "Polymaker" + }, + "OFFbQscs": { + "filaments": [ + "Creality/eSUN PETG-Basic" + ], + "name": "eSUN PETG-Basic", + "filament_type": "PETG", + "filament_vendor": "eSUN" + }, + "OFFbSnCD": { + "filaments": [ + "BBL/Bambu PLA Translucent" + ], + "name": "Bambu PLA Translucent", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFFfJ09N": { + "filaments": [ + "BBL/BETA PETG Glow" + ], + "name": "BETA PETG Glow", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFFkCLBl": { + "filaments": [ + "BBL/Panchroma PLA Galaxy", + "OrcaFilamentLibrary/Panchroma PLA Galaxy", + "Snapmaker/Panchroma PLA Galaxy" + ], + "name": "Panchroma PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFFvzqcd": { + "filaments": [ + "BBL/Bambu PETG Basic", + "OrcaFilamentLibrary/Bambu PETG Basic" + ], + "name": "Bambu PETG Basic", + "filament_type": "PETG", + "filament_vendor": "Bambu Lab" + }, + "OFFwJWea": { + "filaments": [ + "Anycubic/Anycubic PLA Silk" + ], + "name": "Anycubic PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFG0kOKX": { + "filaments": [ + "Volumic/Volumic PETG Ultra" + ], + "name": "Volumic PETG Ultra", + "filament_type": "PETG", + "filament_vendor": "Volumic" + }, + "OFG2RkhN": { + "filaments": [ + "Creality/CR-TPU" + ], + "name": "CR-TPU", + "filament_type": "TPU", + "filament_vendor": "Creality" + }, + "OFG4do34": { + "filaments": [ + "Qidi/Qidi ASA-Aero" + ], + "name": "Qidi ASA-Aero", + "filament_type": "ASA-AERO", + "filament_vendor": "QIDI" + }, + "OFGJ1nxs": { + "filaments": [ + "FlyingBear/Other PLA", + "InfiMech/Other PLA" + ], + "name": "Other PLA", + "filament_type": "PLA", + "filament_vendor": "Other" + }, + "OFGVwfK0": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Gris" + ], + "name": "FilAr PLA-mate Gris", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFGVxj2A": { + "filaments": [ + "BBL/BETA PLA Wood" + ], + "name": "BETA PLA Wood", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFGc9l16": { + "filaments": [ + "BBL/BETA PLA Glow" + ], + "name": "BETA PLA Glow", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFGcLA5R": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Beige" + ], + "name": "FilAr PLA-mate Beige", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFGcMkEB": { + "filaments": [ + "Creality/HP-TPU" + ], + "name": "HP-TPU", + "filament_type": "TPU", + "filament_vendor": "Creality" + }, + "OFGdP6Na": { + "filaments": [ + "Volumic/Volumic PVA" + ], + "name": "Volumic PVA", + "filament_type": "PVA", + "filament_vendor": "Volumic" + }, + "OFGkyftV": { + "filaments": [ + "BBL/Overture Silk PLA", + "OrcaFilamentLibrary/Overture Silk PLA" + ], + "name": "Overture Silk PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFGwT5Av": { + "filaments": [ + "Creality/Creality Hyper PLA-CF" + ], + "name": "Creality Hyper PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Creality" + }, + "OFGwZmgS": { + "filaments": [ + "Creality/CR-ABS" + ], + "name": "CR-ABS", + "filament_type": "ABS", + "filament_vendor": "Creality" + }, + "OFGxC8gB": { + "filaments": [ + "Creality/CR-Wood" + ], + "name": "CR-Wood", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFGxuI0n": { + "filaments": [ + "Flashforge/Flashforge PA-CF" + ], + "name": "Flashforge PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Flashforge" + }, + "OFH2nN08": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA INGEO 850" + ], + "name": "Eolas Prints PLA INGEO 850", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFH57ibH": { + "filaments": [ + "Snapmaker/Polymaker Silk PLA Family" + ], + "name": "Polymaker Silk PLA Family", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFH7b12v": { + "filaments": [ + "Creality/Generic PAHT-CF" + ], + "name": "Generic PAHT-CF", + "filament_type": "PA-CF", + "filament_vendor": "Generic" + }, + "OFHAccHz": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Blanco Antartida" + ], + "name": "FilAr PLA Blanco Antartida", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFHHwrd1": { + "filaments": [ + "BBL/addnorth PETG Base" + ], + "name": "addnorth PETG Base", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OFHWSM21": { + "filaments": [ + "BBL/Fiberon PET-CF", + "OrcaFilamentLibrary/Fiberon PET-CF" + ], + "name": "Fiberon PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Polymaker" + }, + "OFHa48An": { + "filaments": [ + "BBL/Bambu PET-CF", + "OrcaFilamentLibrary/Bambu PET-CF" + ], + "name": "Bambu PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Bambu Lab" + }, + "OFHaYaB1": { + "filaments": [ + "Creality/eSUN PET-Basic" + ], + "name": "eSUN PET-Basic", + "filament_type": "PET", + "filament_vendor": "eSUN" + }, + "OFHf2lKK": { + "filaments": [ + "FlyingBear/FlyingBear TPU Basic" + ], + "name": "FlyingBear TPU Basic", + "filament_type": "TPU", + "filament_vendor": "FlyingBear" + }, + "OFHfzQXo": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Transition" + ], + "name": "Eolas Prints PLA Transition", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFHknN4v": { + "filaments": [ + "Anycubic/Polymaker PLA Pro Metallic", + "Snapmaker/Polymaker PLA Pro Metallic" + ], + "name": "Polymaker PLA Pro Metallic", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFHmPYRy": { + "filaments": [ + "BBL/SUNLU PLA+ 2.0", + "Flashforge/SUNLU PLA+ 2.0", + "OrcaFilamentLibrary/SUNLU PLA+ 2.0" + ], + "name": "SUNLU PLA+ 2.0", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFI2MKy7": { + "filaments": [ + "BBL/BETA PEBA 90A" + ], + "name": "BETA PEBA 90A", + "filament_type": "TPU", + "filament_vendor": "BETA" + }, + "OFI6WZpn": { + "filaments": [ + "OrcaArena/Arena Support W" + ], + "name": "Arena Support W", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFIBXa0k": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Rojo" + ], + "name": "FilAr PLA-mate Rojo", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFIBbYO5": { + "filaments": [ + "BBL/Bambu TPU for AMS" + ], + "name": "Bambu TPU for AMS", + "filament_type": "TPU-AMS", + "filament_vendor": "Bambu Lab" + }, + "OFIE3vOf": { + "filaments": [ + "Anycubic/Anycubic PLA Matte" + ], + "name": "Anycubic PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFIK2H3G": { + "filaments": [ + "Flashforge/Flashforge HS PLA" + ], + "name": "Flashforge HS PLA", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFIKZxPF": { + "filaments": [ + "Creality/Generic PLA Wood" + ], + "name": "Generic PLA Wood", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFIPjqHt": { + "filaments": [ + "OrcaArena/Arena Support G" + ], + "name": "Arena Support G", + "filament_type": "PA", + "filament_vendor": "Orca Arena" + }, + "OFIRUqWi": { + "filaments": [ + "Creality/eSUN PLA-Silk" + ], + "name": "eSUN PLA-Silk", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFIVWJPm": { + "filaments": [ + "InfiMech/InfiMech TPU" + ], + "name": "InfiMech TPU", + "filament_type": "TPU", + "filament_vendor": "InfiMech" + }, + "OFIWMSGX": { + "filaments": [ + "Qidi/HATCHBOX PETG" + ], + "name": "HATCHBOX PETG", + "filament_type": "PETG", + "filament_vendor": "HATCHBOX" + }, + "OFIZMQwM": { + "filaments": [ + "LH/LHS TPU" + ], + "name": "LHS TPU", + "filament_type": "TPU", + "filament_vendor": "LH Stinger" + }, + "OFIamQnD": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Gris Ceniza" + ], + "name": "FilAr PLA Gris Ceniza", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFIegjmD": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints TPU Flex D53" + ], + "name": "Eolas Prints TPU Flex D53", + "filament_type": "TPU", + "filament_vendor": "Eolas Prints" + }, + "OFIfnzxC": { + "filaments": [ + "BBL/Bambu Support For PLA/PETG", + "OrcaFilamentLibrary/Bambu Support For PLA/PETG" + ], + "name": "Bambu Support For PLA/PETG", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFIgbDHq": { + "filaments": [ + "Anycubic/Anycubic PLA Luminous" + ], + "name": "Anycubic PLA Luminous", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFIxOuOu": { + "filaments": [ + "BBL/PolyLite PLA Starlight", + "Snapmaker/PolyLite PLA Starlight" + ], + "name": "PolyLite PLA Starlight", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFJ3F2jm": { + "filaments": [ + "Flashforge/Flashforge PLA Basic" + ], + "name": "Flashforge PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFJ3HRsR": { + "filaments": [ + "OrcaArena/Arena ABS" + ], + "name": "Arena ABS", + "filament_type": "ABS", + "filament_vendor": "Orca Arena" + }, + "OFJHBEGD": { + "filaments": [], + "name": "DREMC PLA+ HS", + "filament_type": "PLA", + "filament_vendor": "DREMC" + }, + "OFJJ0Ar3": { + "filaments": [ + "Flashforge/Flashforge PLA Galaxy" + ], + "name": "Flashforge PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFJNeELv": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PA" + ], + "name": "FILL3D PA", + "filament_type": "PA", + "filament_vendor": "FILL3D" + }, + "OFJOFnOZ": { + "filaments": [ + "BBL/AliZ PETG-CF", + "OrcaFilamentLibrary/AliZ PETG-CF" + ], + "name": "AliZ PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Aliz" + }, + "OFJQDUk3": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Cristal" + ], + "name": "FilAr PETG Cristal", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFJS560n": { + "filaments": [], + "name": "Flashforge ASA", + "filament_type": "ASA", + "filament_vendor": "Flashforge" + }, + "OFJWKoYG": { + "filaments": [ + "iQ/Material4Print ABS Natur P1" + ], + "name": "Material4Print ABS Natur P1", + "filament_type": "ABS Material4Print Natur", + "filament_vendor": "iQ Materials" + }, + "OFJYpVAQ": { + "filaments": [ + "Flashforge/Generic TPU-90A" + ], + "name": "Generic TPU-90A", + "filament_type": "TPU-90A", + "filament_vendor": "Generic" + }, + "OFJgijky": { + "filaments": [ + "BBL/PolyLite CosPLA", + "Snapmaker/PolyLite CosPLA" + ], + "name": "PolyLite CosPLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFJhT2fd": { + "filaments": [ + "Snapmaker/Snapmaker Dual ABS" + ], + "name": "Snapmaker Dual ABS", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OFJnEaCp": { + "filaments": [ + "BBL/BETA PLA Transparent" + ], + "name": "BETA PLA Transparent", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFJrvXth": { + "filaments": [ + "Snapmaker/Snapmaker ABS Benchy" + ], + "name": "Snapmaker ABS Benchy", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OFJs1ToM": { + "filaments": [ + "BBL/COEX NYLEX UNFILLED" + ], + "name": "COEX NYLEX UNFILLED", + "filament_type": "PA", + "filament_vendor": "COEX 3D" + }, + "OFJu1XwK": { + "filaments": [ + "OrcaFilamentLibrary/NIT PETG" + ], + "name": "NIT PETG", + "filament_type": "PETG", + "filament_vendor": "NIT" + }, + "OFJxSqO4": { + "filaments": [ + "Wanhao France/YUMI PLA Direct Drive" + ], + "name": "YUMI PLA Direct Drive", + "filament_type": "PLA", + "filament_vendor": "Yumi" + }, + "OFK7830e": { + "filaments": [ + "BBL/BETA TPU 95A" + ], + "name": "BETA TPU 95A", + "filament_type": "TPU", + "filament_vendor": "BETA" + }, + "OFK8XHPn": { + "filaments": [ + "Qidi/Overture ABS" + ], + "name": "Overture ABS", + "filament_type": "ABS", + "filament_vendor": "Overture" + }, + "OFKIQO2W": { + "filaments": [ + "Qidi/QIDI PLA Rapido" + ], + "name": "QIDI PLA Rapido", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFKKajh6": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Gris Plata" + ], + "name": "FilAr PLA Gris Plata", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFKTGKJU": { + "filaments": [ + "Flashforge/FusRock PET" + ], + "name": "FusRock PET", + "filament_type": "PET", + "filament_vendor": "FusRock" + }, + "OFKTSiYF": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Blanco Calido" + ], + "name": "FilAr PLA Blanco Calido", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFKUEXPA": { + "filaments": [ + "Snapmaker/Snapmaker Dual ASA" + ], + "name": "Snapmaker Dual ASA", + "filament_type": "ASA", + "filament_vendor": "Snapmaker" + }, + "OFKW5hEW": { + "filaments": [ + "Flashforge/FusRock PAHT-CF" + ], + "name": "FusRock PAHT-CF", + "filament_type": "PAHT-CF", + "filament_vendor": "FusRock" + }, + "OFKWWgyp": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Carpincho" + ], + "name": "FilAr PLA Carpincho", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFKYBAWe": { + "filaments": [ + "BBL/BETA PLA Marble" + ], + "name": "BETA PLA Marble", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFKZ9skj": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Naranja Tigre" + ], + "name": "FilAr PLA Naranja Tigre", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFKbdiiJ": { + "filaments": [ + "Creality/PolySonic PLA Pro" + ], + "name": "PolySonic PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFKfJTwL": { + "filaments": [ + "Qidi/QIDI PET-CF" + ], + "name": "QIDI PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "QIDI" + }, + "OFKgmsqE": { + "filaments": [ + "Qidi/QIDI PAHT-CF" + ], + "name": "QIDI PAHT-CF", + "filament_type": "PAHT-CF", + "filament_vendor": "QIDI" + }, + "OFKhMPeX": { + "filaments": [ + "BBL/Bambu PC", + "OrcaFilamentLibrary/Bambu PC" + ], + "name": "Bambu PC", + "filament_type": "PC", + "filament_vendor": "Bambu Lab" + }, + "OFKiSMWR": { + "filaments": [ + "BBL/Panchroma PLA Marble", + "OrcaFilamentLibrary/Panchroma PLA Marble", + "Snapmaker/Panchroma PLA Marble" + ], + "name": "Panchroma PLA Marble", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFKyNkQz": { + "filaments": [ + "BBL/BETA PETG UV Color Change" + ], + "name": "BETA PETG UV Color Change", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFL9aRjN": { + "filaments": [ + "Snapmaker/Snapmaker PETG HF" + ], + "name": "Snapmaker PETG HF", + "filament_type": "PETG", + "filament_vendor": "Snapmaker" + }, + "OFLAXKqP": { + "filaments": [ + "WonderMaker/WonderMaker TPU 95A" + ], + "name": "WonderMaker TPU 95A", + "filament_type": "TPU", + "filament_vendor": "WonderMaker" + }, + "OFLC1oRH": { + "filaments": [ + "Flashforge/Flashforge PPA-CF" + ], + "name": "Flashforge PPA-CF", + "filament_type": "PPA-CF", + "filament_vendor": "Flashforge" + }, + "OFLJ8S6I": { + "filaments": [ + "BBL/SUNLU Wood PLA", + "Flashforge/SUNLU Wood PLA", + "OrcaFilamentLibrary/SUNLU Wood PLA" + ], + "name": "SUNLU Wood PLA", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFLNgV3C": { + "filaments": [], + "name": "DREMC ASA", + "filament_type": "ASA", + "filament_vendor": "DREMC" + }, + "OFLOf6Sc": { + "filaments": [ + "Tiertime/Tiertime TPU 95A" + ], + "name": "Tiertime TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Tiertime" + }, + "OFLPAxz3": { + "filaments": [ + "Anker/Generic ASA", + "Anycubic/Generic ASA", + "Artillery/Generic ASA", + "BBL/Generic ASA", + "Blocks/Generic ASA", + "Chuanying/Generic ASA", + "Creality/Generic ASA", + "Custom/Generic ASA", + "Elegoo/Generic ASA", + "FLSun/Generic ASA", + "Flashforge/Generic ASA", + "OrcaArena/Generic ASA", + "OrcaFilamentLibrary/Generic ASA", + "Prusa/Generic ASA", + "Qidi/Generic ASA", + "RH3D/Generic ASA", + "Ratrig/Generic ASA", + "SecKit/Generic ASA", + "Tiertime/Generic ASA", + "Vzbot/Generic ASA" + ], + "name": "Generic ASA", + "filament_type": "ASA", + "filament_vendor": "Generic" + }, + "OFLTYJW0": { + "filaments": [ + "Snapmaker/Snapmaker PLA Translucent" + ], + "name": "Snapmaker PLA Translucent", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFLXvuMr": { + "filaments": [ + "Elegoo/Elegoo Rapid PETG", + "OrcaFilamentLibrary/Elegoo Rapid PETG" + ], + "name": "Elegoo Rapid PETG", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFLYDngx": { + "filaments": [ + "Qidi/Bambu PETG" + ], + "name": "Bambu PETG", + "filament_type": "PETG", + "filament_vendor": "Bambu Lab" + }, + "OFLakOUI": { + "filaments": [ + "Anker/Generic PC", + "Anycubic/Generic PC", + "BBL/Generic PC", + "Blocks/Generic PC", + "Creality/Generic PC", + "Custom/Generic PC", + "Elegoo/Generic PC", + "FLSun/Generic PC", + "FlyingBear/Generic PC", + "InfiMech/Generic PC", + "OrcaArena/Generic PC", + "OrcaFilamentLibrary/Generic PC", + "Prusa/Generic PC", + "Qidi/Generic PC", + "Ratrig/Generic PC", + "SecKit/Generic PC", + "Sovol/Generic PC", + "Tiertime/Generic PC", + "Vzbot/Generic PC" + ], + "name": "Generic PC", + "filament_type": "PC", + "filament_vendor": "Generic" + }, + "OFLbXwoL": { + "filaments": [ + "Artillery/Artillery PLA Silk" + ], + "name": "Artillery PLA Silk", + "filament_type": "PLA Silk", + "filament_vendor": "Artillery" + }, + "OFLbdkrE": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA Eco" + ], + "name": "Snapmaker J1 PLA Eco", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFLcd093": { + "filaments": [ + "Elegoo/Elegoo PETG", + "OrcaFilamentLibrary/Elegoo PETG" + ], + "name": "Elegoo PETG", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFLfywkp": { + "filaments": [ + "Afinia/Afinia ABS+" + ], + "name": "Afinia ABS+", + "filament_type": "ABS", + "filament_vendor": "Afinia" + }, + "OFLgwqp2": { + "filaments": [ + "Creality/Hyper PETG-GF" + ], + "name": "Hyper PETG-GF", + "filament_type": "PETG-GF", + "filament_vendor": "Creality" + }, + "OFLjDYxH": { + "filaments": [ + "BBL/addnorth PLA X-PLA High Speed" + ], + "name": "addnorth PLA X-PLA High Speed", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFLqgSuX": { + "filaments": [ + "BBL/BETA PLA-CF" + ], + "name": "BETA PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "BETA" + }, + "OFLzx3J4": { + "filaments": [ + "Creality/Hyper Marble" + ], + "name": "Hyper Marble", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFM0xjBG": { + "filaments": [ + "Creality/CR-PLA Matte" + ], + "name": "CR-PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFM4iJlv": { + "filaments": [ + "Creality/Generic PA12-CF" + ], + "name": "Generic PA12-CF", + "filament_type": "PA-CF", + "filament_vendor": "Generic" + }, + "OFM91vZs": { + "filaments": [ + "BBL/Overture ASA", + "OrcaFilamentLibrary/Overture ASA" + ], + "name": "Overture ASA", + "filament_type": "ASA", + "filament_vendor": "Overture" + }, + "OFMDHOcT": { + "filaments": [ + "Qidi/QIDI TPU-Aero" + ], + "name": "QIDI TPU-Aero", + "filament_type": "TPU-AERO", + "filament_vendor": "QIDI" + }, + "OFMK5gVo": { + "filaments": [ + "WonderMaker/WonderMaker PLA Basic" + ], + "name": "WonderMaker PLA Basic", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFML2aVd": { + "filaments": [ + "Anycubic/Anycubic TPU 95A" + ], + "name": "Anycubic TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Anycubic" + }, + "OFMSvS8z": { + "filaments": [ + "Artillery/Artillery PA" + ], + "name": "Artillery PA", + "filament_type": "PA", + "filament_vendor": "Artillery" + }, + "OFMTK0UC": { + "filaments": [ + "BBL/Bambu Support For PA/PET", + "OrcaFilamentLibrary/Bambu Support For PA/PET" + ], + "name": "Bambu Support For PA/PET", + "filament_type": "PA", + "filament_vendor": "Bambu Lab" + }, + "OFMUWNkp": { + "filaments": [ + "BBL/SUNLU PLA+", + "Flashforge/SUNLU PLA+", + "OrcaFilamentLibrary/SUNLU PLA+" + ], + "name": "SUNLU PLA+", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFMZvH0z": { + "filaments": [ + "BBL/Overture Rock PLA", + "OrcaFilamentLibrary/Overture Rock PLA" + ], + "name": "Overture Rock PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFMjtqTC": { + "filaments": [ + "BBL/Bambu PLA Wood", + "OrcaFilamentLibrary/Bambu PLA Wood" + ], + "name": "Bambu PLA Wood", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFMkAW6r": { + "filaments": [ + "Flashforge/Flashforge PLA Color Change" + ], + "name": "Flashforge PLA Color Change", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFMpxamb": { + "filaments": [ + "Flashforge/Flashforge PETG" + ], + "name": "Flashforge PETG", + "filament_type": "PETG", + "filament_vendor": "Flashforge" + }, + "OFMsDGbs": { + "filaments": [ + "Anycubic/Anycubic TPU" + ], + "name": "Anycubic TPU", + "filament_type": "TPU", + "filament_vendor": "Anycubic" + }, + "OFMuXBmO": { + "filaments": [ + "OrcaFilamentLibrary/Elas PLA Basic" + ], + "name": "Elas PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Elas" + }, + "OFMzRg65": { + "filaments": [ + "BBL/BETA PLA PRO" + ], + "name": "BETA PLA PRO", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFN8QBhu": { + "filaments": [ + "BBL/addnorth PLA Wood" + ], + "name": "addnorth PLA Wood", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFNBlAPT": { + "filaments": [ + "OrcaArena/Arena PETG Basic" + ], + "name": "Arena PETG Basic", + "filament_type": "PETG", + "filament_vendor": "Orca Arena" + }, + "OFNGTH3w": { + "filaments": [ + "Tiertime/Tiertime PLA" + ], + "name": "Tiertime PLA", + "filament_type": "PLA", + "filament_vendor": "Tiertime" + }, + "OFNQKF0M": { + "filaments": [ + "Tiertime/Tiertime ABS" + ], + "name": "Tiertime ABS", + "filament_type": "ABS", + "filament_vendor": "Tiertime" + }, + "OFNSYu5h": { + "filaments": [ + "Volumic/Volumic PP Ultra (Performance)" + ], + "name": "Volumic PP Ultra (Performance)", + "filament_type": "PP", + "filament_vendor": "Volumic" + }, + "OFNU9YIW": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Azul Boreal" + ], + "name": "FilAr PETG Azul Boreal", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFNemJM6": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Cobre" + ], + "name": "FilAr PLA Cobre", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFNjku08": { + "filaments": [ + "CONSTRUCT3D/Generic High Flow PETG" + ], + "name": "Generic High Flow PETG", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OFNk8AvA": { + "filaments": [ + "BBL/BETA PETG Gradient" + ], + "name": "BETA PETG Gradient", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFNk8bxk": { + "filaments": [ + "BBL/Bambu PA6-GF", + "OrcaFilamentLibrary/Bambu PA6-GF" + ], + "name": "Bambu PA6-GF", + "filament_type": "PA-GF", + "filament_vendor": "Bambu Lab" + }, + "OFNstOna": { + "filaments": [ + "Eryone/Eryone PETG-CF" + ], + "name": "Eryone PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Eryone" + }, + "OFNvBIL0": { + "filaments": [ + "Creality/Hyper PPA-CF" + ], + "name": "Hyper PPA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Creality" + }, + "OFO1GEq6": { + "filaments": [ + "BBL/Panchroma PLA Neon", + "OrcaFilamentLibrary/Panchroma PLA Neon", + "Snapmaker/Panchroma PLA Neon" + ], + "name": "Panchroma PLA Neon", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFO5djrM": { + "filaments": [ + "Chuanying/Generic PETG-CF10", + "Flashforge/Generic PETG-CF10" + ], + "name": "Generic PETG-CF10", + "filament_type": "PETG-CF", + "filament_vendor": "Generic" + }, + "OFO6GMJ3": { + "filaments": [ + "BBL/addnorth TPU EasyFlex" + ], + "name": "addnorth TPU EasyFlex", + "filament_type": "TPU", + "filament_vendor": "addnorth" + }, + "OFOABq7t": { + "filaments": [ + "BBL/AliZ PETG-Metal", + "OrcaFilamentLibrary/AliZ PETG-Metal" + ], + "name": "AliZ PETG-Metal", + "filament_type": "PETG", + "filament_vendor": "Aliz" + }, + "OFOAdMCB": { + "filaments": [ + "OrcaArena/Arena PLA Metal" + ], + "name": "Arena PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFOHOf2F": { + "filaments": [ + "Creality/eSUN PLA-HS" + ], + "name": "eSUN PLA-HS", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFOJPAAS": { + "filaments": [ + "iQ/VXL90 TiQ2 P2" + ], + "name": "VXL90 TiQ2 P2", + "filament_type": "VXL90 Xioneer", + "filament_vendor": "iQ Materials" + }, + "OFOPU1xv": { + "filaments": [ + "Snapmaker/Snapmaker PLA Full Spectrum" + ], + "name": "Snapmaker PLA Full Spectrum", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFOQCfVa": { + "filaments": [ + "BBL/addnorth PLA Premium Silk" + ], + "name": "addnorth PLA Premium Silk", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFObG16Q": { + "filaments": [ + "InfiMech/InfiMech PLA Basic" + ], + "name": "InfiMech PLA Basic", + "filament_type": "PLA", + "filament_vendor": "InfiMech" + }, + "OFObyktP": { + "filaments": [ + "Tiertime/Tiertime PETG" + ], + "name": "Tiertime PETG", + "filament_type": "PETG", + "filament_vendor": "Tiertime" + }, + "OFOiJfLM": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PETG CF" + ], + "name": "FILL3D PETG CF", + "filament_type": "PETG-CF", + "filament_vendor": "FILL3D" + }, + "OFOnSNt3": { + "filaments": [ + "Artillery/Artillery PETG-CF" + ], + "name": "Artillery PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Artillery" + }, + "OFOsHDnB": { + "filaments": [ + "Elegoo/Elegoo PETG PRO", + "OrcaFilamentLibrary/Elegoo PETG PRO" + ], + "name": "Elegoo PETG PRO", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFOuEEvv": { + "filaments": [ + "Qidi/QIDI ABS Rapido 0.2 nozzle" + ], + "name": "QIDI ABS Rapido 0.2 nozzle", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OFOvv91M": { + "filaments": [ + "BBL/PolyLite ABS", + "OrcaFilamentLibrary/PolyLite ABS", + "Qidi/PolyLite ABS" + ], + "name": "PolyLite ABS", + "filament_type": "ABS", + "filament_vendor": "Polymaker" + }, + "OFOwQuZM": { + "filaments": [ + "Snapmaker/Snapmaker PETG-CF" + ], + "name": "Snapmaker PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Snapmaker" + }, + "OFOzwywz": { + "filaments": [ + "Eryone/Eryone ABS" + ], + "name": "Eryone ABS", + "filament_type": "ABS", + "filament_vendor": "Eryone" + }, + "OFP26zNb": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Violeta Jacaranda" + ], + "name": "FilAr PLA Violeta Jacaranda", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFPHLnoe": { + "filaments": [ + "Creality/HP-ASA" + ], + "name": "HP-ASA", + "filament_type": "ASA", + "filament_vendor": "Creality" + }, + "OFPWPlSC": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PP" + ], + "name": "FILL3D PP", + "filament_type": "PP", + "filament_vendor": "FILL3D" + }, + "OFPYDWgC": { + "filaments": [ + "Peopoly/Peopoly Lancer PET-CF" + ], + "name": "Peopoly Lancer PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Peopoly" + }, + "OFPbyOSk": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Rojo Carmesi" + ], + "name": "FilAr PETG Rojo Carmesi", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFPc4zVY": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA INGEO 870" + ], + "name": "Eolas Prints PLA INGEO 870", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFPkCJKE": { + "filaments": [ + "BBL/Panchroma PLA Satin", + "Creality/Panchroma PLA Satin", + "OrcaFilamentLibrary/Panchroma PLA Satin", + "Snapmaker/Panchroma PLA Satin" + ], + "name": "Panchroma PLA Satin", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFPklMI1": { + "filaments": [ + "BBL/Generic PE", + "OrcaFilamentLibrary/Generic PE", + "Tiertime/Generic PE" + ], + "name": "Generic PE", + "filament_type": "PE", + "filament_vendor": "Generic" + }, + "OFPoyiFs": { + "filaments": [ + "BBL/Polymaker HT-PLA", + "OrcaFilamentLibrary/Polymaker HT-PLA", + "Snapmaker/Polymaker HT-PLA" + ], + "name": "Polymaker HT-PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFPqX3x2": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Rosa Amaranto" + ], + "name": "FilAr PLA Rosa Amaranto", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFQ1KzO8": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA Silk" + ], + "name": "Snapmaker J1 PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFQ1zgm3": { + "filaments": [ + "Eryone/Eryone ABS-CF" + ], + "name": "Eryone ABS-CF", + "filament_type": "ABS-CF", + "filament_vendor": "Eryone" + }, + "OFQ3e56w": { + "filaments": [ + "BBL/Bambu PLA Galaxy", + "OrcaFilamentLibrary/Bambu PLA Galaxy" + ], + "name": "Bambu PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFQ40XeN": { + "filaments": [ + "Qidi/QIDI PETG Tough" + ], + "name": "QIDI PETG Tough", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFQ5TxZ2": { + "filaments": [ + "BBL/addnorth PVDF Adamant S1" + ], + "name": "addnorth PVDF Adamant S1", + "filament_type": "PA", + "filament_vendor": "addnorth" + }, + "OFQEGL7z": { + "filaments": [ + "FlyingBear/FlyingBear PA-CF" + ], + "name": "FlyingBear PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "FlyingBear" + }, + "OFQGvU2G": { + "filaments": [ + "OrcaArena/Arena TPU 95A" + ], + "name": "Arena TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Orca Arena" + }, + "OFQHiNJs": { + "filaments": [ + "BBL/Bambu Support G", + "OrcaFilamentLibrary/Bambu Support G" + ], + "name": "Bambu Support G", + "filament_type": "PA", + "filament_vendor": "Bambu Lab" + }, + "OFQLcbps": { + "filaments": [ + "Anker/Generic PA-CF", + "Anycubic/Generic PA-CF", + "BBL/Generic PA-CF", + "Blocks/Generic PA-CF", + "Creality/Generic PA-CF", + "Custom/Generic PA-CF", + "FLSun/Generic PA-CF", + "FlyingBear/Generic PA-CF", + "InfiMech/Generic PA-CF", + "OrcaArena/Generic PA-CF", + "OrcaFilamentLibrary/Generic PA-CF", + "Prusa/Generic PA-CF", + "Qidi/Generic PA-CF", + "Ratrig/Generic PA-CF", + "SecKit/Generic PA-CF", + "Tiertime/Generic PA-CF", + "Vzbot/Generic PA-CF" + ], + "name": "Generic PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Generic" + }, + "OFQMTRc8": { + "filaments": [ + "Snapmaker/Snapmaker J1 PETG" + ], + "name": "Snapmaker J1 PETG", + "filament_type": "PETG", + "filament_vendor": "Snapmaker" + }, + "OFQMsFfF": { + "filaments": [ + "Qidi/QIDI ABS-GF10" + ], + "name": "QIDI ABS-GF10", + "filament_type": "ABS-GF", + "filament_vendor": "QIDI" + }, + "OFQWIKbV": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Titanio" + ], + "name": "FilAr PLA Titanio", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFQYaiGg": { + "filaments": [ + "Snapmaker/Snapmaker PET" + ], + "name": "Snapmaker PET", + "filament_type": "PET", + "filament_vendor": "Snapmaker" + }, + "OFQbjX3s": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PETG" + ], + "name": "FILL3D PETG", + "filament_type": "PETG", + "filament_vendor": "FILL3D" + }, + "OFQdaVZS": { + "filaments": [ + "Creality/Generic PET-CF", + "Elegoo/Generic PET-CF" + ], + "name": "Generic PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Generic" + }, + "OFQe7sAx": { + "filaments": [ + "Anycubic/Anycubic PA6-CF" + ], + "name": "Anycubic PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Anycubic" + }, + "OFQyyO0l": { + "filaments": [ + "Flashforge/Polymaker CoPA" + ], + "name": "Polymaker CoPA", + "filament_type": "PA", + "filament_vendor": "Polymaker" + }, + "OFR0gODA": { + "filaments": [ + "SeeMeCNC/SeeMeCNC ABS" + ], + "name": "SeeMeCNC ABS", + "filament_type": "ABS", + "filament_vendor": "SeeMeCNC" + }, + "OFR1XLMN": { + "filaments": [ + "Qidi/QIDI TPU 95A-HF" + ], + "name": "QIDI TPU 95A-HF", + "filament_type": "TPU", + "filament_vendor": "QIDI" + }, + "OFRFhdqy": { + "filaments": [ + "BBL/addnorth PLA Textura" + ], + "name": "addnorth PLA Textura", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFRJ325z": { + "filaments": [ + "LH/LHS PETG" + ], + "name": "LHS PETG", + "filament_type": "PETG", + "filament_vendor": "LH Stinger" + }, + "OFRhBryT": { + "filaments": [ + "Cubicon/Cubicon PLAi21" + ], + "name": "Cubicon PLAi21", + "filament_type": "PLA", + "filament_vendor": "Cubicon" + }, + "OFRhCTUg": { + "filaments": [ + "Anycubic/Anycubic PET-CF" + ], + "name": "Anycubic PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Anycubic" + }, + "OFRiFnfQ": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PETG Transition" + ], + "name": "Eolas Prints PETG Transition", + "filament_type": "PETG", + "filament_vendor": "Eolas Prints" + }, + "OFRiYgMK": { + "filaments": [ + "BBL/Panchroma PLA Celestial", + "OrcaFilamentLibrary/Panchroma PLA Celestial", + "Snapmaker/Panchroma PLA Celestial" + ], + "name": "Panchroma PLA Celestial", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFRkjhxK": { + "filaments": [ + "Volumic/Volumic PVA-BVOH (Performance)" + ], + "name": "Volumic PVA-BVOH (Performance)", + "filament_type": "PVA", + "filament_vendor": "Volumic" + }, + "OFRooa0F": { + "filaments": [ + "Snapmaker/Snapmaker Dual PA-CF" + ], + "name": "Snapmaker Dual PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Snapmaker" + }, + "OFRpAZ1P": { + "filaments": [ + "DeltaMaker/DeltaMaker Brand PLA" + ], + "name": "DeltaMaker Brand PLA", + "filament_type": "PLA", + "filament_vendor": "DeltaMaker" + }, + "OFRyOsZj": { + "filaments": [ + "re3D/re3D PLA" + ], + "name": "re3D PLA", + "filament_type": "PLA", + "filament_vendor": "re3D" + }, + "OFRzR5mi": { + "filaments": [ + "OrcaFilamentLibrary/eSUN ePLA-LW" + ], + "name": "eSUN ePLA-LW", + "filament_type": "PLA-AERO", + "filament_vendor": "eSUN" + }, + "OFS2tn6G": { + "filaments": [ + "BBL/Fiberon PA612-CF", + "OrcaFilamentLibrary/Fiberon PA612-CF" + ], + "name": "Fiberon PA612-CF", + "filament_type": "PA", + "filament_vendor": "Polymaker" + }, + "OFS4jbj3": { + "filaments": [ + "Eryone/Eryone PA" + ], + "name": "Eryone PA", + "filament_type": "PA", + "filament_vendor": "Eryone" + }, + "OFS8lTQt": { + "filaments": [ + "BBL/Panchroma PLA Silk", + "OrcaFilamentLibrary/Panchroma PLA Silk", + "Snapmaker/Panchroma PLA Silk" + ], + "name": "Panchroma PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFSDfduA": { + "filaments": [ + "Flashforge/Flashforge TPU 65D" + ], + "name": "Flashforge TPU 65D", + "filament_type": "TPU", + "filament_vendor": "Flashforge" + }, + "OFSa39yP": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA" + ], + "name": "Snapmaker J1 PLA", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFSbGfsz": { + "filaments": [ + "OrcaArena/Arena PLA Basic" + ], + "name": "Arena PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFSfm8iP": { + "filaments": [ + "BBL/BETA PLA Heat Color Change" + ], + "name": "BETA PLA Heat Color Change", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFSiCZP3": { + "filaments": [ + "BBL/BETA PETG-GF" + ], + "name": "BETA PETG-GF", + "filament_type": "PETG-CF", + "filament_vendor": "BETA" + }, + "OFSqIcJC": { + "filaments": [ + "Flashforge/Flashforge TPU 95A" + ], + "name": "Flashforge TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Flashforge" + }, + "OFSw6Mor": { + "filaments": [ + "BBL/addnorth PA Adura FDA" + ], + "name": "addnorth PA Adura FDA", + "filament_type": "PA", + "filament_vendor": "addnorth" + }, + "OFSwbBWS": { + "filaments": [], + "name": "DREMC PLA+", + "filament_type": "PLA", + "filament_vendor": "DREMC" + }, + "OFT2jon4": { + "filaments": [ + "Qidi/QIDI ABS Rapido" + ], + "name": "QIDI ABS Rapido", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OFTGHyNC": { + "filaments": [ + "OrcaFilamentLibrary/Bambu PLA Impact" + ], + "name": "Bambu PLA Impact", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFTHDCqA": { + "filaments": [ + "BBL/Bambu PLA Pure" + ], + "name": "Bambu PLA Pure", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFTOPcx0": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints TPU Transition" + ], + "name": "Eolas Prints TPU Transition", + "filament_type": "TPU", + "filament_vendor": "Eolas Prints" + }, + "OFTRZ8Y4": { + "filaments": [ + "BBL/Bambu PETG-CF", + "OrcaFilamentLibrary/Bambu PETG-CF" + ], + "name": "Bambu PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Bambu Lab" + }, + "OFTSXxzE": { + "filaments": [ + "Flashforge/Flashforge PPS-CF" + ], + "name": "Flashforge PPS-CF", + "filament_type": "PPS-CF", + "filament_vendor": "Flashforge" + }, + "OFTXduCM": { + "filaments": [ + "Creality/eSUN ABS+" + ], + "name": "eSUN ABS+", + "filament_type": "ABS", + "filament_vendor": "eSUN" + }, + "OFTcE0nA": { + "filaments": [ + "OrcaFilamentLibrary/eSUN PLA-Basic" + ], + "name": "eSUN PLA-Basic", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFTdauIq": { + "filaments": [ + "Volumic/Volumic PCTG Ultra (Performance)" + ], + "name": "Volumic PCTG Ultra (Performance)", + "filament_type": "PETG", + "filament_vendor": "Volumic" + }, + "OFTkj6DR": { + "filaments": [ + "Anycubic/Anycubic PVA" + ], + "name": "Anycubic PVA", + "filament_type": "PVA", + "filament_vendor": "Anycubic" + }, + "OFTlRzpe": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Gris Pizarra" + ], + "name": "FilAr PLA Gris Pizarra", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFTnWzBs": { + "filaments": [ + "Creality/Hyper PLA-CF" + ], + "name": "Hyper PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Creality" + }, + "OFTs8peJ": { + "filaments": [ + "Snapmaker/Snapmaker Dual TPE" + ], + "name": "Snapmaker Dual TPE", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFTsHNQi": { + "filaments": [ + "Qidi/QIDI ASA" + ], + "name": "QIDI ASA", + "filament_type": "ASA", + "filament_vendor": "QIDI" + }, + "OFU1zPxE": { + "filaments": [ + "Elegoo/Elegoo PLA Galaxy", + "OrcaFilamentLibrary/Elegoo PLA Galaxy" + ], + "name": "Elegoo PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFU3QXL7": { + "filaments": [ + "re3D/re3D PC" + ], + "name": "re3D PC", + "filament_type": "PC", + "filament_vendor": "re3D" + }, + "OFU5JPDy": { + "filaments": [ + "BBL/addnorth PETG PRO Matte" + ], + "name": "addnorth PETG PRO Matte", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OFU7CKZt": { + "filaments": [ + "Volumic/Volumic ASA Ultra (Performance)" + ], + "name": "Volumic ASA Ultra (Performance)", + "filament_type": "ASA", + "filament_vendor": "Volumic" + }, + "OFUF7oA4": { + "filaments": [ + "Creality/Hyper PC" + ], + "name": "Hyper PC", + "filament_type": "PC", + "filament_vendor": "Creality" + }, + "OFUH1aee": { + "filaments": [ + "Volumic/Volumic FLEX93 Ultra (Performance)" + ], + "name": "Volumic FLEX93 Ultra (Performance)", + "filament_type": "TPU", + "filament_vendor": "Volumic" + }, + "OFUIfGoh": { + "filaments": [ + "Snapmaker/Snapmaker Dual PET" + ], + "name": "Snapmaker Dual PET", + "filament_type": "PET", + "filament_vendor": "Snapmaker" + }, + "OFUYCqtB": { + "filaments": [ + "InfiMech/InfiMech PLA" + ], + "name": "InfiMech PLA", + "filament_type": "PLA", + "filament_vendor": "InfiMech" + }, + "OFUaHEO9": { + "filaments": [ + "Anycubic/Anycubic PEBA 95A" + ], + "name": "Anycubic PEBA 95A", + "filament_type": "PEBA", + "filament_vendor": "Anycubic" + }, + "OFUanySo": { + "filaments": [ + "BBL/Bambu PLA Silk+", + "OrcaFilamentLibrary/Bambu PLA Silk+" + ], + "name": "Bambu PLA Silk+", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFUmS5z5": { + "filaments": [ + "Creality/eSUN ASA+" + ], + "name": "eSUN ASA+", + "filament_type": "ASA", + "filament_vendor": "eSUN" + }, + "OFUtiVRn": { + "filaments": [ + "BBL/addnorth PETG ESD" + ], + "name": "addnorth PETG ESD", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OFUyDDNv": { + "filaments": [ + "Elegoo/Elegoo PC", + "OrcaFilamentLibrary/Elegoo PC" + ], + "name": "Elegoo PC", + "filament_type": "PC", + "filament_vendor": "Elegoo" + }, + "OFV5Q7j2": { + "filaments": [ + "Snapmaker/Snapmaker J1 TPE" + ], + "name": "Snapmaker J1 TPE", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFV5c8hG": { + "filaments": [ + "Flashforge/Flashforge PLA Sparkle" + ], + "name": "Flashforge PLA Sparkle", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFV5wEMe": { + "filaments": [ + "Afinia/Afinia ABS" + ], + "name": "Afinia ABS", + "filament_type": "ABS", + "filament_vendor": "Afinia" + }, + "OFV8Mxqx": { + "filaments": [], + "name": "Flashforge PLA-SILK", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFVBlUFH": { + "filaments": [], + "name": "DREMC PETG", + "filament_type": "PETG", + "filament_vendor": "DREMC" + }, + "OFVCkX5w": { + "filaments": [ + "BBL/Bambu TPU 95A", + "OrcaFilamentLibrary/Bambu TPU 95A" + ], + "name": "Bambu TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Bambu Lab" + }, + "OFVDWuxl": { + "filaments": [ + "BBL/addnorth PLA HT-PLA PRO Matte" + ], + "name": "addnorth PLA HT-PLA PRO Matte", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFVHMFJX": { + "filaments": [ + "Qidi/QIDI PETG Tough 0.2 nozzle" + ], + "name": "QIDI PETG Tough 0.2 nozzle", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFVptRxp": { + "filaments": [ + "BBL/COEX TPE 30D", + "OrcaFilamentLibrary/COEX TPE 30D" + ], + "name": "COEX TPE 30D", + "filament_type": "TPU", + "filament_vendor": "COEX 3D" + }, + "OFVtIasg": { + "filaments": [ + "Eryone/Eryone ASA" + ], + "name": "Eryone ASA", + "filament_type": "ASA", + "filament_vendor": "Eryone" + }, + "OFW29a9R": { + "filaments": [ + "BBL/PolyTerra PLA", + "OrcaArena/PolyTerra PLA", + "OrcaFilamentLibrary/PolyTerra PLA", + "Snapmaker/PolyTerra PLA" + ], + "name": "PolyTerra PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFW5FqkL": { + "filaments": [ + "Qidi/QIDI PLA Rapido Silk" + ], + "name": "QIDI PLA Rapido Silk", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFW8M3CY": { + "filaments": [ + "BBL/BETA PLA Chameleon" + ], + "name": "BETA PLA Chameleon", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFW8lqnb": { + "filaments": [ + "Snapmaker/Snapmaker PETG Translucent" + ], + "name": "Snapmaker PETG Translucent", + "filament_type": "PETG", + "filament_vendor": "Snapmaker" + }, + "OFWDe7YH": { + "filaments": [ + "Qidi/QIDI UltraPA" + ], + "name": "QIDI UltraPA", + "filament_type": "UltraPA", + "filament_vendor": "QIDI" + }, + "OFWK0Y9A": { + "filaments": [ + "BBL/addnorth PA Adura" + ], + "name": "addnorth PA Adura", + "filament_type": "PA", + "filament_vendor": "addnorth" + }, + "OFWRITFw": { + "filaments": [ + "Prusa/Prusament rPLA" + ], + "name": "Prusament rPLA", + "filament_type": "PLA", + "filament_vendor": "Prusa Polymers" + }, + "OFWTAEjH": { + "filaments": [ + "Snapmaker/Snapmaker TPE" + ], + "name": "Snapmaker TPE", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFWTRJ1K": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Bronce" + ], + "name": "FilAr PLA Bronce", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFWXCbVF": { + "filaments": [ + "Flashforge/Flashforge PC" + ], + "name": "Flashforge PC", + "filament_type": "PC", + "filament_vendor": "Flashforge" + }, + "OFWYtgCa": { + "filaments": [ + "Elegoo/Elegoo PLA Wood", + "OrcaFilamentLibrary/Elegoo PLA Wood" + ], + "name": "Elegoo PLA Wood", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFWa0NiB": { + "filaments": [ + "Volumic/Volumic NYLON Ultra" + ], + "name": "Volumic NYLON Ultra", + "filament_type": "PA", + "filament_vendor": "Volumic" + }, + "OFWao3Ic": { + "filaments": [ + "Creality/Ender-PLA" + ], + "name": "Ender-PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFWbdGsC": { + "filaments": [ + "Anker/Generic PLA-CF", + "Anycubic/Generic PLA-CF", + "Artillery/Generic PLA-CF", + "BBL/Generic PLA-CF", + "Blocks/Generic PLA-CF", + "Creality/Generic PLA-CF", + "Custom/Generic PLA-CF", + "FLSun/Generic PLA-CF", + "Flashforge/Generic PLA-CF", + "OrcaArena/Generic PLA-CF", + "OrcaFilamentLibrary/Generic PLA-CF", + "Prusa/Generic PLA-CF", + "Qidi/Generic PLA-CF", + "Ratrig/Generic PLA-CF", + "SecKit/Generic PLA-CF", + "Tiertime/Generic PLA-CF", + "Vzbot/Generic PLA-CF" + ], + "name": "Generic PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Generic" + }, + "OFWgFOjn": { + "filaments": [ + "Snapmaker/Snapmaker PLA Silk" + ], + "name": "Snapmaker PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFWwF7K7": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Cafe con Leche" + ], + "name": "FilAr PLA Cafe con Leche", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFX0ycRQ": { + "filaments": [ + "BBL/Fiberon PA12-CF", + "OrcaFilamentLibrary/Fiberon PA12-CF" + ], + "name": "Fiberon PA12-CF", + "filament_type": "PA-CF", + "filament_vendor": "Polymaker" + }, + "OFX2zcrM": { + "filaments": [ + "Chuanying/Generic PLA-CF10", + "Flashforge/Generic PLA-CF10" + ], + "name": "Generic PLA-CF10", + "filament_type": "PLA-CF", + "filament_vendor": "Generic" + }, + "OFXCBZTA": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints ABS" + ], + "name": "Eolas Prints ABS", + "filament_type": "ABS", + "filament_vendor": "Eolas Prints" + }, + "OFXIbw5D": { + "filaments": [ + "BBL/Bambu PLA Matte", + "OrcaFilamentLibrary/Bambu PLA Matte" + ], + "name": "Bambu PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFXJ9iom": { + "filaments": [ + "iQ/Grauts HPP4GF25 P1" + ], + "name": "Grauts HPP4GF25 P1", + "filament_type": "HPP4GF25", + "filament_vendor": "iQ Materials" + }, + "OFXSvqOX": { + "filaments": [ + "Snapmaker/Snapmaker TPU 95A HF" + ], + "name": "Snapmaker TPU 95A HF", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFXTPuqV": { + "filaments": [ + "OrcaFilamentLibrary/Elas PETG Basic" + ], + "name": "Elas PETG Basic", + "filament_type": "PETG", + "filament_vendor": "Elas" + }, + "OFXW4CDh": { + "filaments": [ + "Ratrig/Generic PCTG BigNozzle" + ], + "name": "Generic PCTG BigNozzle", + "filament_type": "PCTG", + "filament_vendor": "Generic" + }, + "OFXi59OX": { + "filaments": [ + "Afinia/Afinia Value ABS" + ], + "name": "Afinia Value ABS", + "filament_type": "ABS", + "filament_vendor": "Afinia" + }, + "OFXiArjA": { + "filaments": [ + "Flashforge/Flashforge PETG Pro" + ], + "name": "Flashforge PETG Pro", + "filament_type": "PETG", + "filament_vendor": "Flashforge" + }, + "OFXk1emJ": { + "filaments": [ + "Artillery/Artillery PLA Basic" + ], + "name": "Artillery PLA Basic", + "filament_type": "PLA Basic", + "filament_vendor": "Artillery" + }, + "OFXkm8q1": { + "filaments": [ + "BBL/Generic PP-CF", + "Creality/Generic PP-CF", + "OrcaFilamentLibrary/Generic PP-CF", + "Tiertime/Generic PP-CF" + ], + "name": "Generic PP-CF", + "filament_type": "PP-CF", + "filament_vendor": "Generic" + }, + "OFXmv5p0": { + "filaments": [ + "Creality/Generic Speed PLA" + ], + "name": "Generic Speed PLA", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFXn3Vd9": { + "filaments": [ + "Qidi/QIDI Support For PAHT" + ], + "name": "QIDI Support For PAHT", + "filament_type": "PAHT-S", + "filament_vendor": "QIDI" + }, + "OFXnToSX": { + "filaments": [ + "Creality/Hyper Stardust" + ], + "name": "Hyper Stardust", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFXuGxvQ": { + "filaments": [ + "Volumic/Volumic PLA Ultra" + ], + "name": "Volumic PLA Ultra", + "filament_type": "PLA", + "filament_vendor": "Volumic" + }, + "OFXz7Mwx": { + "filaments": [ + "Elegoo/Elegoo PLA Silk", + "OrcaFilamentLibrary/Elegoo PLA Silk" + ], + "name": "Elegoo PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFXzQ4yL": { + "filaments": [ + "BBL/Bambu ASA-Aero", + "OrcaFilamentLibrary/Bambu ASA-Aero" + ], + "name": "Bambu ASA-Aero", + "filament_type": "ASA-AERO", + "filament_vendor": "Bambu Lab" + }, + "OFY0F5qA": { + "filaments": [ + "Volumic/Volumic PETG Ultra carbone (Performance)" + ], + "name": "Volumic PETG Ultra carbone (Performance)", + "filament_type": "PETG", + "filament_vendor": "Volumic" + }, + "OFY3AB7j": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA Matte" + ], + "name": "Snapmaker J1 PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFY7jxcS": { + "filaments": [ + "Snapmaker/Snapmaker TPU 90A" + ], + "name": "Snapmaker TPU 90A", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFY9muEs": { + "filaments": [ + "Anker/Generic ABS", + "Anycubic/Generic ABS", + "Artillery/Generic ABS", + "BBL/Generic ABS", + "Blocks/Generic ABS", + "Chuanying/Generic ABS", + "Co Print/Generic ABS", + "CoLiDo/Generic ABS", + "Comgrow/Generic ABS", + "Creality/Generic ABS", + "Custom/Generic ABS", + "Elegoo/Generic ABS", + "FLSun/Generic ABS", + "Flashforge/Generic ABS", + "FlyingBear/Generic ABS", + "InfiMech/Generic ABS", + "Lulzbot/Generic ABS", + "OrcaArena/Generic ABS", + "OrcaFilamentLibrary/Generic ABS", + "Peopoly/Generic ABS", + "Prusa/Generic ABS", + "Qidi/Generic ABS", + "RH3D/Generic ABS", + "Ratrig/Generic ABS", + "SecKit/Generic ABS", + "Sovol/Generic ABS", + "Tiertime/Generic ABS", + "Vzbot/Generic ABS", + "Z-Bolt/Generic ABS" + ], + "name": "Generic ABS", + "filament_type": "ABS", + "filament_vendor": "Generic" + }, + "OFYE7YZw": { + "filaments": [ + "Qidi/Tinmorry PETG-ECO" + ], + "name": "Tinmorry PETG-ECO", + "filament_type": "PETG", + "filament_vendor": "Tinmorry" + }, + "OFYEtXuk": { + "filaments": [ + "Snapmaker/Snapmaker J1 PA-CF" + ], + "name": "Snapmaker J1 PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Snapmaker" + }, + "OFYGbPHX": { + "filaments": [ + "OrcaFilamentLibrary/PolyLite Dual PLA", + "Snapmaker/PolyLite Dual PLA" + ], + "name": "PolyLite Dual PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFYGrfHY": { + "filaments": [ + "BBL/BETA PETG Fluorescence" + ], + "name": "BETA PETG Fluorescence", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFYPdQJh": { + "filaments": [ + "Anker/Generic PETG", + "Anycubic/Generic PETG", + "Artillery/Generic PETG", + "BBL/Generic PETG", + "Blocks/Generic PETG", + "CONSTRUCT3D/Generic PETG", + "Chuanying/Generic PETG", + "Co Print/Generic PETG", + "CoLiDo/Generic PETG", + "Comgrow/Generic PETG", + "Creality/Generic PETG", + "Custom/Generic PETG", + "DeltaMaker/Generic PETG", + "Elegoo/Generic PETG", + "FLSun/Generic PETG", + "Flashforge/Generic PETG", + "FlyingBear/Generic PETG", + "Ginger Additive/Generic PETG", + "InfiMech/Generic PETG", + "LONGER/Generic PETG", + "Lulzbot/Generic PETG", + "OrcaArena/Generic PETG", + "OrcaFilamentLibrary/Generic PETG", + "Peopoly/Generic PETG", + "Prusa/Generic PETG", + "Qidi/Generic PETG", + "RH3D/Generic PETG", + "Ratrig/Generic PETG", + "SecKit/Generic PETG", + "Sovol/Generic PETG", + "Tiertime/Generic PETG", + "Vzbot/Generic PETG", + "Z-Bolt/Generic PETG" + ], + "name": "Generic PETG", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OFYTIMbj": { + "filaments": [ + "Flashforge/Flashforge ABS-CF" + ], + "name": "Flashforge ABS-CF", + "filament_type": "ABS-CF", + "filament_vendor": "Flashforge" + }, + "OFYYeMyQ": { + "filaments": [ + "Flashforge/Flashforge PETG Basic" + ], + "name": "Flashforge PETG Basic", + "filament_type": "PETG", + "filament_vendor": "Flashforge" + }, + "OFYd5uS3": { + "filaments": [], + "name": "DREMC TPU 95A", + "filament_type": "TPU", + "filament_vendor": "DREMC" + }, + "OFYezc6s": { + "filaments": [ + "FlyingBear/FlyingBear TPU" + ], + "name": "FlyingBear TPU", + "filament_type": "TPU", + "filament_vendor": "FlyingBear" + }, + "OFYuowge": { + "filaments": [ + "FlyingBear/Other ABS", + "InfiMech/Other ABS" + ], + "name": "Other ABS", + "filament_type": "ABS", + "filament_vendor": "Other" + }, + "OFZ0mR5b": { + "filaments": [ + "Anycubic/Anycubic PLA-CF" + ], + "name": "Anycubic PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Anycubic" + }, + "OFZ2LuAi": { + "filaments": [ + "Wanhao France/YUMI PLA Bowden" + ], + "name": "YUMI PLA Bowden", + "filament_type": "PLA", + "filament_vendor": "Yumi" + }, + "OFZ3K2cL": { + "filaments": [ + "Qidi/QIDI PA6-CF" + ], + "name": "QIDI PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "QIDI" + }, + "OFZ4QbfK": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Rosa Flamenco" + ], + "name": "FilAr PLA Rosa Flamenco", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFZGrQTU": { + "filaments": [ + "BBL/addnorth PETG Economy" + ], + "name": "addnorth PETG Economy", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OFZJft47": { + "filaments": [ + "BBL/addnorth PLA Economy" + ], + "name": "addnorth PLA Economy", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFZLtWYs": { + "filaments": [ + "Qidi/QIDI ABS-GF25" + ], + "name": "QIDI ABS-GF25", + "filament_type": "ABS-GF", + "filament_vendor": "QIDI" + }, + "OFZOuWrO": { + "filaments": [ + "Qidi/QIDI PPS-CF" + ], + "name": "QIDI PPS-CF", + "filament_type": "PPS-CF", + "filament_vendor": "QIDI" + }, + "OFZivHGL": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA" + ], + "name": "Snapmaker Dual PLA", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFZqZMuv": { + "filaments": [ + "BBL/BETA ASA" + ], + "name": "BETA ASA", + "filament_type": "ASA", + "filament_vendor": "BETA" + }, + "OFZr862X": { + "filaments": [ + "Creality/Generic PLA HF", + "Prusa/Generic PLA HF" + ], + "name": "Generic PLA HF", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFZtOQtl": { + "filaments": [ + "Flashforge/Flashforge PA6-CF" + ], + "name": "Flashforge PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Flashforge" + }, + "OFZtkHRq": { + "filaments": [ + "Anycubic/Anycubic PC" + ], + "name": "Anycubic PC", + "filament_type": "PC", + "filament_vendor": "Anycubic" + }, + "OFaDOaNt": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Celeste Cielo" + ], + "name": "FilAr PLA Celeste Cielo", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFaDsTE0": { + "filaments": [ + "Flashforge/Polymaker S1" + ], + "name": "Polymaker S1", + "filament_type": "PA", + "filament_vendor": "Polymaker" + }, + "OFaEesXQ": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Rojo de Carreras" + ], + "name": "FilAr PLA Rojo de Carreras", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFaEuvNF": { + "filaments": [ + "Anycubic/Anycubic PAHT-CF" + ], + "name": "Anycubic PAHT-CF", + "filament_type": "PAHT-CF", + "filament_vendor": "Anycubic" + }, + "OFaHjk1V": { + "filaments": [ + "Volumic/Volumic PC" + ], + "name": "Volumic PC", + "filament_type": "PC", + "filament_vendor": "Volumic" + }, + "OFaP2SsH": { + "filaments": [ + "LH/LHS ASA" + ], + "name": "LHS ASA", + "filament_type": "ASA", + "filament_vendor": "LH Stinger" + }, + "OFaQMgRH": { + "filaments": [ + "BBL/Bambu PLA Tough", + "OrcaFilamentLibrary/Bambu PLA Tough" + ], + "name": "Bambu PLA Tough", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFaRjiIm": { + "filaments": [ + "SeeMeCNC/SeeMeCNC PETG-CF" + ], + "name": "SeeMeCNC PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "SeeMeCNC" + }, + "OFaYz8iE": { + "filaments": [ + "OrcaFilamentLibrary/Elas PLA Pro" + ], + "name": "Elas PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Elas" + }, + "OFaaddbQ": { + "filaments": [ + "Flashforge/Flashforge PVA" + ], + "name": "Flashforge PVA", + "filament_type": "PVA", + "filament_vendor": "Flashforge" + }, + "OFaeIx7W": { + "filaments": [ + "iQ/Polymaker PETG Polymax black P1" + ], + "name": "Polymaker PETG Polymax black P1", + "filament_type": "PETG Polymax", + "filament_vendor": "iQ Materials" + }, + "OFafO6VM": { + "filaments": [ + "Elegoo/Generic PC-CF" + ], + "name": "Generic PC-CF", + "filament_type": "PC-CF", + "filament_vendor": "Generic" + }, + "OFausr3F": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Rosa" + ], + "name": "FilAr PLA-mate Rosa", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFb5EEM3": { + "filaments": [ + "Artillery/Artillery PET" + ], + "name": "Artillery PET", + "filament_type": "PET", + "filament_vendor": "Artillery" + }, + "OFbP8zEO": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Silk" + ], + "name": "Eolas Prints PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFbPuPKY": { + "filaments": [ + "Prusa/Generic FLEX" + ], + "name": "Generic FLEX", + "filament_type": "FLEX", + "filament_vendor": "Generic" + }, + "OFbSChKb": { + "filaments": [ + "SeeMeCNC/SeeMeCNC PLA" + ], + "name": "SeeMeCNC PLA", + "filament_type": "PLA", + "filament_vendor": "SeeMeCNC" + }, + "OFbSZBOi": { + "filaments": [ + "InfiMech/InfiMech TPU Basic" + ], + "name": "InfiMech TPU Basic", + "filament_type": "TPU", + "filament_vendor": "InfiMech" + }, + "OFbh7HcA": { + "filaments": [ + "Eryone/Eryone PP-CF" + ], + "name": "Eryone PP-CF", + "filament_type": "PP-CF", + "filament_vendor": "Eryone" + }, + "OFc3xdm9": { + "filaments": [ + "BBL/Overture PLA", + "OrcaFilamentLibrary/Overture PLA", + "Qidi/Overture PLA" + ], + "name": "Overture PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFc87pL3": { + "filaments": [ + "OrcaArena/Arena PET-CF" + ], + "name": "Arena PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Orca Arena" + }, + "OFcBJQcC": { + "filaments": [ + "Snapmaker/Snapmaker Dual TPU High-Flow" + ], + "name": "Snapmaker Dual TPU High-Flow", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFcBl0nJ": { + "filaments": [ + "BBL/Fiberon PA612-CF15" + ], + "name": "Fiberon PA612-CF15", + "filament_type": "PA-CF", + "filament_vendor": "Polymaker" + }, + "OFcJDtTx": { + "filaments": [ + "Artillery/Artillery TPU" + ], + "name": "Artillery TPU", + "filament_type": "TPU", + "filament_vendor": "Artillery" + }, + "OFcKtw8W": { + "filaments": [ + "Volumic/PA6 CF20 (Performance)" + ], + "name": "PA6 CF20 (Performance)", + "filament_type": "PA6-CF", + "filament_vendor": "Volumic" + }, + "OFcVLpNA": { + "filaments": [ + "Flashforge/FusRock PAHT-GF" + ], + "name": "FusRock PAHT-GF", + "filament_type": "PAHT-GF", + "filament_vendor": "FusRock" + }, + "OFcfQk4h": { + "filaments": [ + "BBL/Overture Air PLA", + "OrcaFilamentLibrary/Overture Air PLA" + ], + "name": "Overture Air PLA", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFcnWTJB": { + "filaments": [ + "BBL/BETA PLA Glitter" + ], + "name": "BETA PLA Glitter", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFcogyWl": { + "filaments": [ + "WonderMaker/WonderMaker PLA Metal" + ], + "name": "WonderMaker PLA Metal", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFcpa50Z": { + "filaments": [ + "BBL/addnorth PLA-CF Carbon Fiber" + ], + "name": "addnorth PLA-CF Carbon Fiber", + "filament_type": "PLA-CF", + "filament_vendor": "addnorth" + }, + "OFctg8r1": { + "filaments": [ + "CoLiDo/CoLiDo PLA+" + ], + "name": "CoLiDo PLA+", + "filament_type": "PLA", + "filament_vendor": "CoLiDo" + }, + "OFcvKkrs": { + "filaments": [ + "BBL/Overture TPU", + "OrcaFilamentLibrary/Overture TPU" + ], + "name": "Overture TPU", + "filament_type": "TPU", + "filament_vendor": "Overture" + }, + "OFcytyoA": { + "filaments": [ + "BBL/Fiberon PETG-ESD", + "OrcaFilamentLibrary/Fiberon PETG-ESD", + "Snapmaker/Fiberon PETG-ESD" + ], + "name": "Fiberon PETG-ESD", + "filament_type": "PETG", + "filament_vendor": "Polymaker" + }, + "OFd0Fv0k": { + "filaments": [ + "BBL/Generic PE-CF", + "OrcaFilamentLibrary/Generic PE-CF", + "Tiertime/Generic PE-CF" + ], + "name": "Generic PE-CF", + "filament_type": "PE-CF", + "filament_vendor": "Generic" + }, + "OFd2vX0G": { + "filaments": [ + "BBL/COEX PLA PRIME", + "OrcaFilamentLibrary/COEX PLA PRIME" + ], + "name": "COEX PLA PRIME", + "filament_type": "PLA", + "filament_vendor": "COEX 3D" + }, + "OFd4zw5l": { + "filaments": [ + "BBL/AliZ PA-CF", + "OrcaFilamentLibrary/AliZ PA-CF" + ], + "name": "AliZ PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Aliz" + }, + "OFdD5Wbu": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA-CF" + ], + "name": "Snapmaker J1 PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Snapmaker" + }, + "OFdI4zMo": { + "filaments": [], + "name": "DREMC ASA CF", + "filament_type": "ASA", + "filament_vendor": "DREMC" + }, + "OFdXVjGZ": { + "filaments": [ + "Tiertime/Tiertime PC" + ], + "name": "Tiertime PC", + "filament_type": "PC", + "filament_vendor": "Tiertime" + }, + "OFdb8YNz": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Verde Manzana" + ], + "name": "FilAr PLA Verde Manzana", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFdd8ZqJ": { + "filaments": [ + "Snapmaker/Snapmaker PLA Wood" + ], + "name": "Snapmaker PLA Wood", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFdqkWtz": { + "filaments": [ + "Flashforge/Flashforge PLA Luminous" + ], + "name": "Flashforge PLA Luminous", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFdrYBmI": { + "filaments": [ + "Tiertime/Tiertime ASA" + ], + "name": "Tiertime ASA", + "filament_type": "ASA", + "filament_vendor": "Tiertime" + }, + "OFdtPd9h": { + "filaments": [ + "Qidi/QIDI PETG-GF" + ], + "name": "QIDI PETG-GF", + "filament_type": "PETG-GF", + "filament_vendor": "QIDI" + }, + "OFdzlrhi": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Chocolate" + ], + "name": "FilAr PLA-mate Chocolate", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFe61n6v": { + "filaments": [ + "Ratrig/RatRig PunkFil PETG CF" + ], + "name": "RatRig PunkFil PETG CF", + "filament_type": "PETG-CF10", + "filament_vendor": "RatRig" + }, + "OFe8tuNb": { + "filaments": [ + "Tiertime/Tiertime PA6-CF" + ], + "name": "Tiertime PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Tiertime" + }, + "OFe8yBMG": { + "filaments": [ + "Qidi/QIDI PETG Tough 0.6 nozzle" + ], + "name": "QIDI PETG Tough 0.6 nozzle", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFe98A1y": { + "filaments": [ + "Elegoo/Elegoo PET-CF", + "OrcaFilamentLibrary/Elegoo PET-CF" + ], + "name": "Elegoo PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Elegoo" + }, + "OFeAxvEt": { + "filaments": [ + "Snapmaker/Snapmaker Dual ABS Benchy" + ], + "name": "Snapmaker Dual ABS Benchy", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OFeCJqxx": { + "filaments": [ + "Qidi/QIDI ABS Rapido Metal" + ], + "name": "QIDI ABS Rapido Metal", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OFeF4UNh": { + "filaments": [ + "BBL/BETA PLA Silk" + ], + "name": "BETA PLA Silk", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFeIyhUx": { + "filaments": [ + "Anycubic/Anycubic PC-CF" + ], + "name": "Anycubic PC-CF", + "filament_type": "PC-CF", + "filament_vendor": "Anycubic" + }, + "OFeTATC7": { + "filaments": [ + "Snapmaker/Snapmaker J1 Breakaway" + ], + "name": "Snapmaker J1 Breakaway", + "filament_type": "Breakaway Support", + "filament_vendor": "Snapmaker" + }, + "OFeVzkSU": { + "filaments": [ + "Snapmaker/Fiberon PPS-GF20" + ], + "name": "Fiberon PPS-GF20", + "filament_type": "ABS", + "filament_vendor": "Polymaker" + }, + "OFeelsSM": { + "filaments": [ + "Qidi/HATCHBOX PLA" + ], + "name": "HATCHBOX PLA", + "filament_type": "PLA", + "filament_vendor": "HATCHBOX" + }, + "OFelDBgv": { + "filaments": [ + "Snapmaker/Polymaker PLA" + ], + "name": "Polymaker PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFepU7Tl": { + "filaments": [ + "WonderMaker/WonderMaker PLA Matte" + ], + "name": "WonderMaker PLA Matte", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFesA6rF": { + "filaments": [ + "Anker/Generic PLA Silk", + "BBL/Generic PLA Silk", + "Creality/Generic PLA Silk", + "FLSun/Generic PLA Silk", + "Flashforge/Generic PLA Silk", + "OrcaArena/Generic PLA Silk", + "OrcaFilamentLibrary/Generic PLA Silk", + "Prusa/Generic PLA Silk", + "Qidi/Generic PLA Silk", + "Sovol/Generic PLA Silk", + "Tiertime/Generic PLA Silk" + ], + "name": "Generic PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFexaZU2": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Manteca" + ], + "name": "FilAr PLA Manteca", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFf0MkD5": { + "filaments": [ + "Qidi/QIDI PETG Translucent" + ], + "name": "QIDI PETG Translucent", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFf5awy4": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Matte" + ], + "name": "Eolas Prints PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFf6ZEvu": { + "filaments": [ + "InfiMech/InfiMech PC" + ], + "name": "InfiMech PC", + "filament_type": "PC", + "filament_vendor": "InfiMech" + }, + "OFf6mfQO": { + "filaments": [ + "BBL/Bambu Support for ABS", + "OrcaFilamentLibrary/Bambu Support for ABS" + ], + "name": "Bambu Support for ABS", + "filament_type": "ABS", + "filament_vendor": "Bambu Lab" + }, + "OFf6ynfH": { + "filaments": [ + "FlyingBear/FlyingBear PETG Basic" + ], + "name": "FlyingBear PETG Basic", + "filament_type": "PETG Basic", + "filament_vendor": "FlyingBear" + }, + "OFfBpSRI": { + "filaments": [ + "BBL/Bambu ASA", + "OrcaFilamentLibrary/Bambu ASA" + ], + "name": "Bambu ASA", + "filament_type": "ASA", + "filament_vendor": "Bambu Lab" + }, + "OFfD87Gy": { + "filaments": [ + "Snapmaker/Snapmaker PLA Glow" + ], + "name": "Snapmaker PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFfHGM1D": { + "filaments": [ + "re3D/re3D rPP" + ], + "name": "re3D rPP", + "filament_type": "PP", + "filament_vendor": "re3D" + }, + "OFfJSCzm": { + "filaments": [ + "OrcaFilamentLibrary/FDplast PETG" + ], + "name": "FDplast PETG", + "filament_type": "PETG", + "filament_vendor": "FDplast" + }, + "OFfSqS4R": { + "filaments": [ + "Creality/ENDER FAST PLA" + ], + "name": "ENDER FAST PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFfYHK5z": { + "filaments": [ + "Qidi/Polymaker PLA-HT" + ], + "name": "Polymaker PLA-HT", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFfZcoKr": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Piel" + ], + "name": "FilAr PLA-mate Piel", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFfb10SK": { + "filaments": [ + "Artillery/Artillery PC" + ], + "name": "Artillery PC", + "filament_type": "PC", + "filament_vendor": "Artillery" + }, + "OFfmHUkQ": { + "filaments": [ + "Snapmaker/Snapmaker Dual Breakaway" + ], + "name": "Snapmaker Dual Breakaway", + "filament_type": "Breakaway Support", + "filament_vendor": "Snapmaker" + }, + "OFfmZrI3": { + "filaments": [ + "OrcaFilamentLibrary/FDplast TPU" + ], + "name": "FDplast TPU", + "filament_type": "TPU", + "filament_vendor": "FDplast" + }, + "OFfnXFie": { + "filaments": [ + "BBL/COEX TPE 40D", + "OrcaFilamentLibrary/COEX TPE 40D" + ], + "name": "COEX TPE 40D", + "filament_type": "TPU", + "filament_vendor": "COEX 3D" + }, + "OFfq5YXA": { + "filaments": [ + "OrcaFilamentLibrary/Valment PLA-CF" + ], + "name": "Valment PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Valment" + }, + "OFfr4XNO": { + "filaments": [ + "BBL/COEX TPE 60D", + "OrcaFilamentLibrary/COEX TPE 60D" + ], + "name": "COEX TPE 60D", + "filament_type": "TPU", + "filament_vendor": "COEX 3D" + }, + "OFfr6JDF": { + "filaments": [ + "Qidi/QIDI PETG Tough 0.8 nozzle" + ], + "name": "QIDI PETG Tough 0.8 nozzle", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFfuhviw": { + "filaments": [ + "Elegoo/Elegoo PLA Marble", + "OrcaFilamentLibrary/Elegoo PLA Marble" + ], + "name": "Elegoo PLA Marble", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFfuih8e": { + "filaments": [ + "Creality/Creality Silk PLA" + ], + "name": "Creality Silk PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFg3cWVt": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA Metal" + ], + "name": "Snapmaker Dual PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFg57Nmc": { + "filaments": [ + "BBL/Bambu PC FR", + "OrcaFilamentLibrary/Bambu PC FR" + ], + "name": "Bambu PC FR", + "filament_type": "PC", + "filament_vendor": "Bambu Lab" + }, + "OFg8hMzT": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PPCF" + ], + "name": "FILL3D PPCF", + "filament_type": "PP", + "filament_vendor": "FILL3D" + }, + "OFg8ndtj": { + "filaments": [ + "Anker/Generic PA", + "Anycubic/Generic PA", + "BBL/Generic PA", + "Blocks/Generic PA", + "Creality/Generic PA", + "Custom/Generic PA", + "Elegoo/Generic PA", + "FLSun/Generic PA", + "OrcaArena/Generic PA", + "OrcaFilamentLibrary/Generic PA", + "Prusa/Generic PA", + "Qidi/Generic PA", + "Ratrig/Generic PA", + "SecKit/Generic PA", + "Tiertime/Generic PA", + "Vzbot/Generic PA", + "Z-Bolt/Generic PA" + ], + "name": "Generic PA", + "filament_type": "PA", + "filament_vendor": "Generic" + }, + "OFgHh8ly": { + "filaments": [ + "Afinia/Afinia Value PLA" + ], + "name": "Afinia Value PLA", + "filament_type": "PLA", + "filament_vendor": "Afinia" + }, + "OFgMWJ8T": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Negro Azabache" + ], + "name": "FilAr PLA Negro Azabache", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFgSbX7E": { + "filaments": [ + "Volumic/Volumic PC (Performance)" + ], + "name": "Volumic PC (Performance)", + "filament_type": "PC", + "filament_vendor": "Volumic" + }, + "OFgXgt98": { + "filaments": [ + "Artillery/Artillery ABS" + ], + "name": "Artillery ABS", + "filament_type": "ABS", + "filament_vendor": "Artillery" + }, + "OFgbpcy9": { + "filaments": [ + "Anker/Generic TPU", + "Anycubic/Generic TPU", + "Artillery/Generic TPU", + "BBL/Generic TPU", + "Blocks/Generic TPU", + "Chuanying/Generic TPU", + "Co Print/Generic TPU", + "CoLiDo/Generic TPU", + "Creality/Generic TPU", + "Custom/Generic TPU", + "DeltaMaker/Generic TPU", + "FLSun/Generic TPU", + "Flashforge/Generic TPU", + "FlyingBear/Generic TPU", + "InfiMech/Generic TPU", + "OrcaArena/Generic TPU", + "OrcaFilamentLibrary/Generic TPU", + "Prusa/Generic TPU", + "Qidi/Generic TPU", + "RH3D/Generic TPU", + "Ratrig/Generic TPU", + "SecKit/Generic TPU", + "Sovol/Generic TPU", + "Tiertime/Generic TPU", + "Vzbot/Generic TPU" + ], + "name": "Generic TPU", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OFgdaBOt": { + "filaments": [ + "Snapmaker/Polymaker Tough PLA Family" + ], + "name": "Polymaker Tough PLA Family", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFgeM7nD": { + "filaments": [ + "Flashforge/Flashforge PA12-CF" + ], + "name": "Flashforge PA12-CF", + "filament_type": "PA-CF", + "filament_vendor": "Flashforge" + }, + "OFgjgN35": { + "filaments": [ + "Flashforge/Flashforge PLA Silk" + ], + "name": "Flashforge PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFglhKLM": { + "filaments": [ + "Qidi/QIDI PLA Rapido 0.8 nozzle" + ], + "name": "QIDI PLA Rapido 0.8 nozzle", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFgpLTMR": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Gris Plata" + ], + "name": "FilAr PETG Gris Plata", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFgpQwkk": { + "filaments": [ + "Creality/CR-PLA Fluo" + ], + "name": "CR-PLA Fluo", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFgptDSf": { + "filaments": [ + "OrcaArena/Arena PLA Matte" + ], + "name": "Arena PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFgyPlwU": { + "filaments": [ + "Snapmaker/Snapmaker TPU High-Flow" + ], + "name": "Snapmaker TPU High-Flow", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFh7mvPO": { + "filaments": [ + "Prusa/Prusament PVB" + ], + "name": "Prusament PVB", + "filament_type": "PVB", + "filament_vendor": "Prusa Polymers" + }, + "OFh9u9c0": { + "filaments": [ + "Creality/Generic PA6-GF" + ], + "name": "Generic PA6-GF", + "filament_type": "PA-GF", + "filament_vendor": "Generic" + }, + "OFhASRWj": { + "filaments": [ + "BBL/Panchroma PLA Temp Shift", + "OrcaFilamentLibrary/Panchroma PLA Temp Shift", + "Snapmaker/Panchroma PLA Temp Shift" + ], + "name": "Panchroma PLA Temp Shift", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFhMO9Kh": { + "filaments": [ + "OrcaFilamentLibrary/GreenGate3D PETG" + ], + "name": "GreenGate3D PETG", + "filament_type": "PETG", + "filament_vendor": "GreenGate3D" + }, + "OFhN09f0": { + "filaments": [ + "BBL/addnorth PC BLend HT LCF" + ], + "name": "addnorth PC BLend HT LCF", + "filament_type": "PC", + "filament_vendor": "addnorth" + }, + "OFhO5aEJ": { + "filaments": [ + "Ratrig/RatRig PunkFil ABS" + ], + "name": "RatRig PunkFil ABS", + "filament_type": "ABS", + "filament_vendor": "RatRig" + }, + "OFhQf8ou": { + "filaments": [ + "Snapmaker/Snapmaker PLA-CF" + ], + "name": "Snapmaker PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Snapmaker" + }, + "OFhQfUQY": { + "filaments": [ + "BBL/Generic SBS", + "OrcaFilamentLibrary/Generic SBS", + "Tiertime/Generic SBS" + ], + "name": "Generic SBS", + "filament_type": "SBS", + "filament_vendor": "Generic" + }, + "OFhTPf6L": { + "filaments": [ + "Creality/Generic PA6-CF", + "Elegoo/Generic PA6-CF" + ], + "name": "Generic PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Generic" + }, + "OFhUjPA5": { + "filaments": [ + "Eryone/Eryone TPU" + ], + "name": "Eryone TPU", + "filament_type": "TPU", + "filament_vendor": "Eryone" + }, + "OFhWc5Bv": { + "filaments": [ + "OrcaFilamentLibrary/NIT ABS" + ], + "name": "NIT ABS", + "filament_type": "ABS", + "filament_vendor": "NIT" + }, + "OFhWhL1i": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PETG" + ], + "name": "Eolas Prints PETG", + "filament_type": "PETG", + "filament_vendor": "Eolas Prints" + }, + "OFhWrAuP": { + "filaments": [ + "Qidi/QIDI PLA-CF" + ], + "name": "QIDI PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "QIDI" + }, + "OFhbolij": { + "filaments": [ + "Creality/eSUN PLA-Lite" + ], + "name": "eSUN PLA-Lite", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFhcYzR8": { + "filaments": [ + "Elegoo/Elegoo PLA Sparkle", + "OrcaFilamentLibrary/Elegoo PLA Sparkle" + ], + "name": "Elegoo PLA Sparkle", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFhfd722": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints TPU Flex 93A" + ], + "name": "Eolas Prints TPU Flex 93A", + "filament_type": "TPU", + "filament_vendor": "Eolas Prints" + }, + "OFhiJE7Y": { + "filaments": [ + "Qidi/QIDI PEBA 95A" + ], + "name": "QIDI PEBA 95A", + "filament_type": "PEBA", + "filament_vendor": "QIDI" + }, + "OFhkN0a7": { + "filaments": [ + "Creality/Hyper PA612-CF" + ], + "name": "Hyper PA612-CF", + "filament_type": "PA-CF", + "filament_vendor": "Creality" + }, + "OFhlCNqq": { + "filaments": [ + "BBL/COEX PLA", + "OrcaFilamentLibrary/COEX PLA" + ], + "name": "COEX PLA", + "filament_type": "PLA", + "filament_vendor": "COEX 3D" + }, + "OFhmxnYw": { + "filaments": [ + "Snapmaker/Snapmaker PLA Basic" + ], + "name": "Snapmaker PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFhuaUQB": { + "filaments": [ + "BBL/Bambu ABS", + "OrcaFilamentLibrary/Bambu ABS", + "Qidi/Bambu ABS" + ], + "name": "Bambu ABS", + "filament_type": "ABS", + "filament_vendor": "Bambu Lab" + }, + "OFhwiZ50": { + "filaments": [ + "Qidi/QIDI PLA Rapido 0.2 nozzle" + ], + "name": "QIDI PLA Rapido 0.2 nozzle", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFhx4uOG": { + "filaments": [ + "Qidi/QIDI PET-GF" + ], + "name": "QIDI PET-GF", + "filament_type": "PET-GF", + "filament_vendor": "QIDI" + }, + "OFi5RSve": { + "filaments": [ + "Creality/eSUN PLA-LW" + ], + "name": "eSUN PLA-LW", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFi6PfUM": { + "filaments": [ + "Chuanying/Generic PLA-Silk", + "Creality/Generic PLA-Silk", + "Flashforge/Generic PLA-Silk" + ], + "name": "Generic PLA-Silk", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFi90KlM": { + "filaments": [ + "Volumic/Volumic NYLON Ultra (Performance)" + ], + "name": "Volumic NYLON Ultra (Performance)", + "filament_type": "PA", + "filament_vendor": "Volumic" + }, + "OFiDpM1B": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Bordo" + ], + "name": "FilAr PLA-mate Bordo", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFiEz2XI": { + "filaments": [ + "Cubicon/Cubicon PA-CF" + ], + "name": "Cubicon PA-CF", + "filament_type": "PA", + "filament_vendor": "Cubicon" + }, + "OFiWaoqD": { + "filaments": [ + "OrcaFilamentLibrary/DREMC PPA-CF" + ], + "name": "DREMC PPA-CF", + "filament_type": "PPA-CF", + "filament_vendor": "DREMC" + }, + "OFibWuBd": { + "filaments": [ + "Flashforge/Flashforge ABS Basic" + ], + "name": "Flashforge ABS Basic", + "filament_type": "ABS", + "filament_vendor": "Flashforge" + }, + "OFilAA3b": { + "filaments": [ + "Eryone/Eryone PLA-CF" + ], + "name": "Eryone PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "Eryone" + }, + "OFilD4bP": { + "filaments": [ + "FlyingBear/FlyingBear PLA" + ], + "name": "FlyingBear PLA", + "filament_type": "PLA", + "filament_vendor": "FlyingBear" + }, + "OFilnglt": { + "filaments": [ + "Artillery/Artillery PETG" + ], + "name": "Artillery PETG", + "filament_type": "PETG", + "filament_vendor": "Artillery" + }, + "OFin64Qg": { + "filaments": [ + "Creality/Generic Support for PLA" + ], + "name": "Generic Support for PLA", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFitS8al": { + "filaments": [ + "BBL/PolyLite PLA Neon", + "Snapmaker/PolyLite PLA Neon" + ], + "name": "PolyLite PLA Neon", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFiwEbze": { + "filaments": [ + "Volumic/PETG ESD (Performance)" + ], + "name": "PETG ESD (Performance)", + "filament_type": "PETG-ESD", + "filament_vendor": "Volumic" + }, + "OFj3bTjw": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Amarillo" + ], + "name": "FilAr PLA-mate Amarillo", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFj64R5U": { + "filaments": [ + "Peopoly/Peopoly Lancer ABS-GF" + ], + "name": "Peopoly Lancer ABS-GF", + "filament_type": "ABS", + "filament_vendor": "Peopoly" + }, + "OFjD3YTW": { + "filaments": [ + "Qidi/Qidi PC-ABS-FR" + ], + "name": "Qidi PC-ABS-FR", + "filament_type": "PC-ABS-FR", + "filament_vendor": "QIDI" + }, + "OFjHrAX0": { + "filaments": [ + "WonderMaker/WonderMaker ABS" + ], + "name": "WonderMaker ABS", + "filament_type": "ABS", + "filament_vendor": "WonderMaker" + }, + "OFjLAYgO": { + "filaments": [ + "Anycubic/Anycubic PEBA" + ], + "name": "Anycubic PEBA", + "filament_type": "PEBA", + "filament_vendor": "Anycubic" + }, + "OFjPXrXO": { + "filaments": [ + "Elegoo/Elegoo PLA Glow", + "OrcaFilamentLibrary/Elegoo PLA Glow" + ], + "name": "Elegoo PLA Glow", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFjT9PkZ": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Tabaco" + ], + "name": "FilAr PLA Tabaco", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFjUGUIK": { + "filaments": [ + "iQ/Fiberthree PACF Pro P1" + ], + "name": "Fiberthree PACF Pro P1", + "filament_type": "PACF Pro", + "filament_vendor": "iQ Materials" + }, + "OFjUXn67": { + "filaments": [ + "BBL/BETA ABS" + ], + "name": "BETA ABS", + "filament_type": "ABS", + "filament_vendor": "BETA" + }, + "OFjVOWfJ": { + "filaments": [ + "Anycubic/Anycubic PLA High Speed" + ], + "name": "Anycubic PLA High Speed", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFjXrKFO": { + "filaments": [ + "OrcaArena/Arena PLA Impact" + ], + "name": "Arena PLA Impact", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFjb0wos": { + "filaments": [ + "BBL/Panchroma PLA Metallic", + "OrcaFilamentLibrary/Panchroma PLA Metallic", + "Snapmaker/Panchroma PLA Metallic" + ], + "name": "Panchroma PLA Metallic", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFjiXpyf": { + "filaments": [ + "Qidi/Generic TPU 95A", + "TwoTrees/Generic TPU 95A" + ], + "name": "Generic TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OFjkdnyN": { + "filaments": [ + "Snapmaker/Snapmaker Dual TPU" + ], + "name": "Snapmaker Dual TPU", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFjoAe0R": { + "filaments": [ + "Qidi/Qidi PLA-CF" + ], + "name": "Qidi PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "QIDI" + }, + "OFjogeYN": { + "filaments": [ + "BBL/BETA PETG Glitter" + ], + "name": "BETA PETG Glitter", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFjorDcx": { + "filaments": [ + "OrcaFilamentLibrary/FDplast ABS" + ], + "name": "FDplast ABS", + "filament_type": "ABS", + "filament_vendor": "FDplast" + }, + "OFjt8dDO": { + "filaments": [ + "Flashforge/FusRock NexPA-CF25" + ], + "name": "FusRock NexPA-CF25", + "filament_type": "PA-CF", + "filament_vendor": "FusRock" + }, + "OFjt9en1": { + "filaments": [ + "OrcaFilamentLibrary/Generic CoPE" + ], + "name": "Generic CoPE", + "filament_type": "CoPE", + "filament_vendor": "Generic" + }, + "OFjz0a3m": { + "filaments": [ + "Prusa/Prusament PC-CF" + ], + "name": "Prusament PC-CF", + "filament_type": "PC-CF", + "filament_vendor": "Prusa Polymers" + }, + "OFk8t9mz": { + "filaments": [ + "BBL/Fiberon PETG-rCF", + "OrcaFilamentLibrary/Fiberon PETG-rCF" + ], + "name": "Fiberon PETG-rCF", + "filament_type": "PETG-CF", + "filament_vendor": "Polymaker" + }, + "OFkAltI8": { + "filaments": [ + "FlyingBear/Other PA-CF", + "InfiMech/Other PA-CF" + ], + "name": "Other PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Other" + }, + "OFkGp50Y": { + "filaments": [ + "Volumic/Volumic UNIVERSAL Ultra (Performance)" + ], + "name": "Volumic UNIVERSAL Ultra (Performance)", + "filament_type": "UNIV", + "filament_vendor": "Volumic" + }, + "OFkGvN4d": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Verde Pixel" + ], + "name": "FilAr PLA Verde Pixel", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFkHbjUv": { + "filaments": [ + "BBL/BETA PLA Metallic" + ], + "name": "BETA PLA Metallic", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFkOviHk": { + "filaments": [ + "BBL/Fiberon PA6-CF", + "OrcaFilamentLibrary/Fiberon PA6-CF" + ], + "name": "Fiberon PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Polymaker" + }, + "OFkR8E2c": { + "filaments": [ + "Prusa/Prusament PETG" + ], + "name": "Prusament PETG", + "filament_type": "PETG", + "filament_vendor": "Prusa Polymers" + }, + "OFkf1HHw": { + "filaments": [ + "Flashforge/Generic PLA-SILK" + ], + "name": "Generic PLA-SILK", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFkhhUS0": { + "filaments": [ + "Elegoo/Elegoo Rapid PLA+", + "OrcaFilamentLibrary/Elegoo Rapid PLA+" + ], + "name": "Elegoo Rapid PLA+", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFklJcWK": { + "filaments": [ + "FlyingBear/Other PLA Hyper", + "InfiMech/Other PLA Hyper" + ], + "name": "Other PLA Hyper", + "filament_type": "PLA", + "filament_vendor": "Other" + }, + "OFknl9Iz": { + "filaments": [ + "BBL/Bambu ABS-GF", + "OrcaFilamentLibrary/Bambu ABS-GF" + ], + "name": "Bambu ABS-GF", + "filament_type": "ABS-GF", + "filament_vendor": "Bambu Lab" + }, + "OFkoLUtR": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Verde Oliva" + ], + "name": "FilAr PLA Verde Oliva", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFkq7rPy": { + "filaments": [ + "Eryone/Eryone PA-GF" + ], + "name": "Eryone PA-GF", + "filament_type": "PA-GF", + "filament_vendor": "Eryone" + }, + "OFks6esg": { + "filaments": [ + "Creality/EN-PLA+" + ], + "name": "EN-PLA+", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFkx5MEe": { + "filaments": [ + "Artillery/Artillery PVA" + ], + "name": "Artillery PVA", + "filament_type": "PVA", + "filament_vendor": "Artillery" + }, + "OFkzr35f": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Antibacterial" + ], + "name": "Eolas Prints PLA Antibacterial", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFlBoEfL": { + "filaments": [ + "Snapmaker/Snapmaker J1 TPU High-Flow" + ], + "name": "Snapmaker J1 TPU High-Flow", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFlIsW6f": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA Matte" + ], + "name": "Snapmaker Dual PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFlN6DL1": { + "filaments": [ + "Qidi/QIDI PA-Ultra" + ], + "name": "QIDI PA-Ultra", + "filament_type": "UltraPA", + "filament_vendor": "QIDI" + }, + "OFlP3KWq": { + "filaments": [ + "Elegoo/Elegoo PETG HF", + "OrcaFilamentLibrary/Elegoo PETG HF" + ], + "name": "Elegoo PETG HF", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFlSNkhc": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints ASA" + ], + "name": "Eolas Prints ASA", + "filament_type": "ASA", + "filament_vendor": "Eolas Prints" + }, + "OFlfuj2k": { + "filaments": [ + "BBL/Bambu TPU 85A" + ], + "name": "Bambu TPU 85A", + "filament_type": "TPU", + "filament_vendor": "Bambu Lab" + }, + "OFlgMgNM": { + "filaments": [ + "Flashforge/Flashforge PPS" + ], + "name": "Flashforge PPS", + "filament_type": "PPS", + "filament_vendor": "Flashforge" + }, + "OFllmFhT": { + "filaments": [ + "Elegoo/Generic PETG PRO" + ], + "name": "Generic PETG PRO", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OFlmxlDG": { + "filaments": [ + "BBL/BETA HIPS" + ], + "name": "BETA HIPS", + "filament_type": "HIPS", + "filament_vendor": "BETA" + }, + "OFln72PT": { + "filaments": [ + "Elegoo/Elegoo PLA-CF", + "OrcaFilamentLibrary/Elegoo PLA-CF" + ], + "name": "Elegoo PLA-CF", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFlsTpJG": { + "filaments": [ + "Elegoo/Elegoo PC-FR", + "OrcaFilamentLibrary/Elegoo PC-FR" + ], + "name": "Elegoo PC-FR", + "filament_type": "PC", + "filament_vendor": "Elegoo" + }, + "OFlufQpZ": { + "filaments": [ + "Snapmaker/Snapmaker PLA" + ], + "name": "Snapmaker PLA", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFlwmqrC": { + "filaments": [ + "BBL/Polymaker HT-PLA-GF", + "OrcaFilamentLibrary/Polymaker HT-PLA-GF", + "Snapmaker/Polymaker HT-PLA-GF" + ], + "name": "Polymaker HT-PLA-GF", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFm06H6V": { + "filaments": [ + "Elegoo/Elegoo PLA Basic", + "OrcaFilamentLibrary/Elegoo PLA Basic" + ], + "name": "Elegoo PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFm4SivL": { + "filaments": [ + "Flashforge/Flashforge PLA Pro" + ], + "name": "Flashforge PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Flashforge" + }, + "OFm4ysMO": { + "filaments": [ + "FlyingBear/FlyingBear ABS" + ], + "name": "FlyingBear ABS", + "filament_type": "ABS", + "filament_vendor": "FlyingBear" + }, + "OFm70lLt": { + "filaments": [ + "CoLiDo/CoLiDo PLA" + ], + "name": "CoLiDo PLA", + "filament_type": "PLA", + "filament_vendor": "CoLiDo" + }, + "OFmCOW2Y": { + "filaments": [ + "re3D/re3D rPETG" + ], + "name": "re3D rPETG", + "filament_type": "PETG", + "filament_vendor": "re3D" + }, + "OFmFwUWM": { + "filaments": [ + "Prusa/Prusament ASA" + ], + "name": "Prusament ASA", + "filament_type": "ASA", + "filament_vendor": "Prusa Polymers" + }, + "OFmJAd3A": { + "filaments": [ + "OrcaFilamentLibrary/FDplast HIPS" + ], + "name": "FDplast HIPS", + "filament_type": "HIPS", + "filament_vendor": "FDplast" + }, + "OFmKU2Ha": { + "filaments": [ + "Eryone/Eryone PLA" + ], + "name": "Eryone PLA", + "filament_type": "PLA", + "filament_vendor": "Eryone" + }, + "OFmN2lvw": { + "filaments": [ + "BBL/Generic TPU for AMS" + ], + "name": "Generic TPU for AMS", + "filament_type": "TPU-AMS", + "filament_vendor": "Generic" + }, + "OFmY0l6t": { + "filaments": [ + "Creality/Generic PLA Matte", + "Elegoo/Generic PLA Matte", + "OrcaFilamentLibrary/Generic PLA Matte" + ], + "name": "Generic PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFma5TXH": { + "filaments": [ + "Qidi/QIDI ABS Odorless" + ], + "name": "QIDI ABS Odorless", + "filament_type": "ABS", + "filament_vendor": "QIDI" + }, + "OFmaeU4a": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Naranja" + ], + "name": "FilAr PLA-mate Naranja", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFmfizbq": { + "filaments": [ + "OrcaArena/Arena PLA Silk" + ], + "name": "Arena PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFmjN2bc": { + "filaments": [ + "Anycubic/Anycubic PLA" + ], + "name": "Anycubic PLA", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFmn9NZL": { + "filaments": [ + "BBL/FusRock ABS-GF", + "OrcaFilamentLibrary/FusRock ABS-GF" + ], + "name": "FusRock ABS-GF", + "filament_type": "ABS-GF", + "filament_vendor": "FusRock" + }, + "OFmpMwxS": { + "filaments": [ + "BBL/Generic PLA High Speed", + "Creality/Generic PLA High Speed", + "FLSun/Generic PLA High Speed", + "Flashforge/Generic PLA High Speed", + "OrcaFilamentLibrary/Generic PLA High Speed", + "Qidi/Generic PLA High Speed", + "Tiertime/Generic PLA High Speed" + ], + "name": "Generic PLA High Speed", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFmt513L": { + "filaments": [ + "BBL/BETA PETG Transparent" + ], + "name": "BETA PETG Transparent", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFmveLWz": { + "filaments": [ + "Elegoo/Elegoo PETG-GF", + "OrcaFilamentLibrary/Elegoo PETG-GF" + ], + "name": "Elegoo PETG-GF", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFn1QaY3": { + "filaments": [ + "Elegoo/Elegoo PLA Translucent2", + "OrcaFilamentLibrary/Elegoo PLA Translucent2" + ], + "name": "Elegoo PLA Translucent2", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFn2GlhY": { + "filaments": [ + "Creality/Hyper PA6-CF" + ], + "name": "Hyper PA6-CF", + "filament_type": "PA-CF", + "filament_vendor": "Creality" + }, + "OFn6WpN7": { + "filaments": [ + "Qidi/QIDI PA12-CF" + ], + "name": "QIDI PA12-CF", + "filament_type": "PA12-CF", + "filament_vendor": "QIDI" + }, + "OFnBvPhb": { + "filaments": [ + "BBL/addnorth PLA rPLA RE-ADD" + ], + "name": "addnorth PLA rPLA RE-ADD", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFnHc3D6": { + "filaments": [ + "Creality/eSUN PLA-CF" + ], + "name": "eSUN PLA-CF", + "filament_type": "PLA-CF", + "filament_vendor": "eSUN" + }, + "OFnO4wnf": { + "filaments": [ + "Prusa/Prusament PLA" + ], + "name": "Prusament PLA", + "filament_type": "PLA", + "filament_vendor": "Prusa Polymers" + }, + "OFnSeLHk": { + "filaments": [ + "CoLiDo/CoLiDo PLA Silk" + ], + "name": "CoLiDo PLA Silk", + "filament_type": "PLA", + "filament_vendor": "CoLiDo" + }, + "OFnT7Qpb": { + "filaments": [ + "Prusa/Generic TPU HF" + ], + "name": "Generic TPU HF", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OFnXrkhA": { + "filaments": [ + "InfiMech/InfiMech PA-CF" + ], + "name": "InfiMech PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "InfiMech" + }, + "OFnXwW8l": { + "filaments": [ + "Snapmaker/PolyLite PLA Pro Metallic" + ], + "name": "PolyLite PLA Pro Metallic", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFnYVFk2": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Azul Francia" + ], + "name": "FilAr PLA Azul Francia", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFncpm7O": { + "filaments": [ + "WonderMaker/WonderMaker PLA Silk" + ], + "name": "WonderMaker PLA Silk", + "filament_type": "PLA", + "filament_vendor": "WonderMaker" + }, + "OFneOFWe": { + "filaments": [ + "CoLiDo/CoLiDo ABS" + ], + "name": "CoLiDo ABS", + "filament_type": "ABS", + "filament_vendor": "CoLiDo" + }, + "OFnejEt4": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Cian" + ], + "name": "FilAr PETG Cian", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFnfxTvi": { + "filaments": [ + "BBL/Bambu PLA Lite" + ], + "name": "Bambu PLA Lite", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFngcE81": { + "filaments": [ + "LH/LHS TPU Foamy 78A" + ], + "name": "LHS TPU Foamy 78A", + "filament_type": "TPU", + "filament_vendor": "LH Stinger" + }, + "OFniMuTN": { + "filaments": [ + "BBL/Bambu PA6-CF", + "OrcaFilamentLibrary/Bambu PA6-CF" + ], + "name": "Bambu PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "Bambu Lab" + }, + "OFnmp2pO": { + "filaments": [ + "Snapmaker/Snapmaker Breakaway Support For PLA" + ], + "name": "Snapmaker Breakaway Support For PLA", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFnmp6rt": { + "filaments": [ + "Anycubic/Anycubic PLA+" + ], + "name": "Anycubic PLA+", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFnpX8uh": { + "filaments": [ + "BBL/BETA PETG Matte" + ], + "name": "BETA PETG Matte", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFnyHfcv": { + "filaments": [ + "Ratrig/Generic ABS BigNozzle" + ], + "name": "Generic ABS BigNozzle", + "filament_type": "ABS", + "filament_vendor": "Generic" + }, + "OFo15hcT": { + "filaments": [ + "Qidi/QIDI PAHT-GF" + ], + "name": "QIDI PAHT-GF", + "filament_type": "PAHT-GF", + "filament_vendor": "QIDI" + }, + "OFo2UF2C": { + "filaments": [ + "BBL/Generic BVOH", + "Creality/Generic BVOH", + "Flashforge/Generic BVOH", + "OrcaFilamentLibrary/Generic BVOH", + "Tiertime/Generic BVOH" + ], + "name": "Generic BVOH", + "filament_type": "BVOH", + "filament_vendor": "Generic" + }, + "OFo6n2pB": { + "filaments": [ + "Anycubic/Anycubic PETG" + ], + "name": "Anycubic PETG", + "filament_type": "PETG", + "filament_vendor": "Anycubic" + }, + "OFoBTKmn": { + "filaments": [ + "Cubicon/Cubicon PETG" + ], + "name": "Cubicon PETG", + "filament_type": "PETG", + "filament_vendor": "Cubicon" + }, + "OFoSknDB": { + "filaments": [ + "OrcaFilamentLibrary/FILL3D PLA Turbo" + ], + "name": "FILL3D PLA Turbo", + "filament_type": "PLA", + "filament_vendor": "FILL3D" + }, + "OFoYSJKi": { + "filaments": [ + "Anker/Generic PETG-CF", + "BBL/Generic PETG-CF", + "Creality/Generic PETG-CF", + "Elegoo/Generic PETG-CF", + "Flashforge/Generic PETG-CF", + "OrcaArena/Generic PETG-CF", + "OrcaFilamentLibrary/Generic PETG-CF", + "Qidi/Generic PETG-CF", + "Tiertime/Generic PETG-CF" + ], + "name": "Generic PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Generic" + }, + "OFobDOW5": { + "filaments": [ + "Elegoo/Elegoo ASA", + "OrcaFilamentLibrary/Elegoo ASA" + ], + "name": "Elegoo ASA", + "filament_type": "ASA", + "filament_vendor": "Elegoo" + }, + "OFocyw69": { + "filaments": [ + "BBL/AliZ PETG", + "OrcaFilamentLibrary/AliZ PETG" + ], + "name": "AliZ PETG", + "filament_type": "PETG", + "filament_vendor": "Aliz" + }, + "OFoiVqVM": { + "filaments": [ + "BBL/Bambu PLA Basic", + "OrcaFilamentLibrary/Bambu PLA Basic" + ], + "name": "Bambu PLA Basic", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFojbdhR": { + "filaments": [ + "Flashforge/Flashforge ABS-GF" + ], + "name": "Flashforge ABS-GF", + "filament_type": "ABS-GF", + "filament_vendor": "Flashforge" + }, + "OForhBi4": { + "filaments": [ + "Cubicon/Cubicon ABSk" + ], + "name": "Cubicon ABSk", + "filament_type": "ABS", + "filament_vendor": "Cubicon" + }, + "OFovEIbw": { + "filaments": [ + "BBL/Bambu PETG HF", + "OrcaFilamentLibrary/Bambu PETG HF" + ], + "name": "Bambu PETG HF", + "filament_type": "PETG", + "filament_vendor": "Bambu Lab" + }, + "OFp4ETDP": { + "filaments": [ + "Creality/CR-PLA" + ], + "name": "CR-PLA", + "filament_type": "PLA", + "filament_vendor": "Creality" + }, + "OFp57RRC": { + "filaments": [ + "Qidi/QIDI PPS-GF" + ], + "name": "QIDI PPS-GF", + "filament_type": "PPS-GF", + "filament_vendor": "QIDI" + }, + "OFp9wdmf": { + "filaments": [ + "Eryone/Eryone PA-CF" + ], + "name": "Eryone PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Eryone" + }, + "OFpBlrvY": { + "filaments": [ + "OrcaFilamentLibrary/Valment PLA Silk" + ], + "name": "Valment PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Valment" + }, + "OFpDo5Ix": { + "filaments": [ + "Cubicon/Cubicon ABS" + ], + "name": "Cubicon ABS", + "filament_type": "ABS", + "filament_vendor": "Cubicon" + }, + "OFpPGSKG": { + "filaments": [ + "BBL/SUNLU Silk PLA+", + "Flashforge/SUNLU Silk PLA+", + "OrcaFilamentLibrary/SUNLU Silk PLA+" + ], + "name": "SUNLU Silk PLA+", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFpPJSHE": { + "filaments": [ + "Peopoly/Peopoly Lancer PETG-C" + ], + "name": "Peopoly Lancer PETG-C", + "filament_type": "PETG", + "filament_vendor": "Peopoly" + }, + "OFpW4gdi": { + "filaments": [ + "BBL/SUNLU PLA Matte", + "Flashforge/SUNLU PLA Matte", + "OrcaFilamentLibrary/SUNLU PLA Matte" + ], + "name": "SUNLU PLA Matte", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFpdjFI3": { + "filaments": [ + "BBL/BETA PLA UV Color Change" + ], + "name": "BETA PLA UV Color Change", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFpu74Qe": { + "filaments": [ + "Snapmaker/Snapmaker PLA Eco" + ], + "name": "Snapmaker PLA Eco", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFpumhCM": { + "filaments": [ + "Volumic/Volumic UNIVERSAL Ultra" + ], + "name": "Volumic UNIVERSAL Ultra", + "filament_type": "UNIV", + "filament_vendor": "Volumic" + }, + "OFq0TY7C": { + "filaments": [ + "Flashforge/Flashforge ASA-CF" + ], + "name": "Flashforge ASA-CF", + "filament_type": "ASA-CF", + "filament_vendor": "Flashforge" + }, + "OFq8gfS4": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Negro Azabache" + ], + "name": "FilAr PETG Negro Azabache", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFq9svOz": { + "filaments": [ + "BBL/Generic PPS", + "Creality/Generic PPS", + "Tiertime/Generic PPS" + ], + "name": "Generic PPS", + "filament_type": "PPS", + "filament_vendor": "Generic" + }, + "OFqFRiLb": { + "filaments": [ + "Ratrig/Generic PLA BigNozzle" + ], + "name": "Generic PLA BigNozzle", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFqGRZyH": { + "filaments": [ + "BBL/Numakers PLA+", + "OrcaFilamentLibrary/Numakers PLA+" + ], + "name": "Numakers PLA+", + "filament_type": "PLA", + "filament_vendor": "Numakers" + }, + "OFqHQNoZ": { + "filaments": [ + "Elegoo/Elegoo TPU 95A", + "OrcaFilamentLibrary/Elegoo TPU 95A" + ], + "name": "Elegoo TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Elegoo" + }, + "OFqINlYj": { + "filaments": [ + "BBL/eSUN PLA+", + "Creality/eSUN PLA+", + "OrcaFilamentLibrary/eSUN PLA+" + ], + "name": "eSUN PLA+", + "filament_type": "PLA", + "filament_vendor": "eSUN" + }, + "OFqTwtXM": { + "filaments": [ + "BBL/addnorth PETG rPETG Matte" + ], + "name": "addnorth PETG rPETG Matte", + "filament_type": "PETG", + "filament_vendor": "addnorth" + }, + "OFqcL5UF": { + "filaments": [ + "Qidi/QIDI Support For PET/PA" + ], + "name": "QIDI Support For PET/PA", + "filament_type": "PA-S", + "filament_vendor": "QIDI" + }, + "OFqtx549": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Celeste Cielo" + ], + "name": "FilAr PLA-mate Celeste Cielo", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFqw2PQA": { + "filaments": [ + "BBL/Panchroma CoPE", + "OrcaFilamentLibrary/Panchroma CoPE", + "Snapmaker/Panchroma CoPE" + ], + "name": "Panchroma CoPE", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFrFBEfd": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Neon" + ], + "name": "Eolas Prints PLA Neon", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFrGJ4tR": { + "filaments": [ + "Anycubic/Anycubic PLA Slik" + ], + "name": "Anycubic PLA Slik", + "filament_type": "PLA", + "filament_vendor": "Anycubic" + }, + "OFrKLeE3": { + "filaments": [ + "BBL/Bambu PLA Metal", + "OrcaFilamentLibrary/Bambu PLA Metal" + ], + "name": "Bambu PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFrLiqiM": { + "filaments": [ + "InfiMech/InfiMech PETG" + ], + "name": "InfiMech PETG", + "filament_type": "PETG", + "filament_vendor": "InfiMech" + }, + "OFrM4hdm": { + "filaments": [ + "Creality/CR-PLA Carbon" + ], + "name": "CR-PLA Carbon", + "filament_type": "PLA-CF", + "filament_vendor": "Creality" + }, + "OFrOh600": { + "filaments": [ + "BBL/Panchroma PLA Matte", + "Creality/Panchroma PLA Matte", + "OrcaFilamentLibrary/Panchroma PLA Matte", + "Snapmaker/Panchroma PLA Matte" + ], + "name": "Panchroma PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFrZDhVt": { + "filaments": [ + "Flashforge/Flashforge ASA-GF" + ], + "name": "Flashforge ASA-GF", + "filament_type": "ASA-GF", + "filament_vendor": "Flashforge" + }, + "OFrdZ0cK": { + "filaments": [ + "Creality/eSUN PETG+HS" + ], + "name": "eSUN PETG+HS", + "filament_type": "PETG", + "filament_vendor": "eSUN" + }, + "OFrjacXf": { + "filaments": [ + "Flashforge/Flashforge PET-CF" + ], + "name": "Flashforge PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "Flashforge" + }, + "OFrqMlGt": { + "filaments": [ + "BBL/BETA PETG" + ], + "name": "BETA PETG", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFrr67nG": { + "filaments": [ + "OrcaArena/Arena PC" + ], + "name": "Arena PC", + "filament_type": "PC", + "filament_vendor": "Orca Arena" + }, + "OFryjl35": { + "filaments": [ + "Elegoo/Elegoo ASA-CF", + "OrcaFilamentLibrary/Elegoo ASA-CF" + ], + "name": "Elegoo ASA-CF", + "filament_type": "ASA", + "filament_vendor": "Elegoo" + }, + "OFsB2lxm": { + "filaments": [ + "Elegoo/Elegoo PLA Matte", + "OrcaFilamentLibrary/Elegoo PLA Matte" + ], + "name": "Elegoo PLA Matte", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFsD974q": { + "filaments": [ + "Volumic/Volumic PETG Ultra (Performance)" + ], + "name": "Volumic PETG Ultra (Performance)", + "filament_type": "PETG", + "filament_vendor": "Volumic" + }, + "OFsDXRpS": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Piel" + ], + "name": "FilAr PLA Piel", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFsFo7ms": { + "filaments": [ + "Volumic/Volumic PP Ultra" + ], + "name": "Volumic PP Ultra", + "filament_type": "PP", + "filament_vendor": "Volumic" + }, + "OFsFon5l": { + "filaments": [ + "BBL/Generic HIPS", + "Chuanying/Generic HIPS", + "Creality/Generic HIPS", + "Flashforge/Generic HIPS", + "OrcaFilamentLibrary/Generic HIPS", + "Tiertime/Generic HIPS" + ], + "name": "Generic HIPS", + "filament_type": "HIPS", + "filament_vendor": "Generic" + }, + "OFsHSVZc": { + "filaments": [ + "BBL/Bambu Support W", + "OrcaFilamentLibrary/Bambu Support W" + ], + "name": "Bambu Support W", + "filament_type": "PLA", + "filament_vendor": "Bambu Lab" + }, + "OFsP8PKH": { + "filaments": [ + "Z-Bolt/Generic ABS HT" + ], + "name": "Generic ABS HT", + "filament_type": "ABS", + "filament_vendor": "Generic" + }, + "OFsRDvTM": { + "filaments": [ + "Anycubic/Panchroma PLA", + "BBL/Panchroma PLA", + "OrcaFilamentLibrary/Panchroma PLA", + "Snapmaker/Panchroma PLA" + ], + "name": "Panchroma PLA", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFsXQXbs": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Blanco Antartida" + ], + "name": "FilAr PETG Blanco Antartida", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFsijjtH": { + "filaments": [ + "BBL/Generic PP-GF", + "OrcaFilamentLibrary/Generic PP-GF", + "Tiertime/Generic PP-GF" + ], + "name": "Generic PP-GF", + "filament_type": "PP-GF", + "filament_vendor": "Generic" + }, + "OFsoykbm": { + "filaments": [ + "OrcaFilamentLibrary/DREMC PA6-CF" + ], + "name": "DREMC PA6-CF", + "filament_type": "PA6-CF", + "filament_vendor": "DREMC" + }, + "OFt0JbR7": { + "filaments": [ + "Snapmaker/Snapmaker J1 PLA Metal" + ], + "name": "Snapmaker J1 PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFt3HtlG": { + "filaments": [ + "Qidi/QIDI ABS-GF" + ], + "name": "QIDI ABS-GF", + "filament_type": "ABS-GF", + "filament_vendor": "QIDI" + }, + "OFt6e0US": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Amarillo Lima" + ], + "name": "FilAr PETG Amarillo Lima", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFt7SngH": { + "filaments": [ + "Snapmaker/Snapmaker J1 ASA" + ], + "name": "Snapmaker J1 ASA", + "filament_type": "ASA", + "filament_vendor": "Snapmaker" + }, + "OFtFtiS0": { + "filaments": [ + "Snapmaker/Polymaker PETG Galaxy" + ], + "name": "Polymaker PETG Galaxy", + "filament_type": "PETG", + "filament_vendor": "Polymaker" + }, + "OFtGC1ye": { + "filaments": [ + "Artillery/Artillery PA-CF" + ], + "name": "Artillery PA-CF", + "filament_type": "PA-CF", + "filament_vendor": "Artillery" + }, + "OFtKeKa9": { + "filaments": [ + "OrcaArena/Arena PLA Tough" + ], + "name": "Arena PLA Tough", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFtOPlK6": { + "filaments": [ + "OrcaArena/Arena PAHT-CF" + ], + "name": "Arena PAHT-CF", + "filament_type": "PA-CF", + "filament_vendor": "Orca Arena" + }, + "OFtOoWIj": { + "filaments": [], + "name": "FilAr PLA-mate", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFtRn8X8": { + "filaments": [ + "OrcaFilamentLibrary/FDplast SBS" + ], + "name": "FDplast SBS", + "filament_type": "SBS", + "filament_vendor": "FDplast" + }, + "OFtdVZpV": { + "filaments": [ + "BBL/addnorth PLA X-PLA" + ], + "name": "addnorth PLA X-PLA", + "filament_type": "PLA", + "filament_vendor": "addnorth" + }, + "OFtefokm": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Blanco" + ], + "name": "FilAr PLA-mate Blanco", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFtkLO6q": { + "filaments": [ + "BBL/Bambu TPU 90A" + ], + "name": "Bambu TPU 90A", + "filament_type": "TPU", + "filament_vendor": "Bambu Lab" + }, + "OFtndTHe": { + "filaments": [ + "BBL/BETA PETG-CF" + ], + "name": "BETA PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "BETA" + }, + "OFtpXCCv": { + "filaments": [ + "BBL/COEX ASA PRIME", + "OrcaFilamentLibrary/COEX ASA PRIME" + ], + "name": "COEX ASA PRIME", + "filament_type": "ASA", + "filament_vendor": "COEX 3D" + }, + "OFtr8eZw": { + "filaments": [ + "OrcaFilamentLibrary/FDplast PLA" + ], + "name": "FDplast PLA", + "filament_type": "PLA", + "filament_vendor": "FDplast" + }, + "OFtudokz": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA Premium" + ], + "name": "Eolas Prints PLA Premium", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFtybfNX": { + "filaments": [ + "Snapmaker/Snapmaker PLA Metal" + ], + "name": "Snapmaker PLA Metal", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFu08yGN": { + "filaments": [ + "Volumic/Volumic PETG Ultra carbone" + ], + "name": "Volumic PETG Ultra carbone", + "filament_type": "PETG", + "filament_vendor": "Volumic" + }, + "OFu0fjPJ": { + "filaments": [ + "LH/LHS PC CF" + ], + "name": "LHS PC CF", + "filament_type": "PC", + "filament_vendor": "LH Stinger" + }, + "OFu1E4ur": { + "filaments": [ + "Qidi/QIDI ASA-Aero" + ], + "name": "QIDI ASA-Aero", + "filament_type": "ASA-AERO", + "filament_vendor": "QIDI" + }, + "OFu1evlr": { + "filaments": [ + "BBL/Generic PCTG", + "Creality/Generic PCTG", + "OrcaFilamentLibrary/Generic PCTG", + "Ratrig/Generic PCTG", + "Tiertime/Generic PCTG" + ], + "name": "Generic PCTG", + "filament_type": "PCTG", + "filament_vendor": "Generic" + }, + "OFuFEtKX": { + "filaments": [ + "Flashforge/Flashforge PETG-CF" + ], + "name": "Flashforge PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Flashforge" + }, + "OFuJ49uH": { + "filaments": [ + "Qidi/QIDI PETG Basic" + ], + "name": "QIDI PETG Basic", + "filament_type": "PETG", + "filament_vendor": "QIDI" + }, + "OFuO0cAP": { + "filaments": [ + "OrcaArena/Arena PETG-CF" + ], + "name": "Arena PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Orca Arena" + }, + "OFuUuIhR": { + "filaments": [ + "Elegoo/Elegoo PETG-CF", + "OrcaFilamentLibrary/Elegoo PETG-CF" + ], + "name": "Elegoo PETG-CF", + "filament_type": "PETG", + "filament_vendor": "Elegoo" + }, + "OFuV79ru": { + "filaments": [ + "Flashforge/Flashforge PA66-CF" + ], + "name": "Flashforge PA66-CF", + "filament_type": "PA-CF", + "filament_vendor": "Flashforge" + }, + "OFuWCQXN": { + "filaments": [ + "BBL/COEX ABS PRIME", + "OrcaFilamentLibrary/COEX ABS PRIME" + ], + "name": "COEX ABS PRIME", + "filament_type": "ABS", + "filament_vendor": "COEX 3D" + }, + "OFuehn62": { + "filaments": [ + "OrcaArena/Arena PLA Marble" + ], + "name": "Arena PLA Marble", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFufTAK9": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA-mate Negro" + ], + "name": "FilAr PLA-mate Negro", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFughwKn": { + "filaments": [ + "Qidi/QIDI PLA Matte Basic" + ], + "name": "QIDI PLA Matte Basic", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFujZSdh": { + "filaments": [ + "Creality/Hyper PETG" + ], + "name": "Hyper PETG", + "filament_type": "PETG", + "filament_vendor": "Creality" + }, + "OFulOdT2": { + "filaments": [ + "Flashforge/Generic TPU 85A" + ], + "name": "Generic TPU 85A", + "filament_type": "TPU", + "filament_vendor": "Generic" + }, + "OFurdQxc": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Magenta" + ], + "name": "FilAr PETG Magenta", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFusbWjj": { + "filaments": [ + "Creality/Hyper PETG-CF" + ], + "name": "Hyper PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Creality" + }, + "OFuvOt0r": { + "filaments": [ + "BBL/BETA PLA Basic" + ], + "name": "BETA PLA Basic", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFuxH0Uz": { + "filaments": [ + "Volumic/Volumic FLEX93 Ultra" + ], + "name": "Volumic FLEX93 Ultra", + "filament_type": "TPU", + "filament_vendor": "Volumic" + }, + "OFvD0Qqt": { + "filaments": [ + "Ratrig/Generic PETG BigNozzle" + ], + "name": "Generic PETG BigNozzle", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OFvDbkFq": { + "filaments": [ + "Prusa/Prusament PC Blend" + ], + "name": "Prusament PC Blend", + "filament_type": "PC", + "filament_vendor": "Prusa Polymers" + }, + "OFvKUnLh": { + "filaments": [ + "BBL/Bambu TPU 95A HF", + "OrcaFilamentLibrary/Bambu TPU 95A HF" + ], + "name": "Bambu TPU 95A HF", + "filament_type": "TPU", + "filament_vendor": "Bambu Lab" + }, + "OFvLppPU": { + "filaments": [ + "Creality/CR-Nylon" + ], + "name": "CR-Nylon", + "filament_type": "PA", + "filament_vendor": "Creality" + }, + "OFvPPMxL": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PLA Verde FilAr" + ], + "name": "FilAr PLA Verde FilAr", + "filament_type": "PLA", + "filament_vendor": "FilAr" + }, + "OFvTVZc3": { + "filaments": [ + "BBL/COEX PETG", + "OrcaFilamentLibrary/COEX PETG" + ], + "name": "COEX PETG", + "filament_type": "PETG", + "filament_vendor": "COEX 3D" + }, + "OFvVy7yo": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints TPU D60 UV Resistant" + ], + "name": "Eolas Prints TPU D60 UV Resistant", + "filament_type": "TPU", + "filament_vendor": "Eolas Prints" + }, + "OFvaLVML": { + "filaments": [ + "Flashforge/Flashforge HIPS" + ], + "name": "Flashforge HIPS", + "filament_type": "HIPS", + "filament_vendor": "Flashforge" + }, + "OFvcIGee": { + "filaments": [ + "BBL/addnorth TPU Pro Matte 85A" + ], + "name": "addnorth TPU Pro Matte 85A", + "filament_type": "TPU", + "filament_vendor": "addnorth" + }, + "OFvdZ2bx": { + "filaments": [ + "Qidi/QIDI WOOD Rapido" + ], + "name": "QIDI WOOD Rapido", + "filament_type": "PLA", + "filament_vendor": "QIDI" + }, + "OFvgE0Zh": { + "filaments": [ + "Elegoo/Elegoo PLA", + "OrcaFilamentLibrary/Elegoo PLA" + ], + "name": "Elegoo PLA", + "filament_type": "PLA", + "filament_vendor": "Elegoo" + }, + "OFvmwTZE": { + "filaments": [ + "Snapmaker/Snapmaker TPU 95A" + ], + "name": "Snapmaker TPU 95A", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFvrXuV7": { + "filaments": [ + "BBL/PolyLite ASA", + "OrcaFilamentLibrary/PolyLite ASA" + ], + "name": "PolyLite ASA", + "filament_type": "ASA", + "filament_vendor": "Polymaker" + }, + "OFvxIS9g": { + "filaments": [ + "BBL/Fiberon PA12-CF10", + "Snapmaker/Fiberon PA12-CF10" + ], + "name": "Fiberon PA12-CF10", + "filament_type": "PA-CF", + "filament_vendor": "Polymaker" + }, + "OFvxghTE": { + "filaments": [ + "Chuanying/Generic HS PLA", + "Flashforge/Generic HS PLA", + "TwoTrees/Generic HS PLA" + ], + "name": "Generic HS PLA", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFvyB0Bz": { + "filaments": [ + "BBL/PolyLite PLA Galaxy", + "Snapmaker/PolyLite PLA Galaxy" + ], + "name": "PolyLite PLA Galaxy", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFvzvwCu": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PLA High Speed" + ], + "name": "Eolas Prints PLA High Speed", + "filament_type": "PLA", + "filament_vendor": "Eolas Prints" + }, + "OFw4WD4T": { + "filaments": [ + "BBL/Fiberon PETG-rCF08" + ], + "name": "Fiberon PETG-rCF08", + "filament_type": "PETG-CF", + "filament_vendor": "Polymaker" + }, + "OFwJ0qu2": { + "filaments": [], + "name": "DREMC PET-CF", + "filament_type": "PET-CF", + "filament_vendor": "DREMC" + }, + "OFwLBAGf": { + "filaments": [ + "Qidi/HATCHBOX ABS" + ], + "name": "HATCHBOX ABS", + "filament_type": "ABS", + "filament_vendor": "HATCHBOX" + }, + "OFwPrlCM": { + "filaments": [ + "BBL/Bambu PETG Translucent", + "OrcaFilamentLibrary/Bambu PETG Translucent" + ], + "name": "Bambu PETG Translucent", + "filament_type": "PETG", + "filament_vendor": "Bambu Lab" + }, + "OFwRJ4g0": { + "filaments": [ + "OrcaFilamentLibrary/NIT PLA" + ], + "name": "NIT PLA", + "filament_type": "PLA", + "filament_vendor": "NIT" + }, + "OFwVVKEV": { + "filaments": [ + "FlyingBear/Other TPU", + "InfiMech/Other TPU" + ], + "name": "Other TPU", + "filament_type": "TPU", + "filament_vendor": "Other" + }, + "OFwaYjL6": { + "filaments": [ + "BBL/Fiberon PA6-GF", + "OrcaFilamentLibrary/Fiberon PA6-GF" + ], + "name": "Fiberon PA6-GF", + "filament_type": "PA-GF", + "filament_vendor": "Polymaker" + }, + "OFwc74ck": { + "filaments": [ + "BBL/BETA PLA Matte" + ], + "name": "BETA PLA Matte", + "filament_type": "PLA", + "filament_vendor": "BETA" + }, + "OFwhLMs4": { + "filaments": [ + "Snapmaker/Snapmaker PLA SnapSpeed" + ], + "name": "Snapmaker PLA SnapSpeed", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFwjMiKL": { + "filaments": [ + "Flashforge/Flashforge PETG Transparent" + ], + "name": "Flashforge PETG Transparent", + "filament_type": "PETG", + "filament_vendor": "Flashforge" + }, + "OFwlZ7gH": { + "filaments": [ + "Flashforge/Flashforge TPU-90A" + ], + "name": "Flashforge TPU-90A", + "filament_type": "TPU-90A", + "filament_vendor": "Flashforge" + }, + "OFwu7IAG": { + "filaments": [ + "BBL/COEX PCTG PRIME", + "OrcaFilamentLibrary/COEX PCTG PRIME" + ], + "name": "COEX PCTG PRIME", + "filament_type": "PCTG", + "filament_vendor": "COEX 3D" + }, + "OFwwAQnA": { + "filaments": [ + "Prusa/Generic PC HF" + ], + "name": "Generic PC HF", + "filament_type": "PC", + "filament_vendor": "Generic" + }, + "OFwyt1xt": { + "filaments": [ + "Eryone/Eryone ASA-CF" + ], + "name": "Eryone ASA-CF", + "filament_type": "ASA-CF", + "filament_vendor": "Eryone" + }, + "OFx0WlzS": { + "filaments": [ + "Flashforge/Flashforge TPU-95A" + ], + "name": "Flashforge TPU-95A", + "filament_type": "TPU-95A", + "filament_vendor": "Flashforge" + }, + "OFx8Lmsd": { + "filaments": [ + "OrcaFilamentLibrary/Eolas Prints PETG UV Resistant" + ], + "name": "Eolas Prints PETG UV Resistant", + "filament_type": "PETG", + "filament_vendor": "Eolas Prints" + }, + "OFxA1p01": { + "filaments": [ + "BBL/Overture PLA Pro", + "OrcaFilamentLibrary/Overture PLA Pro" + ], + "name": "Overture PLA Pro", + "filament_type": "PLA", + "filament_vendor": "Overture" + }, + "OFxDHUX8": { + "filaments": [ + "SeeMeCNC/SeeMeCNC PETG" + ], + "name": "SeeMeCNC PETG", + "filament_type": "PETG", + "filament_vendor": "SeeMeCNC" + }, + "OFxJRuVF": { + "filaments": [ + "Anycubic/Anycubic PC-GF" + ], + "name": "Anycubic PC-GF", + "filament_type": "PC-GF", + "filament_vendor": "Anycubic" + }, + "OFxOHhZw": { + "filaments": [ + "Elegoo/Elegoo ABS", + "OrcaFilamentLibrary/Elegoo ABS" + ], + "name": "Elegoo ABS", + "filament_type": "ABS", + "filament_vendor": "Elegoo" + }, + "OFxUwUeW": { + "filaments": [ + "BBL/SUNLU PLA Marble", + "Flashforge/SUNLU PLA Marble", + "OrcaFilamentLibrary/SUNLU PLA Marble" + ], + "name": "SUNLU PLA Marble", + "filament_type": "PLA", + "filament_vendor": "SUNLU" + }, + "OFxYB4Sw": { + "filaments": [ + "Snapmaker/Snapmaker J1 PETG-CF" + ], + "name": "Snapmaker J1 PETG-CF", + "filament_type": "PETG-CF", + "filament_vendor": "Snapmaker" + }, + "OFxe4rXr": { + "filaments": [ + "BBL/PolyTerra PLA Marble", + "Snapmaker/PolyTerra PLA Marble" + ], + "name": "PolyTerra PLA Marble", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFxqf79Q": { + "filaments": [ + "BBL/BETA PETG HF" + ], + "name": "BETA PETG HF", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFy02QHU": { + "filaments": [ + "BBL/PolyLite PLA Translucent", + "Snapmaker/PolyLite PLA Translucent" + ], + "name": "PolyLite PLA Translucent", + "filament_type": "PLA", + "filament_vendor": "Polymaker" + }, + "OFy14TRA": { + "filaments": [ + "Snapmaker/Snapmaker J1 ABS" + ], + "name": "Snapmaker J1 ABS", + "filament_type": "ABS", + "filament_vendor": "Snapmaker" + }, + "OFy3sW6j": { + "filaments": [ + "WonderMaker/WonderMaker ASA" + ], + "name": "WonderMaker ASA", + "filament_type": "ASA", + "filament_vendor": "WonderMaker" + }, + "OFy48TOp": { + "filaments": [ + "Flashforge/Generic TPU-95A" + ], + "name": "Generic TPU-95A", + "filament_type": "TPU-95A", + "filament_vendor": "Generic" + }, + "OFy8tYJE": { + "filaments": [ + "Cubicon/Cubicon ABS-A100" + ], + "name": "Cubicon ABS-A100", + "filament_type": "ABS", + "filament_vendor": "Cubicon" + }, + "OFyFyLIp": { + "filaments": [ + "SeeMeCNC/SeeMeCNC TPU" + ], + "name": "SeeMeCNC TPU", + "filament_type": "TPU", + "filament_vendor": "SeeMeCNC" + }, + "OFyHgT60": { + "filaments": [ + "OrcaArena/Arena PLA Sparkle" + ], + "name": "Arena PLA Sparkle", + "filament_type": "PLA", + "filament_vendor": "Orca Arena" + }, + "OFyJjkek": { + "filaments": [ + "BBL/addnorth TPU Pro Matte 95A" + ], + "name": "addnorth TPU Pro Matte 95A", + "filament_type": "TPU", + "filament_vendor": "addnorth" + }, + "OFyLWVF3": { + "filaments": [ + "Creality/Generic PETG-GF" + ], + "name": "Generic PETG-GF", + "filament_type": "PETG-GF", + "filament_vendor": "Generic" + }, + "OFyPG8v2": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA Eco" + ], + "name": "Snapmaker Dual PLA Eco", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFyPTnSk": { + "filaments": [ + "BBL/BETA PETG Heat Color Change" + ], + "name": "BETA PETG Heat Color Change", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFyQwdaM": { + "filaments": [ + "Volumic/Volumic ABS Ultra (Performance)" + ], + "name": "Volumic ABS Ultra (Performance)", + "filament_type": "ABS", + "filament_vendor": "Volumic" + }, + "OFyRCIMh": { + "filaments": [ + "FlyingBear/Other PC", + "InfiMech/Other PC" + ], + "name": "Other PC", + "filament_type": "PC", + "filament_vendor": "Other" + }, + "OFyUJI3q": { + "filaments": [ + "Volumic/Volumic ABS Ultra" + ], + "name": "Volumic ABS Ultra", + "filament_type": "ABS", + "filament_vendor": "Volumic" + }, + "OFybzvQN": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Gris Ceniza" + ], + "name": "FilAr PETG Gris Ceniza", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFyhjiNs": { + "filaments": [ + "Snapmaker/Snapmaker PVA" + ], + "name": "Snapmaker PVA", + "filament_type": "PVA", + "filament_vendor": "Snapmaker" + }, + "OFyj3m13": { + "filaments": [ + "Snapmaker/Snapmaker Dual PLA Silk" + ], + "name": "Snapmaker Dual PLA Silk", + "filament_type": "PLA", + "filament_vendor": "Snapmaker" + }, + "OFymnal9": { + "filaments": [ + "Sovol/Sovol Zero PETG HS Nozzle" + ], + "name": "Sovol Zero PETG HS Nozzle", + "filament_type": "PETG", + "filament_vendor": "Generic" + }, + "OFyoBZdm": { + "filaments": [ + "LH/LHS PLA" + ], + "name": "LHS PLA", + "filament_type": "PLA", + "filament_vendor": "LH Stinger" + }, + "OFyreocX": { + "filaments": [ + "Tiertime/Tiertime PVA" + ], + "name": "Tiertime PVA", + "filament_type": "PVA", + "filament_vendor": "Tiertime" + }, + "OFyrnlUn": { + "filaments": [ + "Snapmaker/Snapmaker J1 TPU" + ], + "name": "Snapmaker J1 TPU", + "filament_type": "TPU", + "filament_vendor": "Snapmaker" + }, + "OFysxCep": { + "filaments": [ + "OrcaFilamentLibrary/FilAr PETG Coral" + ], + "name": "FilAr PETG Coral", + "filament_type": "PETG", + "filament_vendor": "FilAr" + }, + "OFyxayW4": { + "filaments": [ + "BBL/AliZ PLA", + "OrcaFilamentLibrary/AliZ PLA" + ], + "name": "AliZ PLA", + "filament_type": "PLA", + "filament_vendor": "Aliz" + }, + "OFz1a1fy": { + "filaments": [ + "BBL/BETA PETG Metallic" + ], + "name": "BETA PETG Metallic", + "filament_type": "PETG", + "filament_vendor": "BETA" + }, + "OFz5oHgf": { + "filaments": [ + "MagicMaker/Generic PEEK" + ], + "name": "Generic PEEK", + "filament_type": "PEEK", + "filament_vendor": "Generic" + }, + "OFzAWsca": { + "filaments": [ + "Qidi/Qidi TPU 95A-HF" + ], + "name": "Qidi TPU 95A-HF", + "filament_type": "TPU", + "filament_vendor": "QIDI" + }, + "OFzB4uOs": { + "filaments": [ + "Sovol/Sovol Zero PLA Basic HS Nozzle" + ], + "name": "Sovol Zero PLA Basic HS Nozzle", + "filament_type": "PLA", + "filament_vendor": "Generic" + }, + "OFzRtFM9": { + "filaments": [ + "Prusa/Generic ASA HF" + ], + "name": "Generic ASA HF", + "filament_type": "ASA", + "filament_vendor": "Generic" + }, + "OFzS7zt4": { + "filaments": [ + "Anycubic/Anycubic PA" + ], + "name": "Anycubic PA", + "filament_type": "PA", + "filament_vendor": "Anycubic" + }, + "OFzY7N3Z": { + "filaments": [ + "Artillery/Artillery PLA" + ], + "name": "Artillery PLA", + "filament_type": "PLA", + "filament_vendor": "Artillery" + }, + "OFzaq7Yg": { + "filaments": [ + "BBL/BETA TPU 98A" + ], + "name": "BETA TPU 98A", + "filament_type": "TPU", + "filament_vendor": "BETA" + }, + "OFzk5oAo": { + "filaments": [ + "BBL/addnorth ABS rABS" + ], + "name": "addnorth ABS rABS", + "filament_type": "ABS", + "filament_vendor": "addnorth" + }, + "OFzrUUxc": { + "filaments": [], + "name": "DREMC ABS", + "filament_type": "ABS", + "filament_vendor": "DREMC" + }, + "OFztQ7rO": { + "filaments": [ + "LH/LHS ABS" + ], + "name": "LHS ABS", + "filament_type": "ASA", + "filament_vendor": "LH Stinger" + }, + "OFzwA5Z9": { + "filaments": [ + "Flashforge/FusRock PET-GF" + ], + "name": "FusRock PET-GF", + "filament_type": "PET-GF", + "filament_vendor": "FusRock" + }, + "OFzyIxba": { + "filaments": [ + "BBL/Bambu PVA", + "OrcaFilamentLibrary/Bambu PVA" + ], + "name": "Bambu PVA", + "filament_type": "PVA", + "filament_vendor": "Bambu Lab" + } + } +} diff --git a/scripts/flatpak/.gitignore b/scripts/flatpak/.gitignore index 3b01f15d01..21abf7a876 100644 --- a/scripts/flatpak/.gitignore +++ b/scripts/flatpak/.gitignore @@ -1,3 +1,4 @@ builddir .flatpak-builder *.docker.yml +deps.tar* diff --git a/scripts/flatpak/check_manifest_cacheable.sh b/scripts/flatpak/check_manifest_cacheable.sh new file mode 100755 index 0000000000..e82190ca81 --- /dev/null +++ b/scripts/flatpak/check_manifest_cacheable.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# Check a Flatpak manifest for `type: dir` sources at or before the orca_deps +# module. +# +# Usage: check_manifest_cacheable.sh [manifest] +# Defaults to com.orcaslicer.OrcaSlicer.yml next to this script. +# +# Exits 0 when none are found, 1 when any are, listing them as file:line, and +# 2 when the manifest is missing or has no orca_deps module. + +set -euo pipefail + +anchor=orca_deps +manifest=${1:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/com.orcaslicer.OrcaSlicer.yml} + +module_re='^ - name: ' +dir_re='(^|[-{,[:space:]])type:[[:space:]]*dir([,}[:space:]]|$)' + +if [ ! -f "$manifest" ]; then + echo "$manifest: no such file" >&2 + exit 2 +fi + +anchor_start=$(grep -n "${module_re}${anchor}[[:space:]]*$" "$manifest" | cut -d: -f1 || true) +if [ -z "$anchor_start" ]; then + echo "$manifest: no module named '$anchor'; this check needs updating" >&2 + exit 2 +fi + +# First module header after the anchor, or EOF if the anchor is last. +anchor_end=$(grep -n "$module_re" "$manifest" | cut -d: -f1 | + awk -v s="$anchor_start" '$1 > s { print $1; exit }') +[ -n "$anchor_end" ] || anchor_end=$(awk 'END { print NR + 1 }' "$manifest") + +violations=$(awk -v e="$anchor_end" -v f="$manifest" -v mre="$module_re" -v dre="$dir_re" ' + { sub(/\r$/, "") } + /^[[:space:]]*#/ { next } + $0 ~ mre { module = $3 } + NR < e && $0 ~ dre { + printf "%s:%d: %s (module %s)\n", f, NR, $0, module + }' "$manifest") + +if [ -n "$violations" ]; then + printf '%s\n' "$violations" >&2 + echo >&2 + echo "flatpak-builder cannot checksum a directory, so each of these makes" >&2 + echo "$anchor and every module after it rebuild from scratch on every run." >&2 + echo "See the $anchor sources in this manifest for the tarball used instead." >&2 + exit 1 +fi + +echo "manifest OK: no 'type: dir' source at or before $anchor" diff --git a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml index a3efaced8c..00aa430f84 100644 --- a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml @@ -144,6 +144,7 @@ modules: env: BUILD_DIR: deps/build_flatpak build-commands: + - tar xf deps.tar - | cmake -S deps -B $BUILD_DIR \ -DFLATPAK=ON \ @@ -169,10 +170,10 @@ modules: - /libpython/include sources: - # OrcaSlicer deps/ directory (avoids copying .git from worktree) - - type: dir - path: ../../deps - dest: deps + # flatpak-builder cannot checksum a directory, so a `type: dir` here would + # rebuild every dependency on every run. Generated by make_deps_tar.sh. + - type: file + path: deps.tar # --------------------------------------------------------------- # Pre-downloaded dependency archives diff --git a/scripts/flatpak/make_deps_tar.sh b/scripts/flatpak/make_deps_tar.sh new file mode 100755 index 0000000000..e561da2e7b --- /dev/null +++ b/scripts/flatpak/make_deps_tar.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Pack deps/ into scripts/flatpak/deps.tar for the Flatpak manifest's orca_deps +# module. +# +# Usage: make_deps_tar.sh +# Requires GNU tar. On macOS, brew install gnu-tar. +# +# The archive is byte-reproducible. Member order, mtimes, ownership and the +# group/other write bits are pinned, so identical deps/ contents always produce +# an identical file. deps/build* and deps/DL_CACHE are excluded. +# +# Prints the output path, size and sha256. + +set -euo pipefail + +if [ "$#" -ne 0 ]; then + echo "usage: ${0##*/}" >&2 + exit 2 +fi + +tar_bin=$(command -v gtar || command -v tar || true) +tar_version=$([ -n "$tar_bin" ] && "$tar_bin" --version 2>/dev/null || true) +case $tar_version in + *"GNU tar"*) ;; + *) echo "${0##*/}: needs GNU tar; on macOS run 'brew install gnu-tar'" >&2 + exit 2 ;; +esac + +script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +repo_root=$(cd "$script_dir/../.." && pwd) +out=$script_dir/deps.tar +tmp=$out.tmp +trap 'rm -f "$tmp"' EXIT + +"$tar_bin" --format=gnu \ + --sort=name \ + --mtime=@0 \ + --owner=0 --group=0 --numeric-owner \ + --mode=go-w \ + --exclude='deps/build*' \ + --exclude='deps/DL_CACHE' \ + -cf "$tmp" \ + -C "$repo_root" deps + +mv -f "$tmp" "$out" + +if command -v sha256sum >/dev/null 2>&1; then + sum=$(sha256sum "$out" | cut -d' ' -f1) +elif command -v shasum >/dev/null 2>&1; then + sum=$(shasum -a 256 "$out" | cut -d' ' -f1) +else + sum=unavailable +fi + +echo "Wrote $out ($(du -h "$out" | cut -f1), sha256 $sum)" diff --git a/scripts/flatpak/setup_env_ubuntu24.04.sh b/scripts/flatpak/setup_env_ubuntu24.04.sh index a0ccbb9b32..74b7629f60 100755 --- a/scripts/flatpak/setup_env_ubuntu24.04.sh +++ b/scripts/flatpak/setup_env_ubuntu24.04.sh @@ -8,8 +8,9 @@ flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50 org.freedesktop ## # in OrcaSlicer folder, run following command to build Orca -# # First time build -# flatpak-builder --state-dir=.flatpak-builder --keep-build-dirs --user --force-clean build-dir scripts/flatpak/com.orcaslicer.OrcaSlicer.yml -# # Subsequent builds (only rebuilding OrcaSlicer) +# # First time build +# ./scripts/flatpak/make_deps_tar.sh && flatpak-builder --state-dir=.flatpak-builder --keep-build-dirs --user --force-clean build-dir scripts/flatpak/com.orcaslicer.OrcaSlicer.yml + +# # Subsequent builds (only rebuilding OrcaSlicer; run make_deps_tar.sh first if deps/ changed) # flatpak-builder --state-dir=.flatpak-builder --keep-build-dirs --user build-dir scripts/flatpak/com.orcaslicer.OrcaSlicer.yml --build-only=OrcaSlicer \ No newline at end of file diff --git a/scripts/orca_extra_profile_check.py b/scripts/orca_extra_profile_check.py index 07ce3d69d3..e95e2c29e8 100644 --- a/scripts/orca_extra_profile_check.py +++ b/scripts/orca_extra_profile_check.py @@ -3,7 +3,7 @@ import json import argparse from pathlib import Path -from assign_vendor_setting_ids import generate_preset_setting_id +from orca_id_tool import generate_preset_setting_id, check_filament_ids OBSOLETE_KEYS = { "acceleration", "scale", "rotate", "duplicate", "duplicate_grid", @@ -289,18 +289,38 @@ def check_name_consistency(profiles_dir, vendor_name): return error_count, 0 -def check_filament_id(vendor, vendor_folder): +def check_filament_id(profiles_dir, vendor_name): """ - Make sure filament_id is not longer than 8 characters, otherwise AMS won't work properly + Make sure filament_id is not longer than 8 characters, otherwise AMS won't work properly. + + Runs tree-wide, every vendor alike (BBL included: the id format is what + matters, not the vendor). Every .json file under the vendor's filament + directory is still parsed through the duplicate-key hook below, so that + coverage is unchanged; only the length rule itself is scoped to presets + the vendor's index (<vendor>.json filament_list) actually references. A + file the index does not reference never loads, so its filament_id length + cannot break AMS -- and some vendors (e.g. SeeMeCNC) ship such orphaned + files pre-dating this check, with no bearing on what ships. """ - if vendor not in ('BBL', 'OrcaFilamentLibrary'): - return 0 - error = 0 - vendor_path = Path(vendor_folder) + vendor_path = profiles_dir / vendor_name / "filament" if not vendor_path.exists(): return 0 + referenced = set() + vendor_file = profiles_dir / (vendor_name + ".json") + if vendor_file.exists(): + try: + with open(vendor_file, 'r', encoding='UTF-8') as fp: + index = json.load(fp) + for entry in index.get('filament_list', []): + sub_path = entry.get('sub_path') + if sub_path: + referenced.add((profiles_dir / vendor_name / sub_path).resolve()) + except Exception as e: + print_error(f"Error loading vendor profile {vendor_file}: {e}") + error += 1 + # Use rglob to recursively find .json files. for file_path in vendor_path.rglob("*.json"): try: @@ -318,13 +338,13 @@ def check_filament_id(vendor, vendor_folder): if 'filament_id' not in data: continue - + filament_id = data['filament_id'] - if len(filament_id) > 8: + if len(filament_id) > 8 and file_path.resolve() in referenced: error += 1 print_error(f"Filament id too long \"{filament_id}\": {file_path}") - + return error def check_obsolete_keys(profiles_dir, vendor_name): @@ -467,10 +487,11 @@ PROFILE_SUBDIRS = ("filament", "process", "machine") def check_setting_id_uniqueness(profiles_dir): """ - Validate setting_id across every vendor (see scripts/assign_vendor_setting_ids.py): + Validate setting_id across every vendor (see scripts/orca_id_tool.py): 1. Every instantiated preset must HAVE a setting_id. (all vendors) 2. A stored setting_id must equal generate_preset_setting_id(vendor, type, name); a stale - value means the JSON was edited without rerunning assign_vendor_setting_ids.py. + value means the JSON was edited without rerunning + "python scripts/orca_id_tool.py --generate --setting-id". (all vendors EXCEPT the formula-exempt ones, e.g. BBL) 3. Base profiles (instantiation != "true") must not carry a setting_id. (all vendors) 4. setting_id must be globally unique - no two files may share one. (all vendors) @@ -502,7 +523,8 @@ def check_setting_id_uniqueness(profiles_dir): errors += 1 print_error( f'profile {rel} uses the misspelled key "settings_id" ' - f'(should be "setting_id"); run assign_vendor_setting_ids.py' + f'(should be "setting_id"); run ' + f'"python scripts/orca_id_tool.py --generate --setting-id"' ) sid = data.get("setting_id") instantiated = data.get("instantiation") == "true" @@ -512,7 +534,8 @@ def check_setting_id_uniqueness(profiles_dir): errors += 1 print_error( f'base profile {rel} (instantiation != "true") must not have a ' - f'setting_id ("{sid}"); run assign_vendor_setting_ids.py' + f'setting_id ("{sid}"); run ' + f'"python scripts/orca_id_tool.py --generate --setting-id"' ) continue # Rule 1: every instantiated preset must have a setting_id. @@ -520,7 +543,7 @@ def check_setting_id_uniqueness(profiles_dir): errors += 1 print_error( f"instantiated preset {rel} is missing a setting_id; " - f"run assign_vendor_setting_ids.py" + f'run "python scripts/orca_id_tool.py --generate --setting-id"' ) continue # Rule 2: the stored id must match the deterministic rule. BBL keeps its @@ -532,7 +555,7 @@ def check_setting_id_uniqueness(profiles_dir): print_error( f'setting_id "{sid}" in {rel} does not match the expected ' f'"{expected}" for {vendor}/{sub}/{data.get("name", "")}; ' - f"run assign_vendor_setting_ids.py" + f'run "python scripts/orca_id_tool.py --generate --setting-id"' ) continue # Rule 4: collect for the global-uniqueness check below. @@ -595,7 +618,7 @@ def main(): errors_found += check_vector_type_keys(profiles_dir, vendor_name) - errors_found += check_filament_id(vendor_name, vendor_path / "filament") + errors_found += check_filament_id(profiles_dir, vendor_name) checked_vendor_count += 1 if args.vendor: @@ -610,6 +633,11 @@ def main(): # Runs once over the whole tree regardless of the --vendor filter. errors_found += check_setting_id_uniqueness(profiles_dir) + # Global filament_id check (see scripts/orca_id_tool.py): effective ids + # are resolved loader-faithfully and validated against the sanctioned snapshot + # (scripts/filament_id_snapshot.json). Runs once over the whole tree. + errors_found += check_filament_ids(profiles_dir) + # ✨ Output finale in stile "compilatore" print("\n==================== SUMMARY ====================") print_info(f"Checked vendors : {checked_vendor_count}") diff --git a/scripts/orca_id_tool.py b/scripts/orca_id_tool.py new file mode 100755 index 0000000000..956aec3569 --- /dev/null +++ b/scripts/orca_id_tool.py @@ -0,0 +1,1429 @@ +#!/usr/bin/env python3 +""" +Assign and validate the deterministic ids of OrcaSlicer system profiles: the +per-product filament_id and the per-preset setting_id. + +Both ids are pure functions of the thing they name, so nothing here is ever +invented: the tool only writes the id the rules below already imply, and a tree +that already satisfies them is left untouched. + +filament_id policy (see docs/HLSD/filament_id.md): + * filament_id is a PRODUCT id: one named spool product = one id, shared by all + of that product's per-printer/per-nozzle variants in every bundle. The + granularity is the name on the spool, not the brand: "AAA PLA Lite" and + "AAA PLA Pro" are two products with two ids, not variants of one. The + id is a pure function of the product triple (below), so WHERE a preset gets + it from is irrelevant: it may declare the key itself or inherit it from any + ancestor — a root preset, a real (instantiated) filament, an + OrcaFilamentLibrary (OFL) preset — as long as the id it ends up with is the + mint of its OWN triple. Inheritance carries settings, never identity; the + key is bundle-independent, so moving a filament into OFL never changes it. + * Ids are content-addressed by the product triple, resolved from the preset's + flattened config (filament_vendor and filament_type are inheritable list + options — first element; filament name = preset base name): + filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE, + "filament_product/<filament_vendor>/<filament_type>/<filament_name>") ) + 8 chars total, which satisfies the AMS length limit. Nobody invents ids by + hand, and nothing but the triple feeds the mint — not the rest of the tree, + not the snapshot. Two products whose triples mint one id (a base62 + collision; odds ~1e-5 over the whole tree) is an error --check reports and + --generate refuses to write; the remedy is a rename so the triples differ, + never a salted or hand-picked second id. + Identity changes (a filament rename, a filament_vendor/filament_type fix) + change the id BY DESIGN. + * Reserved id spaces that are never minted into or altered: + - GF* Bambu AMS/RFID catalog: frozen, no preset of any + vendor (including BBL) may declare one; the + generated resources/printers/bambu_filament_ids.json + carries the correspondence instead + - QD_* Qidi device protocol: the box composes these ids + at runtime, they are not preset ids, and no + preset may declare one + - P + 7 hex chars (case-insensitive) and the literal "null" + user-custom presets (CreatePresetsDialog.cpp) + * scripts/filament_id_snapshot.json is the sanctioned-state snapshot: one + entry per id, carrying the product triple it is minted from and the + "Vendor/Filament" presets claiming it. It must exactly equal the tree-derived + state at all times, so any id/claim/triple change shows up as a reviewable + diff to that file (the maintainer gate). It sanctions state, never + exceptions: no check consults it to excuse a preset from the rules above. + +setting_id policy (see AGENTS.md "Critical Constraints"): + * setting_id is a PRESET id, a pure function of the preset's identity: + setting_id = base62_16( uuid5(NAMESPACE, "<vendor>/<type>/<name>") ) + The same value is recomputed on the fly by the C++ app + (Slic3r::generate_preset_setting_id); the two MUST stay byte-identical, and + the validator (orca_extra_profile_check.py) imports the rule from here. + Uniqueness is therefore automatic: two presets collide only if they share + vendor + type + name, which the validator flags. + * Only instantiated presets (instantiation == "true") carry a setting_id; + base / template profiles do not. + * Bambu (BBL) owns the authoritative "G*" setting_id space and is the only + reserved vendor: its setting_ids are never rewritten, which keeps + Bambu-synced presets backward compatible. filament_id has no such exemption + — the GF* catalog space is frozen and ownerless, so BBL's filament_ids are + minted like every other vendor's. + +The effective-id resolution below is loader-faithful (PresetBundle.cpp +load_vendor_configs_from_json): own filament_id key, else walk `inherits` within +the vendor map, with OrcaFilamentLibrary base-bundle fallback; once a chain enters +OFL it stays in OFL; a vendor chain that dead-ends id-less retries its direct +parent in the OFL map. filament_vendor / filament_type resolve the same way. + +Run from anywhere: + python scripts/orca_id_tool.py --generate write the ids every profile should carry + python scripts/orca_id_tool.py --dry-run preview that; writes nothing + python scripts/orca_id_tool.py --check validate filament_id state (what CI runs) + python scripts/orca_id_tool.py --update-snapshot re-record the sanctioned filament_id state +Narrow --generate with --filament-id / --setting-id and --vendor VENDOR (repeatable). +""" + +import argparse +import json +import os +import re +import sys +import uuid + +# The id namespace baked into both Python and C++ (Slic3r::generate_preset_setting_id). +# Dedicated, distinct from the cloud namespace (f47ac10b-...) so the two id spaces never +# coincide; it is the root of BOTH id rules below — never change it. +NAMESPACE = uuid.UUID("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f") +ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +SETTING_ID_LENGTH = 16 + +# Dedicated namespace for filament_id, derived from the setting_id namespace above. +# Never change it. +# FILAMENT_ID_NAMESPACE == UUID("c4d3ff49-4c32-5534-a3e3-00894157ab97") +FILAMENT_ID_NAMESPACE = uuid.uuid5(NAMESPACE, "filament_id") +FILAMENT_ID_LENGTH = 6 # base62 digits after the "OF" prefix -> 8 chars total + +SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__)) +PROFILES_DIR = os.path.normpath(os.path.join(SCRIPTS_DIR, "..", "resources", "profiles")) +SNAPSHOT_PATH = os.path.join(SCRIPTS_DIR, "filament_id_snapshot.json") +# The single source of truth for the map path; update_bambu_filament_ids.py +# imports this rather than recomputing it. +BAMBU_MAP_PATH = os.path.normpath( + os.path.join(SCRIPTS_DIR, "..", "resources", "printers", "bambu_filament_ids.json")) + +OFL = "OrcaFilamentLibrary" + +# Bambu (BBL) is the only vendor exempt from the setting_id rule: it keeps its +# authoritative "G*" cloud ids. No vendor is exempt from the filament_id rule. +RESERVED_VENDORS = {"BBL"} + +# The profile types that carry a setting_id; the subdir name is also the type +# name, matching Preset::get_type_string() on the C++ side. +PROFILE_SUBDIRS = ("filament", "process", "machine") + +OF_ID_RE = re.compile(r"^OF[0-9A-Za-z]{6}$") +# User-custom id space minted by CreatePresetsDialog.cpp ("P" + md5(name)[0:7]); +# reserved case-insensitively, together with its "null" sentinel. +USER_CUSTOM_ID_RE = re.compile(r"^P[0-9A-Fa-f]{7}$", re.IGNORECASE) +# Filament name = preset base name: strip the first "@..." suffix. The space before +# "@" is optional because names like "Afinia PLA@HS" exist. +BASE_NAME_RE = re.compile(r"\s?@.*$") +# A JSON string literal, for the byte-preserving key edits. +_JSON_STR = r'"(?:[^"\\]|\\.)*"' + +GENERATE_CMD = "python scripts/orca_id_tool.py --generate" +UPDATE_HINT = 'run "python scripts/orca_id_tool.py --update-snapshot" and commit the diff for maintainer review' +BAMBU_MAP_HINT = 'regenerate the map with "python scripts/update_bambu_filament_ids.py" and commit the diff for maintainer review' + + +# Same output helpers/format as orca_extra_profile_check.py (not imported from +# there to avoid a circular import: that script imports check_filament_ids). +def print_error(msg): + print(f"\033[91m[ERROR]\033[0m {msg}") # Red + +def print_warning(msg): + print(f"\033[93m[WARNING]\033[0m {msg}") # Yellow + +def print_info(msg): + print(f"\033[94m[INFO]\033[0m {msg}") # Blue + +def print_success(msg): + print(f"\033[92m[SUCCESS]\033[0m {msg}") # Green + + +def _utf8_console(): + """Make stdout/stderr survive non-ASCII profile names on cp1252 consoles.""" + for stream in (sys.stdout, sys.stderr): + if hasattr(stream, "reconfigure"): + try: + stream.reconfigure(encoding="utf-8", errors="replace") + except (ValueError, OSError): + pass + + +# --------------------------------------------------------------------------- +# Minting +# --------------------------------------------------------------------------- + +def _base62_tail(n, length): + """The low `length` base62 digits of n, most-significant first. + + The shared tail of both id rules. Its output bytes are pinned by the C++ + golden vectors (tests/libslic3r/test_preset_setting_id.cpp) and by the + filament_id snapshot — never change it. + """ + digits = [] + for _ in range(length): + digits.append(ALPHABET[n % 62]) + n //= 62 + return "".join(reversed(digits)) + + +def generate_preset_setting_id(vendor, type_name, name): + """Deterministic 16-char base62 setting_id for a preset. + + input = f"{vendor}/{type_name}/{name}"; u = uuid5(NAMESPACE, input); + id = the low SETTING_ID_LENGTH base62 digits of int(u.bytes, "big"), + most-significant first. Kept byte-identical to the C++ + Slic3r::generate_preset_setting_id. + """ + u = uuid.uuid5(NAMESPACE, f"{vendor}/{type_name}/{name}") + return _base62_tail(int.from_bytes(u.bytes, "big"), SETTING_ID_LENGTH) + + +def base_name(name): + """Filament name of a preset: name with the first "@..." suffix stripped.""" + return BASE_NAME_RE.sub("", name, count=1) + + +def generate_filament_id(filament_vendor, filament_type, filament_name): + """Deterministic "OF" + 6-char base62 filament_id for a filament product. + + The triple is the only input: no salt, no state, no second value. + input = "filament_product/<filament_vendor>/<filament_type>/<filament_name>"; + u = uuid5(FILAMENT_ID_NAMESPACE, input); the id tail is the low + FILAMENT_ID_LENGTH base62 digits of int(u.bytes, "big"), most-significant + first — the same derivation as generate_preset_setting_id. + """ + key = f"filament_product/{filament_vendor}/{filament_type}/{filament_name}" + u = uuid.uuid5(FILAMENT_ID_NAMESPACE, key) + return "OF" + _base62_tail(int.from_bytes(u.bytes, "big"), FILAMENT_ID_LENGTH) + + +# --------------------------------------------------------------------------- +# Tree loading + loader-faithful effective-id resolution +# --------------------------------------------------------------------------- + +def load_json(path): + with open(path, "r", encoding="utf-8-sig") as f: + return json.load(f) + + +def list_vendor_names(profiles_dir): + """Vendor bundles = subdirectories with a matching <name>.json index file. + + (Ignores stray non-bundle entries such as the tracked "user" directory, + which has no user.json index.) + """ + profiles_dir = str(profiles_dir) + return sorted( + os.path.splitext(f)[0] for f in os.listdir(profiles_dir) + if f.endswith(".json") + and os.path.isdir(os.path.join(profiles_dir, os.path.splitext(f)[0])) + ) + + +def list_profile_dirs(profiles_dir): + """Every vendor directory under the tree, index or not. + + What the setting_id pass walks, and what orca_extra_profile_check.py walks: + setting_id is a per-file property, so a bundle whose index has not landed yet + must still be assignable — otherwise the validator flags files the tool + refuses to touch. (filament_id is driven by each bundle's filament_list + instead, hence list_vendor_names above.) + """ + profiles_dir = str(profiles_dir) + return sorted(d for d in os.listdir(profiles_dir) + if os.path.isdir(os.path.join(profiles_dir, d))) + + +def iter_profile_files(vendor_dir): + """Yield (json path, type) under a vendor bundle, in a deterministic order.""" + for sub in PROFILE_SUBDIRS: + base = os.path.join(vendor_dir, sub) + if not os.path.isdir(base): + continue + for root, dirs, files in os.walk(base): + dirs.sort() # deterministic traversal across filesystems + for name in sorted(files): + if name.endswith(".json"): + yield os.path.join(root, name), sub + + +def load_vendor_filaments(profiles_dir, vendor): + """Load a vendor's filament presets from its index's filament_list. + + Returns (presets dict name -> record, list of unreadable-file messages). + """ + profiles_dir = str(profiles_dir) + presets = {} + errors = [] + try: + idx = load_json(os.path.join(profiles_dir, vendor + ".json")) + except (OSError, ValueError) as e: + return presets, [f"unreadable vendor index {vendor}.json: {e}"] + for entry in idx.get("filament_list", []): + rel = f"{vendor}/{entry.get('sub_path', '')}" + path = os.path.join(profiles_dir, vendor, entry.get("sub_path", "")) + try: + data = load_json(path) + except (OSError, ValueError) as e: + errors.append(f"unreadable filament profile {rel}: {e}") + continue + name = data.get("name", entry.get("name")) + presets[name] = { + "name": name, + "file": rel, + "path": path, + "filament_id": data.get("filament_id"), + "inherits": data.get("inherits"), + "instantiation": str(data.get("instantiation", "")).lower() == "true", + "compatible_printers": data.get("compatible_printers") or [], + "filament_vendor": data.get("filament_vendor"), + "filament_type": data.get("filament_type"), + "renamed_from": data.get("renamed_from"), + } + return presets, errors + + +def resolve_filament_id(name, filaments, ofl_filaments, seen=None, in_ofl=False): + """Walk the inherits chain for the effective filament_id, loader-faithfully. + + Mirrors PresetBundle.cpp load_vendor_configs_from_json: a hop resolves in the + vendor's own map first, then falls back to the OFL base-bundle map. OFL's map + was memoized entirely within OFL, so once a chain enters OFL it stays in OFL + (a vendor file sharing an OFL preset's name must not shadow OFL-internal + hops). Additionally, a vendor preset that never resolves an id inside the + vendor is re-tried against the OFL map keyed by its direct parent name. + + Returns (filament_id or None, source, ofl_entry) where source is one of + "own"/"inherited"/"missing"/"dangling"/"cycle" and ofl_entry is the name of + the OFL preset through which a vendor chain entered OFL (None when the id was + declared vendor-side or resolution started inside OFL). + """ + if seen is None: + seen = set() + if name in seen: + return None, "cycle", None + seen.add(name) + entry = None + if in_ofl: + rec = ofl_filaments.get(name) + else: + rec = filaments.get(name) + if rec is None and name in ofl_filaments: + rec, in_ofl, entry = ofl_filaments[name], True, name + if rec is None: + return None, "dangling", None + if rec.get("filament_id"): + return rec["filament_id"], "own" if len(seen) == 1 else "inherited", entry + parent = rec.get("inherits") + if parent: + fid, src, sub_entry = resolve_filament_id(parent, filaments, ofl_filaments, seen, in_ofl) + if fid or in_ofl: + return fid, src, entry if entry is not None else sub_entry + # Vendor chain dead-ended id-less: the loader would have consulted the + # OFL map at each vendor hop's inherits; retry this hop's parent in OFL. + if parent in ofl_filaments: + fid, src, _ = resolve_filament_id(parent, filaments, ofl_filaments, set(), True) + return fid, src, parent + return fid, src, sub_entry + return None, "missing", entry + + +def resolve_filament_field(name, field, filaments, ofl_filaments, seen=None, in_ofl=False): + """Resolve an inheritable list option (filament_vendor / filament_type) with + the same hop semantics as resolve_filament_id: own value, else walk + `inherits` in the vendor map with OFL base-bundle fallback. Values are list + options — the first element counts; "" when the chain never defines one. + """ + if seen is None: + seen = set() + if name in seen: + return "" + seen.add(name) + if in_ofl: + rec = ofl_filaments.get(name) + else: + rec = filaments.get(name) + if rec is None and name in ofl_filaments: + rec, in_ofl = ofl_filaments[name], True + if rec is None: + return "" + value = rec.get(field) + if isinstance(value, str): + value = [value] + if value and value[0]: + return value[0] + parent = rec.get("inherits") + if parent: + found = resolve_filament_field(parent, field, filaments, ofl_filaments, seen, in_ofl) + if found or in_ofl: + return found + if parent in ofl_filaments: + return resolve_filament_field(parent, field, filaments, ofl_filaments, set(), True) + return found + return "" + + +def resolve_triple(name, filaments, ofl_filaments): + """The preset's mint-key triple (filament_vendor, filament_type, filament name).""" + return (resolve_filament_field(name, "filament_vendor", filaments, ofl_filaments), + resolve_filament_field(name, "filament_type", filaments, ofl_filaments), + base_name(name)) + + +def analyze_tree(profiles_dir): + """Load every vendor bundle and derive the full filament_id state. + + Returns a dict with the tree-derived snapshot sections plus the working data + the checks and the assign pass need. All claims are "Vendor/Filament" strings + over INSTANTIATED system filaments, tree-wide including OFL and BBL. + """ + profiles_dir = str(profiles_dir) + vendor_names = list_vendor_names(profiles_dir) + ofl_filaments, ofl_errors = ( + load_vendor_filaments(profiles_dir, OFL) if OFL in vendor_names else ({}, []) + ) + + vendors = {} + read_errors = list(ofl_errors) + for vendor in vendor_names: + if vendor == OFL: + filaments = ofl_filaments + else: + filaments, errs = load_vendor_filaments(profiles_dir, vendor) + read_errors.extend(errs) + for rec in filaments.values(): + eff, src, _entry = resolve_filament_id(rec["name"], filaments, ofl_filaments) + rec["eff_filament_id"] = eff + rec["id_source"] = src + vendors[vendor] = filaments + + # id -> set of "Vendor/Filament" claims over instantiated presets. Every id + # occurring in the tree is a key; ids only ever DECLARED (e.g. on a root + # none of whose descendants instantiate) keep an empty claim list, so that + # the snapshot exactly equals the tree-derived state. + ids = {} + vendor_ids = {} # vendor -> set of ids occurring there (declared or effective) + declared_ids = {} # vendor -> set of ids DECLARED in that vendor's own files + missing_effective = [] # (vendor, name, file) instantiated presets resolving no id + inherited = [] # (vendor, rec, eff, triple) instantiated presets inheriting an OF id + triples = {} # fid -> set of triples of its declarers + declarer_triples = [] # (vendor, rec, fid, triple) per declarer + filament_triples = {} # (vendor, filament_name) -> {triple: [declarers]} + mints = {} # minted id -> triples minting it (declarers + instantiated) + + for vendor, filaments in vendors.items(): + occurring = vendor_ids.setdefault(vendor, set()) + for rec in filaments.values(): + triple = resolve_triple(rec["name"], filaments, ofl_filaments) + rec["triple"] = triple + if rec.get("filament_id") or rec["instantiation"]: + mints.setdefault(generate_filament_id(*triple), set()).add(triple) + if rec.get("filament_id"): + fid = rec["filament_id"] + occurring.add(fid) + declared_ids.setdefault(vendor, set()).add(fid) + ids.setdefault(fid, set()) + declarer_triples.append((vendor, rec, fid, triple)) + triples.setdefault(fid, set()).add(triple) + filament_triples.setdefault( + (vendor, base_name(rec["name"])), {}).setdefault( + triple, []).append(rec["name"]) + if not rec["instantiation"]: + continue + eff = rec.get("eff_filament_id") + if not eff: + missing_effective.append((vendor, rec["name"], rec["file"])) + continue + occurring.add(eff) + ids.setdefault(eff, set()).add(f"{vendor}/{base_name(rec['name'])}") + if not rec.get("filament_id") and OF_ID_RE.match(eff): + inherited.append((vendor, rec, eff, triple)) + + # Cross-bundle triple divergence (check 5, warning only): the same filament + # name declared in several bundles with different triples cannot converge + # on one id until the divergence is fixed. + name_bundles = {} + for (vendor, filament_name), tmap in filament_triples.items(): + name_bundles.setdefault(filament_name, {})[vendor] = frozenset(tmap) + cross_bundle_triples = [ + (filament_name, {v: sorted(ts) for v, ts in per_vendor.items()}) + for filament_name, per_vendor in sorted(name_bundles.items()) + if len(per_vendor) > 1 and len(set(per_vendor.values())) > 1 + ] + + return { + "vendors": vendors, + "read_errors": read_errors, + "ids": {fid: sorted(claims) for fid, claims in ids.items()}, + "vendor_ids": vendor_ids, + "declared_ids": declared_ids, + "missing_effective": sorted(missing_effective), + "inherited": inherited, + "triples": {fid: sorted(list(t) for t in ts) for fid, ts in triples.items()}, + "declarer_triples": declarer_triples, + "filament_triples": filament_triples, + "cross_bundle_triples": cross_bundle_triples, + # id -> the products (triples) minting it, where there is more than one + "collisions": {fid: sorted(ts) for fid, ts in mints.items() if len(ts) > 1}, + } + + +# --------------------------------------------------------------------------- +# Snapshot IO +# --------------------------------------------------------------------------- + +def snapshot_from_analysis(analysis): + """One entry per id, in id order: the product triple it is minted from and + the "Vendor/Filament" claims on it. Requires exactly one declared triple per + id (update_snapshot refuses any other state; check 3 rejects it anyway).""" + ids = {} + for fid, claims in sorted(analysis["ids"].items()): + [(vendor, ftype, filament_name)] = analysis["triples"][fid] + ids[fid] = {"filaments": sorted(claims), "name": filament_name, + "filament_type": ftype, "filament_vendor": vendor} + return {"ids": ids} + + +def snapshot_triple(entry): + return [entry["filament_vendor"], entry["filament_type"], entry["name"]] + + +def load_snapshot(path): + """Return the snapshot dict, or None when the file does not exist.""" + if not os.path.exists(path): + return None + data = load_json(path) + data.setdefault("ids", {}) + return data + + +def write_snapshot(path, obj): + """Deterministic serialization: snapshot_from_analysis order, indent 1, LF, + trailing newline.""" + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(obj, f, indent=1, ensure_ascii=False) + f.write("\n") + + +# --------------------------------------------------------------------------- +# Reserved namespaces +# --------------------------------------------------------------------------- + +def reserved_space_owner(fid): + """(is_reserved, owner_vendor or None) for the frozen id spaces.""" + if fid.startswith("GF"): + return True, None # Bambu AMS/RFID catalog: frozen, no vendor (not even BBL) may declare it + if fid.startswith("QD_"): + return True, None # dissolved Qidi device-protocol space: NO vendor may declare it + if USER_CUSTOM_ID_RE.match(fid) or fid == "null": + return True, None # user-custom space: no system vendor may own it + return False, None + + +def reserved_space_desc(fid, owner): + """Human description of a reserved space for error messages.""" + if owner: + return f"owned by {owner}" + if fid.startswith("GF"): + return "Bambu AMS/RFID catalog; frozen, no preset may declare it" + if fid.startswith("QD_"): + return "Qidi device protocol; composed by the device, never a preset id" + return "reserved for user-custom presets" + + +# --------------------------------------------------------------------------- +# Checks (imported and called tree-wide by orca_extra_profile_check.py) +# --------------------------------------------------------------------------- + +def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, + map_path=BAMBU_MAP_PATH): + """Validate filament_id state across every vendor. Returns the error count. + + 1. Format: every id occurring in the tree (declared or effective) must + match ^OF[0-9A-Za-z]{6}$. No exceptions: not the snapshot, not BBL. + 2. Snapshot equality, both directions: every id in the tree, the filaments + claiming it and the triple its declarers resolve must equal the snapshot + entry exactly (the snapshot diff is the maintainer gate). + 3. Identity: the id is a function of the triple alone, and there is no + second acceptable value. (a) A declared id must equal the one id the + declarer's own triple mints; (b) the id an instantiated preset inherits + must equal the one ITS own triple mints — how it inherits it (a root, a + real filament, an OFL preset) is irrelevant; (c) every instantiated + filament resolves an effective id at all (an id-less one is a hard load + error in C++); (d) no two products mint one id (a base62 collision, + resolved by renaming one of them). + 4. Reserved namespaces (GF*/QD_*/P-hex/"null", all ownerless) must not be + claimed by any vendor. + 5. Triple integrity: (a) every declarer resolves non-empty filament_vendor + and filament_type; (b) declarers of one (bundle, filament) resolve + identical triples; cross-bundle divergence on the same filament name is a + warning only. + 6. Bambu catalog map: resources/printers/bambu_filament_ids.json must parse, + carry source/bambustudio_commit/generated, key only OF-format ids, map + each Bambu id at most once, and for every row whose key the tree claims, + the tree's triple for that id must equal the row's (vendor, type, name). + + Nothing is grandfathered: the snapshot sanctions state, never exceptions. + """ + _utf8_console() + errors = 0 + analysis = analyze_tree(profiles_dir) + snapshot = load_snapshot(snapshot_path) + if snapshot is None: + print_error(f"filament_id snapshot not found at {snapshot_path}; {UPDATE_HINT}") + return 1 + for msg in analysis["read_errors"]: + print_error(msg) + errors += 1 + + snap_ids = snapshot["ids"] + tree_ids = analysis["ids"] + + # -- 1. format ---------------------------------------------------------- + for vendor in sorted(analysis["vendor_ids"]): + for fid in sorted(analysis["vendor_ids"][vendor]): + if OF_ID_RE.match(fid): + continue + print_error( + f'filament_id "{fid}" ({vendor}) is not a minted "OF" id; new ' + f'filament ids must come from "{GENERATE_CMD}"') + errors += 1 + + # -- 2. snapshot equality (both directions) ----------------------------- + tree_triples = analysis["triples"] + for fid in sorted(tree_ids): + entry = snap_ids.get(fid) + if entry is None: + print_error( + f'filament_id "{fid}" is not sanctioned by ' + f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") + errors += 1 + continue + for claim in tree_ids[fid]: + if claim not in entry["filaments"]: + print_error( + f'filament_id "{fid}" claim "{claim}" is not sanctioned by ' + f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") + errors += 1 + # Every tree id has at least one declarer; the snapshot records one + # triple per id, so a divergent declarer is a mismatch in both directions. + sanctioned = snapshot_triple(entry) + for t in tree_triples[fid]: + if t != sanctioned: + print_error( + f'filament_id "{fid}" triple "{"/".join(t)}" is not sanctioned by ' + f'scripts/filament_id_snapshot.json, which records ' + f'"{"/".join(sanctioned)}"; {UPDATE_HINT}') + errors += 1 + for fid in sorted(snap_ids): + if fid not in tree_ids: + print_error( + f'filament_id stability: snapshot id "{fid}" vanished from the tree; ' + f"{UPDATE_HINT}") + errors += 1 + continue + for claim in snap_ids[fid]["filaments"]: + if claim not in tree_ids[fid]: + print_error( + f'filament_id stability: snapshot claim "{claim}" of id "{fid}" ' + f"vanished from the tree; {UPDATE_HINT}") + errors += 1 + + # -- 3. identity: the id is a function of the triple alone --------------- + # One triple, one id: a declaration must carry exactly the mint of its + # triple, and there is no second acceptable value — not a salt, not a + # hand-picked one, not whatever another preset of the product carries. Two + # presets of one product that would be AMS-ambiguous on a printer are fixed + # in the profiles, by making their compatible_printers disjoint or by + # retiring the redundant one. + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if not OF_ID_RE.match(fid) or fid == want: + continue # a non-OF id is check 1's error + print_error( + f'filament_id "{fid}" declared by "{rec["name"]}" ({rec["file"]}) does ' + f'not match the mint of its triple "{"/".join(triple)}": expected ' + f'"{want}"; paste the expected id, or fix the triple and run ' + f'"{GENERATE_CMD} --vendor {vendor}" (preview with --dry-run), then ' + f"--update-snapshot") + errors += 1 + # (3b) An inherited id is held to the same single value, and every preset + # missing it is listed — a variant under a wrong root as much as a preset + # riding another product's root. Nothing is folded into the declarer's + # error: the report names each preset whose id is wrong. + for vendor, rec, eff, triple in sorted( + analysis["inherited"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if eff == want: + continue + print_error( + f'preset "{rec["name"]}" ({rec["file"]}) inherits filament_id "{eff}" but ' + f'its own triple "{"/".join(triple)}" mints "{want}"; ' + f"a preset carries the id of its own product: inherit a preset of the " + f"same filament, or declare its own key") + errors += 1 + ofl_map = analysis["vendors"].get(OFL, {}) + for vendor, name, file in analysis["missing_effective"]: + triple = resolve_triple(name, analysis["vendors"][vendor], ofl_map) + expected = generate_filament_id(*triple) + print_error( + f'instantiated filament "{name}" ({file}) resolves no filament_id anywhere ' + f"in its inherits chain — this is a hard load error in the C++ loader; " + f'run "{GENERATE_CMD}" (expected id for filament ' + f'"{vendor}/{base_name(name)}": "{expected}")') + errors += 1 + # (3d) The mint is injective over the tree's products, or two of them are + # indistinguishable to every device that matches on the id. + for fid, ts in sorted(analysis["collisions"].items()): + print_error( + f'filament_id "{fid}" is the mint of {len(ts)} different products ' + f'({"; ".join("/".join(t) for t in ts)}): a base62 collision; rename one ' + f"of them so their triples differ") + errors += 1 + + # -- 4. reserved namespaces ---------------------------------------------- + for fid in sorted(tree_ids): + is_reserved, owner = reserved_space_owner(fid) + if not is_reserved: + continue + for claim in tree_ids[fid]: + vendor = claim.split("/", 1)[0] + if vendor == owner: + continue + space = reserved_space_desc(fid, owner) + print_error( + f'filament_id "{fid}" of "{claim}" is in a reserved id space ' + f"({space}) and must not be claimed by system presets of other vendors") + errors += 1 + + # -- 5. triple integrity --------------------------------------------------- + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + if triple[0] and triple[1]: + continue + missing = " and ".join( + k for k, v in (("filament_vendor", triple[0]), + ("filament_type", triple[1])) if not v) + print_error( + f'preset "{rec["name"]}" ({rec["file"]}) declares filament_id "{fid}" but ' + f"resolves empty {missing}; the mint key needs both (generic materials " + f'use filament_vendor "Generic")') + errors += 1 + for (vendor, filament_name), tmap in sorted(analysis["filament_triples"].items()): + if len(tmap) < 2: + continue + detail = "; ".join( + f'"{"/".join(t)}" ({", ".join(sorted(names))})' + for t, names in sorted(tmap.items())) + print_error( + f'filament "{vendor}/{filament_name}" declarers resolve divergent triples: ' + f"{detail}; declarers of one filament must agree on " + f"(filament_vendor, filament_type)") + errors += 1 + for filament_name, per_vendor in analysis["cross_bundle_triples"]: + detail = "; ".join( + f'{v}: {", ".join("/".join(t) for t in ts)}' + for v, ts in sorted(per_vendor.items())) + print_warning( + f'filament name "{filament_name}" resolves different triples across bundles ' + f"({detail}); bundles of one product converge on one id only once " + f"their triples agree") + + # -- 6. Bambu catalog map -------------------------------------------------- + try: + bambu_map = load_json(map_path) + if not isinstance(bambu_map, dict): + raise ValueError("top level is not a JSON object") + except (OSError, ValueError) as e: + print_error(f"Bambu catalog map {map_path} does not parse ({e}); {BAMBU_MAP_HINT}") + errors += 1 + else: + for key in ("source", "bambustudio_commit", "generated"): + if not bambu_map.get(key): + print_error(f'Bambu catalog map {map_path} is missing "{key}"; {BAMBU_MAP_HINT}') + errors += 1 + rows = bambu_map.get("filaments") + # An empty or absent section is not a well-formed map: it makes every runtime + # translation silently degrade to identity (BBLPrinterAgent logs nothing for it), + # and it is what a regeneration against the wrong --bambustudio-dir writes. + if not isinstance(rows, dict) or not rows: + print_error(f'Bambu catalog map {map_path} declares no "filaments" rows; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + rows = {} + bambu_id_owners = {} + for fid, row in sorted(rows.items()): + if not OF_ID_RE.match(fid): + print_error(f'Bambu catalog map key "{fid}" is not a minted "OF" id; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + bambu_id = row.get("bambu_id") + if not bambu_id: + # An empty id would map the empty string to a real filament at runtime. + print_error(f'Bambu catalog map row "{fid}" declares no "bambu_id"; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + elif bambu_id in bambu_id_owners: + print_error( + f'Bambu catalog map: Bambu id "{bambu_id}" is mapped by both ' + f'"{bambu_id_owners[bambu_id]}" and "{fid}"; {BAMBU_MAP_HINT}') + errors += 1 + else: + bambu_id_owners[bambu_id] = fid + claimed = tree_triples.get(fid) + if not claimed: + continue # a product BambuStudio ships that the tree does not (yet) + row_triple = [row.get("vendor", ""), row.get("type", ""), row.get("name", "")] + if row_triple not in claimed: + print_error( + f'Bambu catalog map row "{fid}" claims triple "{"/".join(row_triple)}" ' + f'but the tree declares "{"; ".join("/".join(t) for t in claimed)}" for ' + f"that id; {BAMBU_MAP_HINT}") + errors += 1 + + return errors + + +# --------------------------------------------------------------------------- +# --update-snapshot +# --------------------------------------------------------------------------- + +def update_snapshot(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, dry_run=False): + """Regenerate the snapshot from the tree. + + Refuses to sanction a tree it could not read whole, a reserved-namespace id + (or a claim on one) and an id declared under more than one triple: none of + them can ever pass --check, so writing them into the snapshot would only + hide the mistake until CI. + Idempotent: a second run over an unchanged tree changes nothing. Returns 0 + on success. + """ + analysis = analyze_tree(profiles_dir) + # A tree that could not be read whole cannot be sanctioned: the snapshot + # would silently drop the unreadable bundle's ids and claims, and the diff + # would read as a deliberate removal. + refusals = len(analysis["read_errors"]) + for msg in analysis["read_errors"]: + print_error(msg) + + for vendor in sorted(analysis["vendor_ids"]): + for fid in sorted(analysis["vendor_ids"][vendor]): + is_reserved, owner = reserved_space_owner(fid) + if is_reserved and vendor != owner: + print_error( + f'refusing to sanction filament_id "{fid}" ({vendor}): reserved id ' + f"space, {reserved_space_desc(fid, owner)}") + refusals += 1 + for fid, ts in sorted(analysis["triples"].items()): + if len(ts) > 1: + print_error( + f'refusing to sanction filament_id "{fid}": declared under {len(ts)} ' + f'triples ({"; ".join("/".join(t) for t in ts)}); one id names one ' + f"product (check 3)") + refusals += 1 + if refusals: + return 1 + + new_snap = snapshot_from_analysis(analysis) + old_snap = load_snapshot(snapshot_path) + old_ids = old_snap["ids"] if old_snap else {} + + # Diff summary. + added_ids = sorted(set(new_snap["ids"]) - set(old_ids)) + removed_ids = sorted(set(old_ids) - set(new_snap["ids"])) + added_claims = sum( + len(set(entry["filaments"]) - set(old_ids.get(fid, {}).get("filaments", []))) + for fid, entry in new_snap["ids"].items()) + removed_claims = sum( + len(set(entry["filaments"]) - set(new_snap["ids"].get(fid, {}).get("filaments", []))) + for fid, entry in old_ids.items()) + changed = new_snap != (old_snap or {"ids": {}}) + + if changed and not dry_run: + write_snapshot(snapshot_path, new_snap) + + print_info(f"snapshot ids : {len(new_snap['ids'])} (+{len(added_ids)} / -{len(removed_ids)})") + print_info(f"claims added : {added_claims}") + print_info(f"claims removed : {removed_claims}") + if changed and dry_run: + print_success(f"dry run: {snapshot_path} would be rewritten; nothing written") + elif changed: + print_success(f"snapshot written to {snapshot_path}") + else: + print_success("snapshot already up to date; nothing changed") + return 0 + + +# --------------------------------------------------------------------------- +# Byte-preserving profile edits +# --------------------------------------------------------------------------- +# Binary IO throughout: a profile keeps its original line endings (LF or CRLF), +# its BOM and its exact formatting apart from the one line being touched. + +def insert_key_line(text, key, value, before=(), after=()): + """Insert a `"key": value` line into a preset that lacks one. + + Placed just before the first `before` anchor the file has (matching the + canonical key order), else just after the first `after` anchor, reusing that + anchor line's indentation and line ending. Returns (text, insertions made). + """ + def line(m): + return (f'{m.group(1)}"{key}": {json.dumps(value, ensure_ascii=False)},' + f'{m.group(2)}') + + for anchors, at_start in ((before, True), (after, False)): + for anchor in anchors: + m = re.search(r'^([ \t]*)"' + re.escape(anchor) + r'"[ \t]*:.*?(\r?\n)', + text, re.MULTILINE) + if m: + cut = m.start() if at_start else m.end() + return text[:cut] + line(m) + text[cut:], 1 + return text, 0 + + +def replace_key_value(text, key, new_value, old_value=None): + """Swap the JSON string VALUE on the `"key"` line, byte-preserving the rest. + + When old_value is given the line must carry exactly that value, so a stale + rewrite fails loudly instead of clobbering an unexpected id. + Returns (text, replacements made). + """ + value = (re.escape(json.dumps(old_value, ensure_ascii=False)) + if old_value is not None else _JSON_STR) + pattern = re.compile( + r'(^[ \t]*"' + re.escape(key) + r'"[ \t]*:[ \t]*)' + value, re.MULTILINE) + return pattern.subn( + lambda m: m.group(1) + json.dumps(new_value, ensure_ascii=False), text, count=1) + + +def delete_key_line(text, key, old_value=None): + """Delete the `"key"` line, byte-preserving the rest. + + Handles both the canonical layout (trailing comma) and a last-property + layout (comma on the preceding line, consumed so no dangling comma is left). + Returns (text, deletions made). + """ + value = (re.escape(json.dumps(old_value, ensure_ascii=False)) + if old_value is not None else _JSON_STR) + member = r'"' + re.escape(key) + r'"[ \t]*:[ \t]*' + value + m = re.search(r'^[ \t]*' + member + r'[ \t]*,[ \t]*\r?\n', text, re.MULTILINE) + if m: + return text[:m.start()] + text[m.end():], 1 + m = re.search(r',[ \t]*\r?\n[ \t]*' + member + r'[ \t]*(?=\r?\n)', text) + if m: + return text[:m.start()] + text[m.end():], 1 + return text, 0 + + +def insert_filament_id(text, new_id): + """Insert a `"filament_id"` line before `instantiation`, else after `name`.""" + return insert_key_line(text, "filament_id", new_id, + before=("instantiation",), after=("name",)) + + +def replace_filament_id_value(text, old_id, new_id): + """Swap the value on the `"filament_id"` line; it must carry old_id.""" + return replace_key_value(text, "filament_id", new_id, old_value=old_id) + + +def insert_setting_id(text, new_id): + """Insert a `"setting_id"` line before `filament_id`, else `instantiation`. + + Falls back to `name` — the one key every preset has — so the anchor does not + depend on whether filament_id has been written yet: a dry run, which does not + write it, must reach the same verdict as the real run that does. + """ + return insert_key_line(text, "setting_id", new_id, + before=("filament_id", "instantiation"), after=("name",)) + + +def _edit_profile(path, edit, dry_run=False, what="edit"): + """Apply `edit(text) -> (text, n)` to the profile at path, byte-preserving. + + The result is re-parsed and returned so the caller can verify the outcome — + in a dry run too, where only the write itself is skipped. Raises when the + edit found no anchor or produced invalid JSON. + """ + with open(path, "rb") as f: + raw = f.read() + bom = raw.startswith(b"\xef\xbb\xbf") + text = raw.decode("utf-8-sig") + text, n = edit(text) + if n == 0: + raise RuntimeError(f"could not apply {what} to {path}") + try: + data = json.loads(text) # fail loudly if the edit broke the JSON + except ValueError as e: + raise RuntimeError(f"{what} broke the JSON in {path}: {e}") from None + if not dry_run: + with open(path, "wb") as f: + f.write((b"\xef\xbb\xbf" if bom else b"") + text.encode("utf-8")) + return data + + +def write_filament_id(path, new_id, dry_run=False): + """Insert new_id into the profile at path, byte-preserving everything else.""" + _edit_profile(path, lambda text: insert_filament_id(text, new_id), + dry_run, "filament_id insert") + + +def rewrite_filament_id(path, old_id, new_id, dry_run=False): + """Replace the filament_id value old_id -> new_id; re-parses to verify.""" + data = _edit_profile(path, lambda text: replace_filament_id_value(text, old_id, new_id), + dry_run, "filament_id rewrite") + if data.get("filament_id") != new_id: + raise RuntimeError(f'rewrite of filament_id "{old_id}" -> "{new_id}" in {path} ' + f"did not take effect") + + +# --------------------------------------------------------------------------- +# --generate +# --------------------------------------------------------------------------- + +def _incomplete_triple(triple): + """The name(s) of the empty mint-key fields, or "" when both are present.""" + return " and ".join(k for k, v in (("filament_vendor", triple[0]), + ("filament_type", triple[1])) if not v) + + +def generate_filament_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, + changed_paths=None): + """Make every filament carry the id its own triple mints. + + One rule, applied to declarations and to id-less filaments alike: + * a declared id that is not the one its own triple mints — a wrong OF id, + or a foreign one such as a Bambu "GF*" arriving with an upstream sync — + is replaced in place; + * an instantiated filament that resolves no id at all gets one inserted + into its root(s): the id-less presets of the SAME filament its members + inherit, or the member itself (a parent of another filament cannot carry + this filament's id — check 3). + A declaration is left alone exactly when it already equals the one id its + triple mints (check 3). Two products minting one id (check 3d) are reported + and left unwritten: nothing salts past a collision, a rename resolves it. + + `vendors` restricts what is WRITTEN; the id is a function of the triple + alone, so a narrowed run writes exactly what a full one would, and --check + reports whatever it was not allowed to touch. `changed_paths`, when a set is + passed, collects the files that changed. A file whose layout offers no + anchor for the edit is reported and counted as an error, so one odd profile + cannot abort the pass over all the others. Never reads or touches the + snapshot — run --update-snapshot afterwards and review the diff. Returns + (files_changed, errors). + """ + _utf8_console() + analysis = analyze_tree(profiles_dir) + errors = 0 + for msg in analysis["read_errors"]: + print_error(msg) + errors += 1 + wanted = None + if vendors is not None: + wanted = set(vendors) + # A vendor directory without a bundle index simply has no filaments to + # process; only a name that is no directory at all is an error. + unknown = sorted(wanted - set(list_profile_dirs(profiles_dir))) + if unknown: + for v in unknown: + print_error(f'unknown vendor "{v}" in {profiles_dir}') + return 0, errors + len(unknown) + + colliding = set() # triples no run may write an id for + for fid, ts in sorted(analysis["collisions"].items()): + print_error( + f'cannot write filament_id "{fid}": it is the mint of {len(ts)} different ' + f'products ({"; ".join("/".join(t) for t in ts)}), a base62 collision; ' + f"rename one of them so their triples differ") + errors += 1 + colliding.update(ts) + + verb = "would " if dry_run else "" + files_changed = 0 + reminted = 0 + inserted = 0 + + # 1. Declarations that are not the mint of their own triple. + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if (fid == want or (wanted is not None and vendor not in wanted) + or triple in colliding): + continue + missing = _incomplete_triple(triple) + if missing: + print_error( + f'cannot re-mint "{rec["file"]}" (filament_id "{fid}"): resolves empty ' + f'{missing}; the mint key needs both (generic materials use ' + f'filament_vendor "Generic")') + errors += 1 + continue + try: + rewrite_filament_id(rec["path"], fid, want, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + reminted += 1 + if changed_paths is not None: + # Index sub_paths are "/"-joined even on Windows, where the + # setting_id pass reaches the same file through os.walk: normalize + # or one file touched by both passes counts as two. + changed_paths.add(os.path.normpath(rec["path"])) + print_info(f'{verb}rewrite {rec["file"]}: "{fid}" -> "{want}" ' + f'(triple "{"/".join(triple)}")') + + # 2. Instantiated filaments that resolve no id at all, grouped by filament. + filaments = {} # (vendor, filament name) -> [rec] + for vendor, name, _file in analysis["missing_effective"]: + if wanted is not None and vendor not in wanted: + continue + rec = analysis["vendors"][vendor][name] + if rec["id_source"] in ("cycle", "dangling"): + print_error(f'cannot mint for "{vendor}/{name}": broken inherits chain ' + f'({rec["id_source"]})') + errors += 1 + continue + filaments.setdefault((vendor, base_name(name)), []).append(rec) + + ofl_map = analysis["vendors"].get(OFL, {}) + for (vendor, filament_name), members in sorted(filaments.items()): + vendor_map = analysis["vendors"][vendor] + # Root preset(s): the direct vendor-side parents of the members (id-less + # by construction) that belong to the same filament, or the member itself. + roots = {} + for rec in members: + parent = rec.get("inherits") + root = vendor_map.get(parent) if parent else None + if (root is None or root.get("filament_id") + or base_name(root["name"]) != filament_name): + root = rec # root-less member carries the id itself + roots[root["name"]] = root + fields = {(resolve_filament_field(n, "filament_vendor", vendor_map, ofl_map), + resolve_filament_field(n, "filament_type", vendor_map, ofl_map)) + for n in roots} + if len(fields) > 1: + print_error( + f'cannot mint for filament "{vendor}/{filament_name}": its roots resolve ' + f"divergent (filament_vendor, filament_type) pairs {sorted(fields)}; " + f"align the fields first") + errors += 1 + continue + triple = (*next(iter(fields)), filament_name) + if triple in colliding: + continue # reported above + missing = _incomplete_triple(triple) + if missing: + print_error( + f'cannot mint for filament "{vendor}/{filament_name}": it resolves empty ' + f'{missing}; the mint key needs both (generic materials use ' + f'filament_vendor "Generic")') + errors += 1 + continue + new_id = generate_filament_id(*triple) + for name in sorted(roots): + root = roots[name] + try: + write_filament_id(root["path"], new_id, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + inserted += 1 + if changed_paths is not None: + changed_paths.add(os.path.normpath(root["path"])) + print_info(f'{verb}insert filament "{vendor}/{filament_name}": filament_id ' + f'"{new_id}" -> {root["file"]}') + + print_info(f"filament_ids inserted : {inserted}") + print_info(f"filament_ids re-minted : {reminted}") + return files_changed, errors + + +def generate_setting_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, + changed_paths=None): + """Make every preset carry the setting_id its identity mints. + + One walk over filament/, process/ and machine/ of every vendor bundle, and + one composite edit per file: drop the misspelled "settings_id" key (the app + never reads it), strip setting_id from base profiles (only instantiated + presets carry one), and set generate_preset_setting_id(vendor, type, name) on + instantiated presets — except BBL's, which keep their authoritative "G*" + cloud ids. `changed_paths`, when a set is passed, collects the files that + changed. Returns (files_changed, errors). + """ + _utf8_console() + profiles_dir = str(profiles_dir) + errors = 0 + names = list_profile_dirs(profiles_dir) + if vendors is not None: + wanted = set(vendors) + unknown = sorted(wanted - set(names)) + if unknown: + for v in unknown: + print_error(f'unknown vendor "{v}" in {profiles_dir}') + return 0, len(unknown) + names = [v for v in names if v in wanted] + for v in sorted(wanted & RESERVED_VENDORS): + print_info(f'{v} keeps its authoritative "G*" setting_ids; only its base ' + f"declarations are stripped") + + verb = "would " if dry_run else "" + files_changed = 0 + counts = {"typos": 0, "stripped": 0, "assigned": 0} + for vendor in names: + for path, type_name in iter_profile_files(os.path.join(profiles_dir, vendor)): + try: + with open(path, "rb") as f: + data = json.loads(f.read().decode("utf-8-sig")) + if not isinstance(data, dict): + raise ValueError("top level is not a JSON object") + except (OSError, ValueError) as e: + print_error(f"unreadable profile {path}: {e}") + errors += 1 + continue + + sid = data.get("setting_id") + # Strictly "true", exactly as orca_extra_profile_check.py tests it: + # a preset the validator calls a base profile must not be given an id + # here, or the two would fight over it forever. + instantiated = data.get("instantiation") == "true" + edits = [] # (counter key, description, edit function) + if "settings_id" in data: + edits.append(("typos", 'drop the misspelled "settings_id"', + lambda text: delete_key_line(text, "settings_id"))) + typo = data["settings_id"] + if (vendor in RESERVED_VENDORS and instantiated and sid is None + and isinstance(typo, str) and typo): + # A reserved vendor's ids are authoritative, so there is no + # formula to fall back on: correct the key and keep the + # value, or the drop would leave an instantiated preset with + # no setting_id and nothing able to give it one. + edits.append(("assigned", 'restore its value as "setting_id"', + lambda text, new=typo: insert_setting_id(text, new))) + if not instantiated: + if sid is not None: + edits.append(("stripped", "strip the base profile's setting_id", + lambda text, old=sid: delete_key_line( + text, "setting_id", old))) + elif vendor not in RESERVED_VENDORS: + name = data.get("name") + if not name: + # Report and carry on: an edit already queued for this file + # (a misspelled key) is still worth applying. + print_error(f'instantiated preset has no "name": {path}') + errors += 1 + else: + new_id = generate_preset_setting_id(vendor, type_name, name) + if sid is None: + edits.append(("assigned", "insert the setting_id", + lambda text, new=new_id: insert_setting_id(text, new))) + elif sid != new_id: + edits.append(("assigned", "replace the setting_id", + lambda text, new=new_id, old=sid: replace_key_value( + text, "setting_id", new, old))) + if not edits: + continue + + def apply(text, _edits=edits, _path=path): + for _key, what, edit in _edits: + text, n = edit(text) + if n == 0: + raise RuntimeError(f"could not {what} in {_path}") + return text, len(_edits) + + try: + _edit_profile(path, apply, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + if changed_paths is not None: + changed_paths.add(os.path.normpath(path)) + for key, _what, _edit in edits: + counts[key] += 1 + rel = os.path.relpath(path, profiles_dir).replace(os.sep, "/") + print_info(f"{verb}update {rel}: " + f"{', '.join(what for _key, what, _edit in edits)}") + + print_info(f'misspelled "settings_id" dropped : {counts["typos"]}') + print_info(f'base setting_ids stripped : {counts["stripped"]}') + print_info(f'setting_ids assigned : {counts["assigned"]}') + return files_changed, errors + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +EXAMPLES = """\ +examples: + orca_id_tool.py --generate + give every profile the id its identity mints, in every vendor bundle + orca_id_tool.py --dry-run + preview exactly that; writes nothing + orca_id_tool.py --generate --setting-id + setting_id only (filament, process and machine presets) + orca_id_tool.py --generate --filament-id --vendor Creality --vendor Elegoo + filament_id only, and only in those two bundles + orca_id_tool.py --check + validate filament_id state against the snapshot (the filament_id half + of scripts/orca_extra_profile_check.py, which is what CI runs) + orca_id_tool.py --update-snapshot + re-record the sanctioned filament_id state after a --generate run + +a maintenance round: + --dry-run -> --generate -> --update-snapshot -> --check -> commit the diff +""" + + +def build_parser(): + parser = argparse.ArgumentParser( + prog="orca_id_tool.py", allow_abbrev=False, + formatter_class=argparse.RawDescriptionHelpFormatter, + description="Assign and validate the deterministic ids of OrcaSlicer system\n" + "profiles: the per-product filament_id and the per-preset setting_id.\n" + "\n" + "Both are pure functions of the profile's own identity, so this tool\n" + "never invents an id: it writes the one the rules already imply, and\n" + "leaves a conforming tree alone.", + epilog=EXAMPLES) + modes = parser.add_argument_group("modes (pick one; no mode prints this help)") + modes.add_argument("--generate", action="store_true", + help="write the id every profile should carry: filament_id from " + "each filament's (filament_vendor, filament_type, name) " + "triple, setting_id from each preset's (vendor, type, name). " + "Idempotent and byte-preserving") + modes.add_argument("--check", action="store_true", + help="validate filament_id state against " + "scripts/filament_id_snapshot.json; exit nonzero on errors") + modes.add_argument("--update-snapshot", action="store_true", + help="re-record the sanctioned filament_id state in " + "scripts/filament_id_snapshot.json; commit the diff for " + "maintainer review") + narrow = parser.add_argument_group("narrowing --generate") + narrow.add_argument("--filament-id", action="store_true", + help="write filament_id only, skipping setting_id") + narrow.add_argument("--setting-id", action="store_true", + help="write setting_id only, skipping filament_id") + narrow.add_argument("--vendor", metavar="VENDOR", action="append", default=[], + help="write only in this vendor bundle; repeatable. The id is a " + "function of the triple alone, so a narrowed run writes " + "exactly what a full one would; --check reports whatever " + "it left outside") + parser.add_argument("--dry-run", "--dryrun", dest="dry_run", action="store_true", + help="report what would change and write nothing; with no mode of " + "its own it previews --generate") + parser.add_argument("--profiles", default=PROFILES_DIR, + help="profiles directory (default: resources/profiles)") + parser.add_argument("--snapshot", default=None, metavar="PATH", + help="the sanctioned filament_id state of that tree (default: " + "scripts/filament_id_snapshot.json, which describes " + "resources/profiles and no other tree)") + return parser + + +def main(argv=None): + _utf8_console() + argv = sys.argv[1:] if argv is None else list(argv) + parser = build_parser() + if not argv: + parser.print_help() + return 0 + args = parser.parse_args(argv) + + modes = [flag for flag, on in (("--generate", args.generate), + ("--check", args.check), + ("--update-snapshot", args.update_snapshot)) if on] + if len(modes) > 1: + parser.error(f"{' and '.join(modes)} cannot be combined; pick one mode") + if args.filament_id and args.setting_id: + parser.error("--filament-id and --setting-id each exclude the other; " + "pass neither to write both") + narrowing = [flag for flag, on in (("--filament-id", args.filament_id), + ("--setting-id", args.setting_id), + ("--vendor", bool(args.vendor))) if on] + if not modes: + if args.dry_run: + mode = "--generate" # --dry-run previews the writing mode + elif narrowing: + parser.error(f"{', '.join(narrowing)} narrows --generate; " + f"add --generate (or --dry-run to preview it)") + else: + parser.print_help() + return 0 + else: + mode = modes[0] + if narrowing and mode != "--generate": + parser.error(f"{', '.join(narrowing)} applies to --generate, not {mode}") + + snapshot_path = args.snapshot or SNAPSHOT_PATH + if (args.snapshot is None and mode in ("--check", "--update-snapshot") + and os.path.abspath(args.profiles) != os.path.abspath(PROFILES_DIR)): + # The repo snapshot is the sanctioned state of resources/profiles alone: + # checking another tree against it is meaningless, and re-recording one + # into it would overwrite the tracked file with a foreign tree's state. + parser.error(f"{mode} reads and writes the sanctioned state of the tree it is " + f"given, so --profiles needs --snapshot PATH for that tree too") + + if mode == "--check": + errors = check_filament_ids(args.profiles, snapshot_path) + if errors: + print_error(f"filament_id check: {errors} error(s)") + return 1 + print_success("filament_id check: no errors") + return 0 + + if mode == "--update-snapshot": + return update_snapshot(args.profiles, snapshot_path, dry_run=args.dry_run) + + vendors = sorted(set(args.vendor)) or None + if vendors: + unknown = sorted(set(vendors) - set(list_profile_dirs(args.profiles))) + if unknown: + for v in unknown: + print_error(f'unknown vendor "{v}" in {args.profiles}') + return 1 + + # Both by default. filament_id runs first so its keys are in place before the + # setting_id pass reads the files back. + do_filament = args.filament_id or not args.setting_id + do_setting = args.setting_id or not args.filament_id + changed = set() # one file the two passes both touch is still one file + filament_files = errors = 0 + if do_filament: + filament_files, e = generate_filament_ids( + args.profiles, vendors, args.dry_run, changed) + errors += e + if do_setting: + _n, e = generate_setting_ids(args.profiles, vendors, args.dry_run, changed) + errors += e + + summary = (f"dry run: {len(changed)} file(s) would change; nothing written" + if args.dry_run else f"{len(changed)} file(s) changed") + if errors: + print_error(f"{summary}; {errors} error(s)") + else: + print_success(summary) + if filament_files and not args.dry_run: + # A filament_id write may or may not move the sanctioned state (an id + # repaired back to the value the snapshot already records does not), so + # regenerate and let the diff — empty or not — say. + print_warning('now run "python scripts/orca_id_tool.py --update-snapshot" ' + "and commit any resulting diff for maintainer review") + return 1 if errors else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/test_build_win.ps1 b/scripts/test_build_win.ps1 new file mode 100644 index 0000000000..65dec8ffa1 --- /dev/null +++ b/scripts/test_build_win.ps1 @@ -0,0 +1,969 @@ +<# +.SYNOPSIS + Tests build_win.bat's option handling and the commands it generates. + +.DESCRIPTION + Cases run the script with --dry-run, so nothing is configured, built or + deleted and the suite finishes in seconds. Each case asserts on the exit + code and on the command lines the script echoes. + + Adding a case means adding one row to $cases. A bare string starts a new + group. Defaults: ExpectExit is 0 and --dry-run is appended, so a row only + states what is unusual about it. + + Name what the case proves, in words + Args arguments, as an array + ExpectExit expected exit code (default 0) + DryRun append --dry-run (default $true) + First regex the first output line must match + Env environment for this case only + Contains literal strings the output must have + NotContains literal strings it must not have + Match regexes; each must match at least one output line + NotMatch regexes; none may match any output line + NotExists paths that must not exist after the case runs + DateStampedZip require a bundle date from during this case's invocation + +.PARAMETER Name + Run only the cases whose name matches this regex. Headings with no + matching case are not printed, and a pattern that matches nothing is a + failure rather than an empty pass. + +.EXAMPLE + powershell -File scripts/test_build_win.ps1 + +.EXAMPLE + powershell -File scripts/test_build_win.ps1 -Name solution +#> +[CmdletBinding()] +param( + [string] $Script, + [string] $Name +) + +$ErrorActionPreference = 'Stop' + +if (-not $Script) { + $here = $PSScriptRoot + if (-not $here) { $here = Split-Path -Parent $MyInvocation.MyCommand.Path } + $Script = Join-Path (Split-Path -Parent $here) 'build_win.bat' +} +if (-not (Test-Path $Script)) { throw "build_win.bat not found at $Script" } + +# cmd resumes a batch file by byte offset after `call :label`, and with LF +# endings that offset lands wrong and the label lookup fails. .gitattributes +# pins CRLF; this catches a checkout or an editor that did not honour it. +if ((Get-Content -Raw $Script) -match "(?<!`r)`n") { + throw "$Script has LF line endings; cmd needs CRLF to resume after call :label" +} +$Script = (Resolve-Path $Script).Path + +# Read the long options out of the script itself, so this cannot go stale when +# an option is added. Field order is: add_arg <var> <type> <short> <long>. +$longFlags = @( + Select-String -Path $Script -Pattern '^call :add_arg \S+ \S+ \S+ (\S+) ' | + ForEach-Object { '--' + $_.Matches[0].Groups[1].Value } +) +if ($longFlags.Count -lt 20) { throw "only found $($longFlags.Count) options in $Script; the parser above is wrong" } + +# A winget that always fails, so the prerequisite failure path runs without +# touching the machine. It has to be an .exe: a .bat invoked without `call` +# transfers control and never comes back, which would end the script instead. +# where.exe returns 1 when its patterns match nothing and never prompts. +$fixtures = Join-Path ([IO.Path]::GetTempPath()) 'build_win_test_fixtures' +New-Item -ItemType Directory -Force -Path $fixtures | Out-Null +Copy-Item "$env:SystemRoot\System32\where.exe" (Join-Path $fixtures 'winget.exe') -Force +$stubPath = "$fixtures;C:\Windows\system32;C:\Windows" + +# Stand-in ninjas that only report a version, so the 1.12 boundary in the +# progress format can be exercised on a machine whose real ninja is newer. +# A dry run skips the dev shell, so PATH here is what the script sees. +$ninjaPaths = @{} +foreach ($v in @{ old = '1.11.1'; new = '1.12.0' }.GetEnumerator()) { + $d = Join-Path $fixtures "ninja-$($v.Key)" + New-Item -ItemType Directory -Force -Path $d | Out-Null + Set-Content -Path (Join-Path $d 'ninja.bat') -Encoding ascii -Value @('@echo off', "echo $($v.Value)") + $ninjaPaths[$v.Key] = "$d;$env:PATH" +} + +# A clang-cl earlier on PATH than the Visual Studio one, which is what the +# compiler used to resolve to. Nothing runs it; the script only locates it. +$clangDir = Join-Path $fixtures 'clang' +New-Item -ItemType Directory -Force -Path $clangDir | Out-Null +Copy-Item "$env:SystemRoot\System32\where.exe" (Join-Path $clangDir 'clang-cl.exe') -Force +$clangOnPath = "$clangDir;$env:PATH" + +# A ccache that only has to exist. Nothing runs it; the script only locates it. +$cacheDir = Join-Path $fixtures 'cache' +New-Item -ItemType Directory -Force -Path $cacheDir | Out-Null +Copy-Item "$env:SystemRoot\System32\where.exe" (Join-Path $cacheDir 'ccache.exe') -Force +$ccacheOnPath = "$cacheDir;$env:PATH" + +# ProgramFiles(x86) is where the script looks for vswhere, so an empty one +# stands in for a machine whose Visual Studio has no clang toolset. +$noVs = Join-Path $fixtures 'no-vs' +New-Item -ItemType Directory -Force -Path $noVs | Out-Null + +# A build directory that already holds a classic solution, for the case where +# what is on disk disagrees with what the generator would write. +$slnDir = Join-Path $fixtures 'sln' +New-Item -ItemType Directory -Force -Path $slnDir | Out-Null +Set-Content -Path (Join-Path $slnDir 'OrcaSlicer.sln') -Value '' -Encoding ascii + +$cases = @( + 'argument handling' + @{ Name = 'no arguments prints help'; Args = @(); DryRun = $false + Contains = @('Usage: build_win.bat [options]', '--clang-cl') } + @{ Name = "--help lists all $($longFlags.Count) options the script defines"; Args = @('--help'); DryRun = $false + Contains = $longFlags } + @{ Name = 'help is grouped and shows usage, examples and environment'; Args = @('--help'); DryRun = $false + Contains = @('Usage: build_win.bat [options]', 'Actions:', 'Build configuration:', 'Toolchain:', + 'How much gets rebuilt:', 'Paths and extra arguments:', 'Diagnostics:', + 'Examples:', 'Environment:') } + @{ Name = 'the environment section shows what to set'; Args = @('--help'); DryRun = $false + Contains = @('ORCA_DEPS_CMAKE_ARGS', 'ORCA_SLICER_CMAKE_ARGS', 'ORCA_UPDATER_SIG_KEY', 'NINJA_STATUS', + 'set ORCA_SLICER_CMAKE_ARGS=-DSLIC3R_BUILD_SANDBOXES=ON', '(PowerShell)', 'debugscript') } + @{ Name = 'section headers do not widen the flag column'; Args = @('--help'); DryRun = $false + Match = @('^ -d, --deps +Download') } + # Windows Terminal opens at 120 columns and wraps at 120, so 119 is the + # limit. Anyone still on the old conhost gets 80 and will see wrapping. + @{ Name = 'every help line fits a 120 column console'; Args = @('--help'); DryRun = $false + NotMatch = @('^.{120,}$') } + @{ Name = 'an unknown long option is rejected'; Args = @('--nonsense'); ExpectExit = 1 + Contains = @('Failed to find arg') } + @{ Name = 'an unknown short option is rejected'; Args = @('-Z'); ExpectExit = 1 + Contains = @('Failed to find arg') } + @{ Name = 'a bare argument is rejected'; Args = @('deps'); ExpectExit = 1 + Contains = @('Unknown argument') } + @{ Name = 'an unknown architecture is rejected'; Args = @('-d', '--arch', 'sparc'); ExpectExit = 1 + Contains = @('Unknown architecture') } + @{ Name = 'a string option without a value is rejected'; Args = @('-d', '--arch'); ExpectExit = 1 + Contains = @('requires a value') } + @{ Name = 'short options can be bundled'; Args = @('-dx') + Contains = @('-G "Ninja Multi-Config"', '--target deps') } + + 'generator and compiler selection' + @{ Name = 'deps default to the Visual Studio generator'; Args = @('-d') + Contains = @('-G "Visual Studio', '-A x64', '--target deps') + NotContains = @('Ninja', 'clang-cl') } + @{ Name = '-x selects Ninja without changing compiler'; Args = @('-d', '-x') + Contains = @('-G "Ninja Multi-Config"') + NotContains = @('clang-cl', '-A x64') } + @{ Name = '-l -x builds with clang-cl under Ninja'; Args = @('-d', '-l', '-x') + Contains = @('-G "Ninja Multi-Config"') + Match = @('-DCMAKE_C_COMPILER="[^"]+/clang-cl\.exe"', '-DCMAKE_CXX_COMPILER="[^"]+/clang-cl\.exe"') } + # PATH order used to decide the compiler. VsDevCmd appends the Visual + # Studio LLVM directory to the end of PATH, so a standalone LLVM already + # there was resolved instead, and an old one failed the compiler check. + @{ Name = 'the compiler is resolved from Visual Studio, not PATH'; Args = @('-s', '-l', '-x') + Env = @{ PATH = $clangOnPath } + Match = @('^Compiler: .*/VC/Tools/Llvm/[^/]+/bin/clang-cl\.exe$') } + @{ Name = 'msvc names no compiler, having resolved none'; Args = @('-s') + NotContains = @('Compiler: ') } + @{ Name = '-l without -x names none either, the toolset picks it'; Args = @('-s', '-l') + NotContains = @('Compiler: ') } + # An empty ProgramFiles(x86) puts vswhere out of reach, which is a machine + # whose Visual Studio has no clang toolset. + @{ Name = 'without a Visual Studio clang the one on PATH is used and named'; Args = @('-s', '-l', '-x') + Env = @{ 'ProgramFiles(x86)' = $noVs; PATH = $clangOnPath } + Contains = @('Visual Studio has no clang-cl') + Match = @('^Compiler: .*/clang/clang-cl\.exe$') } + @{ Name = 'no clang-cl anywhere stops before configuring'; Args = @('-s', '-l', '-x'); ExpectExit = 1 + Env = @{ 'ProgramFiles(x86)' = $noVs; PATH = 'C:\Windows\system32;C:\Windows' } + Contains = @('No clang-cl found', '--install-vs ide -l') + NotContains = @('cmake -B') } + # Only a configure passes the compiler to CMake, so an action that does + # not configure resolves none, and cannot start needing one installed. + @{ Name = 'packing resolves no compiler'; Args = @('-p', '-l', '-x') + Contains = @('Packing the dependencies') + NotContains = @('Compiler: ') } + @{ Name = '--no-configure resolves none either'; Args = @('-s', '-l', '-x', '--no-configure') + Contains = @('cmake --build "build-clang"') + NotContains = @('Compiler: ') } + @{ Name = '-l alone uses the ClangCL toolset on the VS generator'; Args = @('-d', '-l') + Contains = @('-G "Visual Studio', '-T ClangCL') + NotContains = @('-DCMAKE_C_COMPILER') } + # --msvc and --msbuild name the defaults, so a caller can be explicit and a + # contradictory pair can be caught rather than silently resolved. + @{ Name = '--msvc is the compiler default spelled out'; Args = @('-d', '--msvc') + Contains = @('-G "Visual Studio', '-A x64') + NotContains = @('clang-cl') } + @{ Name = '--msbuild is the generator default spelled out'; Args = @('-d', '--msbuild') + Contains = @('-G "Visual Studio') + NotContains = @('Ninja') } + @{ Name = '--msvc with -x gives Ninja driving cl'; Args = @('-d', '--msvc', '-x') + Contains = @('-G "Ninja Multi-Config"') + NotContains = @('clang-cl') } + @{ Name = '--msbuild with -l gives the VS generator and the ClangCL toolset'; Args = @('-d', '--msbuild', '-l') + Contains = @('-G "Visual Studio', '-T ClangCL') } + # A developer with a standalone LLVM points at it, and the path is passed + # with forward slashes so CMake cannot read a backslash as an escape. + @{ Name = '--clang-path names the compiler, quoted for its spaces'; Args = @('-d', '-x', '--clang-path', 'C:\Program Files\LLVM\bin\clang-cl.exe') + Contains = @('-DCMAKE_C_COMPILER="C:/Program Files/LLVM/bin/clang-cl.exe"', + '-DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang-cl.exe"') } + @{ Name = '--clang-path beats the Visual Studio clang'; Args = @('-s', '-x', '--clang-path', 'C:\Program Files\LLVM\bin\clang-cl.exe') + Contains = @('Compiler: C:/Program Files/LLVM/bin/clang-cl.exe') } + @{ Name = '--clang-path is a clang request on its own'; Args = @('-d', '-x', '--clang-path', 'C:\Program Files\LLVM\bin\clang-cl.exe') + Contains = @('deps/build-clang') } + @{ Name = '--clang-path needs Ninja to take effect'; Args = @('-d', '--clang-path', 'C:\Program Files\LLVM\bin\clang-cl.exe'); ExpectExit = 1 + Contains = @('needs the Ninja generator') } + # `exist` is true for a directory too, and a directory would reach CMake + # as the compiler. + @{ Name = '--clang-path must name the exe, not its folder'; Args = @('-d', '-x', '--clang-path', 'C:\Program Files\LLVM'); ExpectExit = 1 + Contains = @('is a directory') } + @{ Name = 'a clang-cl that is not there is caught early'; Args = @('-d', '-x', '--clang-path', 'C:\nope\clang-cl.exe'); ExpectExit = 1 + Contains = @('No clang-cl at') + NotContains = @('cmake -S deps') } + @{ Name = '--clang-path contradicting --msvc is rejected'; Args = @('-d', '-x', '--msvc', '--clang-path', 'C:\Program Files\LLVM\bin\clang-cl.exe'); ExpectExit = 1 + Contains = @('select different compilers') } + @{ Name = '--clang-cl and --msvc together are rejected'; Args = @('-d', '-l', '--msvc'); ExpectExit = 1 + Contains = @('select different compilers') } + @{ Name = '--ninja and --msbuild together are rejected'; Args = @('-d', '-x', '--msbuild'); ExpectExit = 1 + Contains = @('select different generators') } + # One option with a value, driven by a table, rather than a flag per + # release. Adding a release should not need a new flag. + @{ Name = '--vs 2019 pins that release and skips autodetect'; Args = @('-d', '--vs', '2019') + Contains = @('-G "Visual Studio 16 2019"') + NotContains = @('Detecting Visual Studio') } + @{ Name = '--vs 2022 pins that release'; Args = @('-d', '--vs', '2022') + Contains = @('-G "Visual Studio 17 2022"') } + @{ Name = '--vs 2026 pins that release'; Args = @('-d', '--vs', '2026') + Contains = @('-G "Visual Studio 18 2026"') } + @{ Name = 'an unknown release is rejected and the known ones listed'; Args = @('-d', '--vs', '2015'); ExpectExit = 1 + Contains = @('Unknown Visual Studio release', '2019, 2022, 2026') } + @{ Name = '--vs and --ninja together are rejected'; Args = @('-d', '--vs', '2022', '-x'); ExpectExit = 1 + Contains = @('select different generators') } + @{ Name = 'without --vs the release is autodetected'; Args = @('-d') + Contains = @('Detecting Visual Studio') } + + 'architecture' + @{ Name = 'x64 is the default'; Args = @('-d') + Contains = @('Configuration: Release, x64') + NotContains = @('build-arm64') } + @{ Name = 'arm64 sets the generator platform and deps tree'; Args = @('-d', '--arch', 'arm64') + Contains = @('-A ARM64', 'deps/build-arm64') } + @{ Name = 'the architecture is matched case-insensitively'; Args = @('-d', '--arch', 'ARM64') + Contains = @('-A ARM64', 'deps/build-arm64') } + @{ Name = 'arm64 under Ninja has no -A but keeps the arm64 tree'; Args = @('-d', '--arch', 'arm64', '-x', '-l') + Contains = @('deps/build-clang-arm64') + Match = @('-DCMAKE_C_COMPILER="[^"]+/clang-cl\.exe"') + NotContains = @('-A ') } + + 'build configurations' + # One option with a value, driven by a table, so Release is named rather + # than being whatever is left when no flag is passed. + @{ Name = 'release is the default'; Args = @('-s') + Contains = @('-DCMAKE_BUILD_TYPE=Release', 'cmake -B "build" ') } + @{ Name = '--config release is the default spelled out'; Args = @('-s', '--config', 'release') + Contains = @('-DCMAKE_BUILD_TYPE=Release', 'cmake -B "build" ') } + @{ Name = '--config debug builds into build-dbg'; Args = @('-s', '--config', 'debug') + Contains = @('-DCMAKE_BUILD_TYPE=Debug', 'cmake -B "build-dbg" ') } + @{ Name = '--config relwithdebinfo builds into build-dbginfo'; Args = @('-s', '--config', 'relwithdebinfo') + Contains = @('-DCMAKE_BUILD_TYPE=RelWithDebInfo', 'cmake -B "build-dbginfo" ') } + @{ Name = '--config minsizerel builds into build-minsize'; Args = @('-s', '--config', 'minsizerel') + Contains = @('-DCMAKE_BUILD_TYPE=MinSizeRel', 'cmake -B "build-minsize" ') } + # Batch variable names are case-insensitive, so the table lookup is too. + @{ Name = 'the configuration name is matched case-insensitively'; Args = @('-s', '--config', 'RelWithDebInfo') + Contains = @('-DCMAKE_BUILD_TYPE=RelWithDebInfo') } + @{ Name = 'an unknown configuration is rejected and the known ones listed'; Args = @('-s', '--config', 'bogus'); ExpectExit = 1 + Contains = @('Unknown configuration', 'release, debug, relwithdebinfo, minsizerel') } + # Release, RelWithDebInfo and MinSizeRel all link the /MD dependencies, so + # one tree serves all three. Debug is /MDd and cannot share. + @{ Name = 'minsizerel builds against the release deps'; Args = @('-d', '-s', '--config', 'minsizerel') + Contains = @('cmake -S deps -B "deps/build"', 'cmake -B "build-minsize" ') + NotContains = @('deps/build-minsize') } + @{ Name = 'relwithdebinfo builds against them too'; Args = @('-d', '-s', '-l', '--config', 'relwithdebinfo') + Contains = @('cmake -S deps -B "deps/build-clang"', 'cmake -B "build-dbginfo-clang" ') + NotContains = @('deps/build-dbginfo') } + @{ Name = 'debug keeps a dependency tree of its own'; Args = @('-d', '--config', 'debug') + Contains = @('cmake -S deps -B "deps/build-dbg"') } + # The build tree and the deps tree now have different names, so the + # derivation from the binary directory name cannot work and it is named. + @{ Name = 'a shared deps tree is named outright'; Args = @('-s', '-l', '--config', 'relwithdebinfo') + Match = @('-DDEP_BUILD_DIR="[A-Za-z]:\\.*\\deps\\build-clang"') } + @{ Name = 'configuration and arch combine into build-dbg-arm64'; Args = @('-s', '--config', 'debug', '--arch', 'arm64') + Contains = @('cmake -B "build-dbg-arm64" ') } + + 'what gets built' + @{ Name = 'the deps target defaults to deps'; Args = @('-d') + Contains = @('--target deps') } + @{ Name = '-t overrides the deps target'; Args = @('-d', '-t', 'dep_Boost') + Contains = @('--target dep_Boost') } + @{ Name = 'unit tests are off unless asked for'; Args = @('-s') + Contains = @('-DBUILD_TESTS=OFF') } + @{ Name = '--tests turns the unit tests on'; Args = @('-s', '--tests') + Contains = @('-DBUILD_TESTS=ON') } + @{ Name = '-a enables ASAN for the slicer'; Args = @('-s', '-a') + Contains = @('-DSLIC3R_ASAN=ON') } + @{ Name = '--no-pch turns the precompiled header off'; Args = @('-s', '--no-pch') + Contains = @('-DSLIC3R_PCH=OFF') } + @{ Name = '--no-pch says so in the banner'; Args = @('-s', '--no-pch') + Contains = @('Precompiled header: off') } + @{ Name = 'the precompiled header is on unless asked'; Args = @('-s') + NotContains = @('SLIC3R_PCH') } + @{ Name = '--no-pch works without a cache'; Args = @('-s', '--no-pch') + NotContains = @('COMPILER_LAUNCHER') } + @{ Name = 'the slicer build runs gettext'; Args = @('-s') + Contains = @('run_gettext.bat') } + # tools\7z.exe needs a 7z.dll beside it, which the repo does not carry, + # so the pack falls back to the bsdtar Windows ships. Either is correct; + # what matters is that one is chosen and handed the right names. + @{ Name = '-p packs the deps tree with whichever archiver is usable'; Args = @('-d', '-p') + Match = @('^\+ .*(7z\.exe a|tar\.exe -a -c -f) OrcaSlicer_dep_win-\S+\.zip OrcaSlicer_dep$') } + # The bundle is only good for what built it, so it carries the same three + # axes as the tree. Release x64 on cl keeps the historical plain name. + @{ Name = 'the bundle name carries compiler and deps flavour'; Args = @('-p', '-l', '--config', 'debug', '--arch', 'arm64') + Contains = @('OrcaSlicer_dep_win-ARM64-clang-dbg_') } + @{ Name = 'a relwithdebinfo pack is the release bundle'; Args = @('-p', '--config', 'relwithdebinfo') + Contains = @('OrcaSlicer_dep_win-x64_') + NotContains = @('-dbg', 'dbginfo') } + @{ Name = 'a plain release bundle keeps its old name'; Args = @('-p') + Contains = @('OrcaSlicer_dep_win-x64_') + NotContains = @('-clang', '-Release') } + @{ Name = 'the bundle is stamped with today, not a shuffled date'; Args = @('-p') + DateStampedZip = $true } + # powershell.exe is not in System32 itself, so a trimmed PATH used to + # leave the stamp empty and the bundle named OrcaSlicer_dep_win-x64_.zip. + @{ Name = 'the bundle is stamped even with a bare PATH'; Args = @('-p') + Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } + DateStampedZip = $true } + @{ Name = '-p packs without rebuilding'; Args = @('-p') + Match = @('^\+ .*(7z\.exe a|tar\.exe -a -c -f) ') + NotContains = @('cmake -S deps') } + @{ Name = 'deps and slicer build in one invocation'; Args = @('-d', '-s', '-x', '-l') + Contains = @('cmake -S deps', 'cmake -B "build-clang" ') } + + 'the compiler cache' + @{ Name = '--cache needs clang-cl and Ninja'; Args = @('-s', '--cache', 'ccache'); ExpectExit = 1 + Contains = @('needs clang-cl and Ninja') } + # cl.exe is out of scope, since ccache refuses every compile under /Zi. + @{ Name = '--cache under Ninja still needs clang-cl'; Args = @('-s', '-x', '--cache', 'ccache'); ExpectExit = 1 + Contains = @('needs clang-cl and Ninja') } + @{ Name = 'an unknown --cache value is rejected'; Args = @('-s', '-x', '--cache', 'nope'); ExpectExit = 1 + Contains = @('Expected ccache, sccache or off') } + # A bare PATH, since the machine running the tests may have sccache installed. + @{ Name = 'a --cache tool that is not there is caught early'; Args = @('-s', '-l', '-x', '--cache', 'sccache'); ExpectExit = 1 + Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } + Contains = @('is not on PATH') } + @{ Name = '--cache takes any casing'; Args = @('-s', '-l', '-x', '--cache', 'CCACHE') + Env = @{ PATH = $ccacheOnPath } + Contains = @('ccache.exe') } + @{ Name = '--cache off asks for no launcher'; Args = @('-s', '-x', '--cache', 'off') + NotContains = @('COMPILER_LAUNCHER') } + @{ Name = 'no --cache asks for no launcher'; Args = @('-s', '-x') + NotContains = @('COMPILER_LAUNCHER') } + @{ Name = '--cache turns the precompiled header off'; Args = @('-s', '-l', '-x', '--cache', 'ccache') + Env = @{ PATH = $ccacheOnPath } + Contains = @('-DSLIC3R_PCH=OFF', 'COMPILER_LAUNCHER') } + # Without it the objects name the build directory and only that tree can use them. + @{ Name = '--cache asks for relative debug paths'; Args = @('-s', '-l', '-x', '--cache', 'ccache') + Env = @{ PATH = $ccacheOnPath } + Contains = @('-DSLIC3R_RELATIVE_DEBUG_PATHS=ON') } + @{ Name = 'no --cache leaves the debug paths alone'; Args = @('-s', '-l', '-x') + NotContains = @('SLIC3R_RELATIVE_DEBUG_PATHS') } + # The resolved path, not the bare name, so PATH cannot change it later. + @{ Name = '--cache names the resolved path in the banner'; Args = @('-s', '-l', '-x', '--cache', 'ccache') + Env = @{ PATH = $ccacheOnPath } + Match = @('^Compiler cache: .*/ccache\.exe$') } + @{ Name = '--cache reaches the dependency configure too'; Args = @('-d', '-l', '-x', '--cache', 'ccache') + Env = @{ PATH = $ccacheOnPath } + Contains = @('-DCMAKE_C_COMPILER_LAUNCHER=') } + # Nothing records a launcher without a configure, so the tool is not needed. + # Reaching the cmake check on a bare PATH is what proves it was skipped. + @{ Name = '--no-configure asks for no cache tool'; Args = @('-s', '-l', '-x', '--no-configure', '--cache', 'ccache'); ExpectExit = 1 + Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } + Contains = @('CMake was not found') + NotContains = @('is not on PATH') } + + 'the developer loop' + @{ Name = '--slicer-target builds one target'; Args = @('-s', '--slicer-target', 'libslic3r') + Contains = @('--config Release --target libslic3r') } + @{ Name = '--no-configure skips the slicer configure'; Args = @('-s', '--no-configure') + Contains = @('cmake --build "build"') + NotContains = @('cmake -B "build" ') } + @{ Name = '--no-configure skips the deps configure'; Args = @('-d', '--no-configure') + Contains = @('cmake --build "deps/build"') + NotContains = @('cmake -S deps') } + @{ Name = '--no-gettext skips the translation step'; Args = @('-s', '--no-gettext') + Contains = @('cmake --build "build"') + NotContains = @('run_gettext') } + # Installing copies the whole tree again for a layout only releases need, + # so it is asked for rather than assumed. + @{ Name = 'nothing is installed unless asked'; Args = @('-s') + Contains = @('run_gettext') + NotContains = @('--target install') } + @{ Name = '-i adds the install step'; Args = @('-s', '-i') + Contains = @('--target install') } + # install(TARGETS OrcaSlicer) has no OPTIONAL, so this would fail partway + # through a build instead of before it. + @{ Name = 'installing a tree with no executable is refused'; Args = @('-s', '-i', '--slicer-target', 'glad'); ExpectExit = 1 + Contains = @('--install needs the executable') + NotContains = @('cmake --build') } + # Without -s there is no install step, so there is nothing to refuse. + @{ Name = 'the same flags without a slicer build are left alone'; Args = @('-d', '-i', '--slicer-target', 'glad') + Contains = @('cmake -S deps') + NotContains = @('--install needs the executable') } + @{ Name = 'naming the executable target is allowed'; Args = @('-s', '-i', '--slicer-target', 'OrcaSlicer') + Contains = @('--target install') } + # Ninja counts compilers, so -j goes on the command line. MSBuild's -j + # counts projects while /MP still runs one cl per core inside each, so the + # cap goes to CL_MPCount in the environment instead. A dry run can only + # show that no -j is passed. + @{ Name = '-j on Ninja passes -j to cmake'; Args = @('-s', '-x', '-j', '4') + Contains = @('Parallel jobs: 4', '--config Release -j 4') } + @{ Name = '-j on Ninja reaches the deps build'; Args = @('-d', '-x', '-j', '2') + Contains = @('--target deps -j 2') } + @{ Name = '-j on MSBuild does not pass -j, which would count projects'; Args = @('-s', '-j', '4') + Contains = @('Parallel jobs: 4') + NotContains = @('-j 4') } + @{ Name = '-j on MSBuild leaves the deps build without -j too'; Args = @('-d', '-j', '2') + Contains = @('--target deps') + NotContains = @('-j 2') } + @{ Name = 'no -j means no job limit'; Args = @('-s') + NotContains = @('parallel jobs', '-j ') } + @{ Name = 'a non-numeric -j is rejected'; Args = @('-s', '-j', 'abc'); ExpectExit = 1 + Contains = @('Invalid --jobs value') } + @{ Name = 'a zero -j is rejected'; Args = @('-s', '-j', '0'); ExpectExit = 1 + Contains = @('Invalid --jobs value') } + @{ Name = 'the loop options combine into a single build command'; Args = @('-s', '-x', '--no-configure', '--no-gettext', '--slicer-target', 'libslic3r_tests', '-j', '8') + Contains = @('--target libslic3r_tests -j 8') + NotContains = @('cmake -B "build" ', 'run_gettext', '--target install') } + + 'one tree per configuration, compiler and architecture' + # CMake resets its cache and carries on when the compiler changes under an + # existing tree, leaving stamps from the old toolchain. Give each its own. + @{ Name = 'clang builds land in their own trees'; Args = @('-d', '-s', '-l') + Contains = @('cmake -S deps -B "deps/build-clang"', 'cmake -B "build-clang" ') } + @{ Name = 'MSVC keeps the historical plain names'; Args = @('-d', '-s', '--msvc') + Contains = @('cmake -S deps -B "deps/build"', 'cmake -B "build" ') + NotContains = @('build-clang') } + @{ Name = 'configuration, compiler and arch all name the tree'; Args = @('-d', '-s', '-l', '--config', 'debug', '--arch', 'arm64') + Contains = @('cmake -S deps -B "deps/build-dbg-clang-arm64"', 'cmake -B "build-dbg-clang-arm64" ') } + + 'locating the dependency tree' + # Without --deps-dir nothing is passed, so CMakeLists derives the path from + # the binary directory name as it always has. + @{ Name = 'the deps path is left to CMake by default'; Args = @('-s') + NotContains = @('-DDEP_BUILD_DIR') } + @{ Name = '--deps-dir tells the slicer where the deps are'; Args = @('-s', '--deps-dir', 'D:\orca-deps') + Contains = @('-DDEP_BUILD_DIR="D:\orca-deps"') } + @{ Name = '--deps-dir also redirects the deps build'; Args = @('-d', '--deps-dir', 'D:\orca-deps') + Contains = @('cmake -S deps -B "D:\orca-deps"', 'cmake --build "D:\orca-deps"') + NotContains = @('deps/build') } + # Paths are quoted throughout, so one with spaces survives the whole run. + @{ Name = 'a deps path with spaces survives'; Args = @('-d', '-s', '--deps-dir', 'C:\Program Files\deps') + Contains = @('-B "C:\Program Files\deps"', '-DDEP_BUILD_DIR="C:\Program Files\deps"') } + @{ Name = '--deps-dir also redirects the pack'; Args = @('-p', '--deps-dir', 'D:\orca-deps') + Contains = @('cd /d "D:\orca-deps"') } + @{ Name = 'pack uses an absolute default path'; Args = @('-p') + Match = @('^\+ cd /d "[A-Za-z]:\\.*\\deps\\build"') } + # CMakeLists derives DEP_BUILD_DIR from the build directory's name, so + # pointing the build elsewhere has to name the deps tree outright. + @{ Name = '--build-dir moves the slicer build'; Args = @('-s', '-l', '-x', '--build-dir', 'out/build/x64-clang') + Contains = @('cmake -B "out/build/x64-clang" ') } + @{ Name = '--build-dir still names the deps tree'; Args = @('-s', '-l', '-x', '--build-dir', 'out/build/x64-clang') + Match = @('-DDEP_BUILD_DIR="[A-Za-z]:\\.*\\deps\\build-clang"') } + @{ Name = '--deps-dir wins over the derived tree'; Args = @('-s', '--build-dir', 'out/build/x64-clang', '--deps-dir', 'D:\orca-deps') + Contains = @('-DDEP_BUILD_DIR="D:\orca-deps"') } + # A value ending in a backslash escapes the closing quote it is spliced + # into, so cmake would receive D:\tree" and swallow the next argument. + @{ Name = 'a trailing backslash is trimmed off a path'; Args = @('-s', '--build-dir', 'D:\tree\') + Contains = @('cmake -B "D:\tree" ') } + @{ Name = 'a build directory with spaces survives'; Args = @('-s', '--build-dir', 'C:\Program Files\tree') + Contains = @('cmake -B "C:\Program Files\tree" ') } + @{ Name = 'the default build names no deps tree'; Args = @('-s') + NotContains = @('DEP_BUILD_DIR') } + + 'saying what mode and toolchain are in play' + @{ Name = 'a dry run announces itself before the first command'; Args = @('-u') + First = '^Dry run: printing commands without running them\.$' } + @{ Name = 'the announcement leads even a full build'; Args = @('-ds') + First = '^Dry run: ' } + # Autodetect only runs for the Visual Studio generator, and only when no + # release was pinned, so it needs a Visual Studio on the machine. + @{ Name = 'the detected Visual Studio names its release year'; Args = @('-s') + Match = @('^Detected Visual Studio \d+ \(20\d\d\)$') } + @{ Name = 'pinning a release skips detection'; Args = @('-s', '--vs', '2022') + NotContains = @('Detected Visual Studio') } + + 'an action has to be asked for' + # Neither can happen without building the slicer, so they stand alone the + # way --install-vs does. + @{ Name = '--run-tests is an action on its own'; Args = @('--run-tests') + Contains = @('-DBUILD_TESTS=ON', 'ctest --test-dir') + NotContains = @('Nothing to do') } + @{ Name = '--tests is too'; Args = @('--tests') + Contains = @('-DBUILD_TESTS=ON') + NotContains = @('Nothing to do', 'ctest --test-dir') } + # Naming an action means that action, not a fuller build. + @{ Name = 'they do not add a slicer build to one already asked for'; Args = @('-d', '--tests') + Contains = @('cmake -S deps') + NotContains = @('cmake -B "build"') } + @{ Name = 'shaping options alone are not an action'; Args = @('--config', 'debug'); ExpectExit = 1 + Contains = @('Nothing to do.') + NotContains = @('Build completed') } + @{ Name = '-j alone is not an action either'; Args = @('-j', '4'); ExpectExit = 1 + Contains = @('Nothing to do.') } + @{ Name = '--install-vs counts as an action on its own'; Args = @('--install-vs', 'ide') + NotContains = @('Nothing to do.') } + + 'diagnostics' + @{ Name = '-v asks cmake for the command lines'; Args = @('-s', '-v') + Contains = @('--verbose') } + @{ Name = '-v applies to the deps build too'; Args = @('-d', '-v') + Contains = @('--target deps', '--verbose') } + # ninja's own default shows neither a percentage nor a time. %w and %W + # need ninja 1.12, and an unknown placeholder is fatal, so the format is + # chosen from the version rather than hardcoded. + @{ Name = '-v names the ninja progress format'; Args = @('-s', '-x', '-v') + Match = @('^Ninja progress format: \[.*%p.*\]') } + @{ Name = 'a ninja older than 1.12 gets the format it understands'; Args = @('-s', '-x', '-v') + Env = @{ PATH = $ninjaPaths['old'] } + Contains = @('Ninja progress format: [%s/%t %p :: %e]') } + @{ Name = 'ninja 1.12 gets elapsed and remaining'; Args = @('-s', '-x', '-v') + Env = @{ PATH = $ninjaPaths['new'] } + Contains = @('Ninja progress format: [%f/%t %p :: %w / %W]') } + @{ Name = 'a format you set yourself is left alone'; Args = @('-s', '-x', '-v') + Env = @{ NINJA_STATUS = '[mine] ' } + Contains = @('Ninja progress format: [mine]') } + @{ Name = 'MSBuild builds mention no ninja format'; Args = @('-s', '-v') + NotContains = @('Ninja progress format') } + @{ Name = 'builds are quiet without -v'; Args = @('-s') + NotContains = @('--verbose') } + + 'installing prerequisites' + # -u installs CMake, Perl and Git. Visual Studio is a separate ask, because + # most people already have it, and which one you want is a real choice. + @{ Name = '-u alone installs no Visual Studio'; Args = @('-u') + Contains = @('Kitware.CMake', 'StrawberryPerl', 'Git.Git') + NotContains = @('Microsoft.VisualStudio') } + # Asking for Visual Studio is asking to install prerequisites, so it does + # not also need -u; requiring both meant --install-vs alone did nothing. + @{ Name = '--install-vs works without -u'; Args = @('--install-vs', 'ide') + Contains = @('id=Microsoft.VisualStudio.Community', 'Kitware.CMake', 'Git.Git') } + @{ Name = '--install-vs buildtools asks for the build tools'; Args = @('-u', '--install-vs', 'buildtools') + Contains = @('id=Microsoft.VisualStudio.BuildTools') + NotContains = @('VC.CoreIde') } + @{ Name = '--install-vs ide asks for Community with the IDE component'; Args = @('-u', '--install-vs', 'ide') + Contains = @('id=Microsoft.VisualStudio.Community', 'VC.CoreIde') } + @{ Name = 'an unknown edition is rejected and the known ones listed'; Args = @('-u', '--install-vs', 'bogus'); ExpectExit = 1 + Contains = @('Unknown Visual Studio edition', 'buildtools, ide') } + @{ Name = '--vs picks which release to install'; Args = @('-u', '--vs', '2022', '--install-vs', 'buildtools') + Contains = @('id=Microsoft.VisualStudio.2022.BuildTools') } + @{ Name = '-l adds the clang compiler and the MSBuild toolset'; Args = @('-u', '--install-vs', 'buildtools', '-l') + Contains = @('VC.Llvm.Clang ', 'VC.Llvm.ClangToolset') } + # CMake 4.x breaks Boost.Context on ARM64, so the installer pins 3.31 there + # and leaves x64 on the current release. + @{ Name = 'CMake is pinned to 3.31 when installing for arm64'; Args = @('-u', '--arch', 'arm64') + Contains = @('Kitware.CMake --version 3.31.8') } + @{ Name = 'CMake is not pinned for x64'; Args = @('-u', '--arch', 'x64') + Contains = @('Kitware.CMake') + NotContains = @('--version') } + @{ Name = 'installing for arm64 asks for the ARM64 toolset'; Args = @('--install-vs', 'buildtools', '--arch', 'arm64') + Contains = @('Microsoft.VisualStudio.Component.VC.Tools.ARM64') } + @{ Name = 'an x64 install asks only for the x64 toolset'; Args = @('--install-vs', 'buildtools') + Contains = @('Microsoft.VisualStudio.Component.VC.Tools.x86.x64') + NotContains = @('VC.Tools.ARM64') } + + 'dry run changes nothing' + # clean_tree resolves the path before removing it, so the line echoed is + # absolute. It is the last thing printed before a directory goes. + @{ Name = '-c echoes the deps rmdir rather than running it'; Args = @('-d', '-c') + Match = @('^\+ rmdir /S /Q "[A-Za-z]:\\.*\\deps\\build"$') } + @{ Name = '-c removes the tree --deps-dir named, not the default one'; Args = @('-d', '-c', '--deps-dir', 'D:\orca-deps') + Match = @('^\+ rmdir /S /Q "D:\\orca-deps"$') + NotContains = @('\deps\build') } + @{ Name = '-c echoes the slicer rmdir rather than running it'; Args = @('-s', '-c') + Match = @('^\+ rmdir /S /Q "[A-Za-z]:\\.*\\build"$') } + @{ Name = 'cleaning a slicer build leaves the deps tree alone'; Args = @('-s', '-c') + NotMatch = @('rmdir.*\\deps\\') } + @{ Name = 'cleaning both builds removes both trees'; Args = @('-d', '-s', '-c') + Match = @('^\+ rmdir /S /Q "[A-Za-z]:\\[^"]*\\deps\\build"$', + '^\+ rmdir /S /Q "[A-Za-z]:\\(?!.*\\deps\\)[^"]*\\build"$') } + + # Nothing below should be reachable. They are a floor under a bug that + # hands clean_tree a path far shorter than it looks. + @{ Name = 'a configuration whose lookup comes back empty is rejected'; Args = @('-d', '-c', '--config', 'release '); ExpectExit = 1 + Contains = @('Unknown configuration') + NotContains = @('rmdir') } + @{ Name = 'a drive root is refused'; Args = @('-d', '-c', '--deps-dir', 'D:\'); ExpectExit = 1 + Contains = @('that is a drive root') + NotContains = @('+ rmdir') } + @{ Name = 'the repository itself is refused'; Args = @('-d', '-c', '--deps-dir', '.'); ExpectExit = 1 + Contains = @('that is the repository itself') + NotContains = @('+ rmdir') } + @{ Name = '-k echoes the taskkills rather than running them'; Args = @('-k') + Contains = @('+ taskkill /F /IM MSBuild.exe', '+ taskkill /F /IM cl.exe') } + @{ Name = '-k also covers the Ninja toolchain'; Args = @('-k') + Contains = @('+ taskkill /F /IM ninja.exe', '+ taskkill /F /IM clang-cl.exe') } + @{ Name = '-k announces the dry run like every other action'; Args = @('-k') + First = '^Dry run: ' } + @{ Name = '-u echoes the winget installs rather than running them'; Args = @('-u') + Contains = @('+ winget install', 'Kitware.CMake') + NotContains = @('cmake -S deps') } + # Not a dry run: winget is a stub that fails, so nothing is installed. + @{ Name = 'a failed install is reported, not claimed as success'; Args = @('-u') + DryRun = $false; ExpectExit = 1 + Env = @{ PATH = $stubPath } + Contains = @('Failed to install:', 'CMake', 'Perl', 'Git') + NotContains = @('Installed the prerequisites') } + # The reason belongs inside the frame. Every command this path ran had + # already succeeded, so naming the last one would point at the wrong thing. + @{ Name = 'a failed install names the reason, not the last command'; Args = @('-u') + DryRun = $false; ExpectExit = 1 + Env = @{ PATH = $stubPath } + Contains = @('####', 'Failed to install:') + NotContains = @('Failed: winget') } + @{ Name = 'a dry run does not claim the install happened'; Args = @('-u') + Contains = @('Dry run: nothing was installed.') + NotContains = @('are in place') } + @{ Name = '-u with a build defers that build, not a fuller one'; Args = @('-u', '-d') + Contains = @('build_win.bat -d') + NotContains = @('build_win.bat -ds') } + @{ Name = '-u on its own suggests the whole build'; Args = @('-u') + Contains = @('build_win.bat -ds') } + @{ Name = 'a dry run only echoes, it never configures'; Args = @('-d') + Contains = @('+ cmake') + NotContains = @('CMake Error', 'Configuring done') } + + 'extra configure arguments' + # --deps-args and --slicer-args are declared "rawstring", so a value that + # looks like an option is allowed through. Plain string options still + # reject one, since there it almost always means a forgotten value. + @{ Name = '--deps-args reaches the deps configure'; Args = @('-d', '--deps-args', 'FOO') + Contains = @('-DCMAKE_BUILD_TYPE=Release FOO') } + @{ Name = '--slicer-args reaches the slicer configure'; Args = @('-s', '--slicer-args', 'BAZ') + Contains = @('BAZ') } + @{ Name = '--deps-args accepts a value that starts with a dash'; Args = @('-d', '--deps-args', '-DFOO') + Contains = @('-DFOO') } + @{ Name = 'a plain string option still rejects a dash-leading value'; Args = @('-d', '--deps-target', '--tests'); ExpectExit = 1 + Contains = @('looks like another option') } + # cmd splits arguments on "=" as well as spaces, so an unquoted -D reaches + # the script as two arguments however it was invoked. + @{ Name = 'an unquoted value containing = is rejected'; Args = @('-d', '--deps-args', 'FOO=BAR'); ExpectExit = 1 + Contains = @('Unknown argument') } + # The environment overrides exist for that reason; nothing tokenises them. + @{ Name = 'ORCA_DEPS_CMAKE_ARGS reaches the deps configure'; Args = @('-d') + Env = @{ ORCA_DEPS_CMAKE_ARGS = '-DFOO=BAR -DBAZ=QUX' } + Contains = @('-DFOO=BAR -DBAZ=QUX') } + @{ Name = 'ORCA_SLICER_CMAKE_ARGS reaches the slicer configure'; Args = @('-s') + Env = @{ ORCA_SLICER_CMAKE_ARGS = '-DWANTED=1' } + Contains = @('-DWANTED=1') } + @{ Name = 'the deps override does not leak into the slicer configure'; Args = @('-s') + Env = @{ ORCA_DEPS_CMAKE_ARGS = '-DDEPSONLY=1' } + NotContains = @('-DDEPSONLY=1') } + @{ Name = 'the help points at the environment for a spaced argument'; Args = @('--help'); DryRun = $false + Contains = @('Neither form supports a value containing an ampersand') } + @{ Name = 'the help lists the environment overrides'; Args = @('--help'); DryRun = $false + Contains = @('Environment:', 'ORCA_DEPS_CMAKE_ARGS', 'ORCA_SLICER_CMAKE_ARGS') } + + 'running the unit tests' + @{ Name = '--tests builds them without running them'; Args = @('-s', '--tests') + Contains = @('-DBUILD_TESTS=ON') + NotContains = @('ctest') } + @{ Name = '--run-tests builds and runs them'; Args = @('-s', '--run-tests') + Contains = @('-DBUILD_TESTS=ON', 'ctest --test-dir "build/tests" -C Release --output-on-failure') } + @{ Name = '--run-tests follows the build type and directory'; Args = @('-s', '--run-tests', '--config', 'debug') + Contains = @('ctest --test-dir "build-dbg/tests" -C Debug') } + @{ Name = 'no tests are run by default'; Args = @('-s') + NotContains = @('ctest') } + + 'failures are reported' + @{ Name = 'a missing cmake is caught and exits non-zero'; Args = @('-d'); ExpectExit = 1 + Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } + Contains = @('CMake was not found') } + @{ Name = 'packing does not need cmake, only an archiver'; Args = @('-p') + Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } + NotContains = @('CMake was not found') } + # Not a dry run: a cd to a missing drive is a real failure inside a + # parenthesised block, which is where exit /b silently loses its code. + # Without the jump to :die this exits 0 and a failed build reads as a + # successful one. + @{ Name = 'a failure inside a build block reaches the caller'; Args = @('-p', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + Contains = @('Exit code 1.', '####') + NotContains = @('Build completed', 'Try') } + # The retry follows the stage that failed. Offering it for the whole run + # would clean a dependency tree that was not at fault. + @{ Name = 'a failure names a retry scoped to the stage that failed'; Args = @('-d', '-s', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + Contains = @('build_win.bat -d --deps-dir "Z:\nope" -c') + NotContains = @('build_win.bat -ds') } + # CMake's own failure here is hundreds of lines about package resolution. + @{ Name = 'a missing dependency tree is named, not left to CMake'; Args = @('-s', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + Contains = @('Dependencies not found at', 'Build them with build_win.bat -d --deps-dir "Z:\nope"') + NotContains = @('cmake -B', 'Try') } + # Every other suggestion carries the flags that reproduce the run; a bare + # -d would point at the MSVC tree after a clang build. + @{ Name = 'the missing-deps hint names this toolchain'; Args = @('-s', '-l', '-x', '--deps-dir', 'deps/not-built') + DryRun = $false; ExpectExit = 1 + Contains = @('Build them with build_win.bat -d -l -x --deps-dir "deps/not-built"') + NotExists = @('deps/not-built') } + # A dry run configures nothing, so it must not depend on which trees happen + # to exist on the machine running the suite. + @{ Name = 'a dry run does not check for the deps tree'; Args = @('-s', '--deps-dir', 'Z:\nope') + Contains = @('cmake -B "build"') + NotContains = @('Dependencies not found') } + # -d is about to build them, so there is nothing to report yet. + @{ Name = 'building the deps in the same run skips the check'; Args = @('-d', '-s', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + NotContains = @('Dependencies not found') } + # A configure fails before any compiler runs, so -v has nothing to show. + @{ Name = 'a configure failure is not offered a verbose rebuild'; Args = @('-d', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + Contains = @('-c discard that tree') + NotContains = @('-v show the failing') } + # A bare --no-configure succeeds on a machine that already has a usable + # build tree, so name one that cannot exist instead. + @{ Name = 'a build failure is'; Args = @('-s', '--no-configure', '--build-dir', 'deps/no-such-tree') + DryRun = $false; ExpectExit = 1 + Contains = @('-v show the failing') + NotExists = @('deps/no-such-tree') } + # --build-dir names the slicer tree, which a deps failure has nothing to do + # with. --deps-dir stays, because that is the tree that failed. + @{ Name = 'a deps retry leaves out the slicer tree'; Args = @('-d', '-s', '--deps-dir', 'Z:\nope', '--build-dir', 'D:\b') + DryRun = $false; ExpectExit = 1 + Contains = @('build_win.bat -d --deps-dir "Z:\nope" -c') + NotContains = @('--build-dir') } + @{ Name = 'an unknown configuration stays a single line'; Args = @('-s', '--config', 'bogus'); ExpectExit = 1 + Contains = @('Unknown configuration') + NotContains = @('####', 'Try') } + @{ Name = 'a bad --jobs value is not framed either'; Args = @('-s', '-j', 'x'); ExpectExit = 1 + Contains = @('Invalid --jobs value') + NotContains = @('####') } + + 'the summary says what to do next' + # Every suggested command carries the flags that reproduce this run. + @{ Name = 'a deps build points at the slicer build'; Args = @('-d', '-l') + Contains = @('Build the slicer build_win.bat -s -l') + NotContains = @('Run it') } + @{ Name = 'a ninja slicer build offers a single target'; Args = @('-s', '-l', '-x') + Contains = @('Rebuild after edits build_win.bat -s -l -x --no-configure', 'Rebuild one target') + NotContains = @('Solution', 'Open in Visual Studio') } + @{ Name = 'a visual studio build names the solution instead'; Args = @('-s') + Contains = @('Solution ', 'Open in Visual Studio build\OrcaSlicer.sln', + 'Rebuild after edits build_win.bat -s --no-configure') + NotContains = @('Rebuild one target') } + @{ Name = 'the configuration and architecture come back'; Args = @('-s', '-l', '-x', '--config', 'debug', '--arch', 'arm64') + Contains = @('build_win.bat -s -l -x --config debug --arch arm64 --no-configure') } + @{ Name = 'the tree overrides come back quoted'; Args = @('-s', '--deps-dir', 'D:\d', '--build-dir', 'D:\b') + Contains = @('--deps-dir "D:\d" --build-dir "D:\b"') } + @{ Name = 'a pinned visual studio release comes back'; Args = @('-s', '--vs', '2022') + Contains = @('build_win.bat -s --vs 2022 --no-configure') } + # Autodetection writes what it found into the same variable, so a detected + # release must not come back as though it had been asked for. + @{ Name = 'a detected release does not'; Args = @('-s') + NotContains = @('--vs') } + @{ Name = 'the binary is named in the build tree it was built in'; Args = @('-s', '-l', '-x') + Contains = @('build-clang\src\Release\orca-slicer.exe') } + @{ Name = 'installing names the installed copy instead'; Args = @('-s', '-l', '-x', '-i') + Contains = @('build-clang\OrcaSlicer\orca-slicer.exe') } + # -i changes where the binary lands, so a rebuild that dropped it would + # leave the path above pointing at a stale copy. + @{ Name = 'the rebuild suggestion keeps -i'; Args = @('-s', '-l', '-x', '-i') + Contains = @('Rebuild after edits build_win.bat -s -l -x -i --no-configure') } + # A deps retry has no install step to repeat. + @{ Name = 'a deps retry drops it'; Args = @('-d', '-s', '-i', '--deps-dir', 'Z:\nope') + DryRun = $false; ExpectExit = 1 + Contains = @('build_win.bat -d --deps-dir "Z:\nope" -c') + NotContains = @('-d -i') } + # Naming a target builds it and its dependencies, not its dependents, so + # the binary on disk is whatever the last full build left there. + @{ Name = 'a single-target build does not claim the whole binary'; Args = @('-s', '-l', '-x', '--slicer-target', 'glad') + Contains = @('Target glad', 'Relink the binary build_win.bat -s -l -x --no-configure') + NotContains = @('Run it', 'orca-slicer.exe', 'Rebuild after edits') } + # The executable has a target of its own, and naming that one does relink. + @{ Name = 'naming the executable target still claims the binary'; Args = @('-s', '-l', '-x', '--slicer-target', 'OrcaSlicer') + Contains = @('Run it', 'orca-slicer.exe', 'Rebuild after edits') + NotContains = @('Target OrcaSlicer', 'Relink the binary') } + @{ Name = '--run-tests offers the ctest line'; Args = @('-s', '-l', '-x', '--run-tests') + Contains = @('Re-run the tests ctest --test-dir build-clang/tests -C Release') } + @{ Name = 'packing names the bundle and how to use it'; Args = @('-p', '-l') + Contains = @('Bundle ', 'Share the bundle') } + # The line supplies its own tree, so the one this run used must not ride + # along and contradict it. + @{ Name = 'the bundle line names one tree, not two'; Args = @('-s', '-p', '-l', '-x', '--deps-dir', 'D:\shared') + Contains = @('then build_win.bat -s -l -x --deps-dir <path>') + NotContains = @('--deps-dir "D:\shared" --deps-dir') } + @{ Name = 'installing prerequisites suggests the build that follows'; Args = @('-u', '-l') + Contains = @('Restart this shell', 'build_win.bat -ds -l') + NotContains = @('Run it') } + # Everything below the header line is worked out the same way in either + # run, which is why a dry run can cover it. + @{ Name = 'a dry run does not claim a build happened'; Args = @('-s', '-l', '-x') + Contains = @('Dry run: nothing was built.') + NotContains = @('Build completed in') } + # --no-configure is the iteration loop and still gets the block; four + # lines after a rebuild is not enough to be worth suppressing. + @{ Name = '--no-configure still gets the summary'; Args = @('-s', '-l', '-x', '--no-configure') + Contains = @('Next', 'Rebuild after edits') } + + 'pointing at the solution' + # The extension follows the generator, so these two pin the release and a + # build directory that cannot already hold a solution of either kind. + @{ Name = 'the 2026 generator gets the XML solution'; Args = @('-s', '--vs', '2026', '--build-dir', 'D:\tree') + Contains = @('Solution D:\tree\OrcaSlicer.slnx', 'Open in Visual Studio D:\tree\OrcaSlicer.slnx') } + @{ Name = 'the releases before it get the classic one'; Args = @('-s', '--vs', '2022', '--build-dir', 'D:\tree') + Contains = @('Solution D:\tree\OrcaSlicer.sln', 'Open in Visual Studio D:\tree\OrcaSlicer.sln') } + @{ Name = 'a solution already on disk wins over the generator'; Args = @('-s', '--vs', '2026', '--build-dir', $slnDir) + Match = @('^ Solution .*\\OrcaSlicer\.sln$') } + # Extension-agnostic from here: these cases are about the directory, and + # the release is whatever is installed. + @{ Name = 'the VS generator says where the solution is'; Args = @('-s') + Match = @('^ Solution .*\\build\\OrcaSlicer\.slnx?$') } + @{ Name = 'the solution path follows the configuration'; Args = @('-s', '--config', 'debug') + Match = @('^ Solution .*\\build-dbg\\OrcaSlicer\.slnx?$') } + @{ Name = 'the solution line survives an install'; Args = @('-s', '-i') + Contains = @(' Solution ') } + # The path is resolved, not pasted onto the repository root, so it is + # right whether --build-dir came absolute or with forward slashes. + @{ Name = 'a moved build still prints one real path'; Args = @('-s', '--build-dir', 'out/build/x64-clang') + Match = @('^ Solution [A-Za-z]:\\[^/]+\\OrcaSlicer\.slnx?$') } + @{ Name = 'an absolute --build-dir is not glued onto the repo root'; Args = @('-s', '--build-dir', 'D:\tree') + Match = @('^ Solution D:\\tree\\OrcaSlicer\.slnx?$') } +) + +function Invoke-BuildScript { + param([string[]] $Arguments, [hashtable] $Environment) + + $saved = @{} + if ($Environment) { + foreach ($key in $Environment.Keys) { + $saved[$key] = [Environment]::GetEnvironmentVariable($key) + Set-Item -Path "env:$key" -Value $Environment[$key] + } + } + try { + # 'Stop' turns a native command's stderr into a terminating error, and + # a case that exercises a real failure writes to stderr. Let the output + # through and judge the run by its exit code instead. The assignment is + # scoped to this function, so the rest of the suite keeps 'Stop'. + $ErrorActionPreference = 'Continue' + if ($Arguments.Count -eq 0) { + $out = & $Script 2>&1 | Out-String + } else { + $out = & $Script @Arguments 2>&1 | Out-String + } + return [pscustomobject]@{ Output = $out; Exit = $LASTEXITCODE } + } finally { + foreach ($key in $saved.Keys) { + if ($null -eq $saved[$key]) { Remove-Item -Path "env:$key" -ErrorAction SilentlyContinue } + else { Set-Item -Path "env:$key" -Value $saved[$key] } + } + } +} + +$knownFields = @( + 'Name', 'Args', 'ExpectExit', 'DryRun', 'First', 'Env', + 'Contains', 'NotContains', 'Match', 'NotMatch', 'NotExists', 'DateStampedZip' +) + +function Test-Case { + param([hashtable] $Case) + + # Read fields with the indexer, not dot notation. A hashtable exposes its + # own members too, so $Case.Contains returns the Contains *method* whenever + # the case has no key by that name. + $argv = @($Case['Args']) + if (-not $Case.ContainsKey('DryRun') -or $Case['DryRun']) { $argv += '--dry-run' } + + $expect = 0 + if ($Case.ContainsKey('ExpectExit')) { $expect = $Case['ExpectExit'] } + + $started = Get-Date + $result = Invoke-BuildScript -Arguments $argv -Environment $Case['Env'] + $finished = Get-Date + + $problems = @() + + # A misspelled field is silently ignored by the checks below, which + # leaves the case asserting nothing at all and passing. + foreach ($field in $Case.Keys) { + if ($knownFields -notcontains $field) { $problems += "unknown field '$field'" } + } + + if ($result.Exit -ne $expect) { $problems += "exit $($result.Exit), expected $expect" } + foreach ($needle in $Case['Contains']) { + if (-not $result.Output.Contains($needle)) { $problems += "missing '$needle'" } + } + foreach ($needle in $Case['NotContains']) { + if ($result.Output.Contains($needle)) { $problems += "unexpected '$needle'" } + } + $lines = $result.Output -split "`r?`n" + if ($Case['First'] -and $lines[0] -notmatch $Case['First']) { + $problems += "first line was '$($lines[0])'" + } + foreach ($pattern in $Case['Match']) { + if (@($lines | Where-Object { $_ -match $pattern }).Count -eq 0) { + $problems += "no line matching /$pattern/" + } + } + if ($Case['DateStampedZip']) { + # Bound the accepted dates to this invocation so crossing midnight is + # valid without allowing an unrelated past or future date. + $dateStamps = @($started.ToString('yyyyMMdd'), $finished.ToString('yyyyMMdd')) | Select-Object -Unique + $pattern = '_(' + ($dateStamps -join '|') + ')\.zip$' + if (@($lines | Where-Object { $_ -match $pattern }).Count -eq 0) { + $problems += "no line matching /$pattern/" + } + } + foreach ($pattern in $Case['NotMatch']) { + foreach ($line in @($lines | Where-Object { $_ -match $pattern })) { + $problems += "line matches /$pattern/: $line" + } + } + # Output cannot show what a run did not create. + foreach ($path in $Case['NotExists']) { + $full = Join-Path (Split-Path -Parent $Script) $path + if (Test-Path $full) { + $problems += "created '$path'" + } + } + return ,$problems +} + +$pass = 0 +$failed = @() +# Held back so a filtered run does not print headings for groups it skipped. +$heading = $null + +foreach ($case in $cases) { + if ($case -is [string]) { + $heading = $case + continue + } + if ($Name -and $case['Name'] -notmatch $Name) { continue } + if ($heading) { + Write-Host '' + Write-Host $heading -ForegroundColor Cyan + $heading = $null + } + + $problems = Test-Case -Case $case + if ($problems.Count -eq 0) { + $pass++ + Write-Host (' ok ' + $case['Name']) + } else { + $failed += $case['Name'] + Write-Host (' FAIL ' + $case['Name']) -ForegroundColor Red + foreach ($problem in $problems) { Write-Host (' ' + $problem) -ForegroundColor Red } + Write-Host (' args: ' + (@($case['Args']) -join ' ')) + } +} + +Remove-Item -Recurse -Force $fixtures -ErrorAction SilentlyContinue + +Write-Host '' +# A pattern that matched nothing has proved nothing, so do not report it as +# a clean run. +if ($Name -and $pass -eq 0 -and $failed.Count -eq 0) { + Write-Host "no case matched /$Name/" -ForegroundColor Red + exit 1 +} +Write-Host "$pass passed, $($failed.Count) failed" +if ($failed.Count -gt 0) { + foreach ($name in $failed) { Write-Host " failed: $name" -ForegroundColor Red } + exit 1 +} +exit 0 diff --git a/scripts/test_moonraker_lane_data.py b/scripts/test_moonraker_lane_data.py index 44a0a7e30e..16ed4924e0 100644 --- a/scripts/test_moonraker_lane_data.py +++ b/scripts/test_moonraker_lane_data.py @@ -5,10 +5,15 @@ Inserts/deletes/modifies random lane data in Moonraker database, then reads back and displays with colored output. """ -import requests +try: + import requests +except ImportError: + requests = None # only needed for live-printer operations, not --check-ofl-map import random import argparse import json +import os +import re import time import sys @@ -16,6 +21,11 @@ import sys DEFAULT_HOST = "192.168.88.9" DEFAULT_PORT = 7125 NAMESPACE = "lane_data" + +# Repo-relative paths for the offline generic-map check +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +MOONRAKER_AGENT_CPP = os.path.join(REPO_ROOT, "src", "slic3r", "Utils", "MoonrakerPrinterAgent.cpp") +OFL_FILAMENT_DIR = os.path.join(REPO_ROOT, "resources", "profiles", "OrcaFilamentLibrary", "filament") LANE_KEYS = [f"lane{i}" for i in range(1, 9)] # lane1-lane8 MATERIALS = ["PLA", "ABS", "PETG", "ASA", "ASA Sparkle", "TPU", ""] @@ -30,6 +40,95 @@ MATERIAL_TEMPS = { "": {"nozzle": None, "bed": None}, } +def parse_cpp_type_map(): + """Extract the normalized-type -> OFL generic family table from MoonrakerPrinterAgent.cpp. + + Reads MoonrakerPrinterAgent::map_filament_type_to_generic_id's type_to_ofl_family + initializer so the check tracks the C++ normalization without a duplicated list. + """ + with open(MOONRAKER_AGENT_CPP, encoding="utf-8") as f: + src = f.read() + m = re.search(r"type_to_ofl_family\s*=\s*\{(.*?)\n\s*\};", src, re.DOTALL) + if not m: + raise RuntimeError(f"type_to_ofl_family table not found in {MOONRAKER_AGENT_CPP}") + pairs = re.findall(r'\{\s*"([^"]+)"\s*,\s*"([^"]+)"\s*\}', m.group(1)) + if not pairs: + raise RuntimeError("type_to_ofl_family table parsed empty") + return dict(pairs) + +def load_ofl_presets(): + """Map preset name -> parsed JSON for every OrcaFilamentLibrary filament profile.""" + presets = {} + for root, _dirs, files in os.walk(OFL_FILAMENT_DIR): + for fn in files: + if not fn.endswith(".json"): + continue + try: + with open(os.path.join(root, fn), encoding="utf-8") as f: + data = json.load(f) + except (OSError, ValueError): + continue + name = data.get("name") + if isinstance(name, str) and name: + presets[name] = data + return presets + +def resolve_ofl_filament_id(presets, name): + """Follow the inherits chain (within OFL) until a filament_id is declared.""" + seen = set() + while name and name not in seen: + seen.add(name) + preset = presets.get(name) + if preset is None: + return None + fid = preset.get("filament_id") + if fid: + return fid + name = preset.get("inherits") + return None + +def check_ofl_generic_map(): + """Assert every material type the C++ normalization handles resolves to a shipped + OrcaFilamentLibrary generic preset carrying a filament_id. + + Expectations are derived from the shipped profiles, not pinned id literals, so the + check stays valid across filament_id re-mints. + """ + print("Checking C++ generic-type map against shipped OrcaFilamentLibrary presets...") + try: + type_map = parse_cpp_type_map() + except (OSError, RuntimeError) as e: + print(f" FAIL: {e}") + return False + presets = load_ofl_presets() + if not presets: + print(f" FAIL: no OFL filament profiles found under {OFL_FILAMENT_DIR}") + return False + errors = [] + for family in sorted(set(type_map.values())): + preset_name = f"Generic {family} @System" + if preset_name not in presets: + errors.append(f"{preset_name}: no such OFL preset") + continue + if str(presets[preset_name].get("instantiation", "")).lower() != "true": + errors.append(f"{preset_name}: not instantiated — the C++ runtime lookup " + f"only sees presets loaded into the PresetBundle") + continue + fid = resolve_ofl_filament_id(presets, preset_name) + if not fid: + errors.append(f"{preset_name}: no filament_id resolvable through inherits") + continue + aliases = ", ".join(sorted(t for t, fam in type_map.items() if fam == family)) + print(f" {fid:10s} {preset_name:32s} <- {aliases}") + if errors: + for e in errors: + print(f" FAIL: {e}") + print(f"OFL generic map check FAILED ({len(errors)} error(s))") + return False + print(f"OFL generic map check passed: {len(type_map)} type aliases, " + f"{len(set(type_map.values()))} OFL generic presets\n") + return True + def test_connection(host, port, api_key=None, verbose=False): """Test basic connectivity to Moonraker.""" url = f"http://{host}:{port}/server/info" @@ -404,11 +503,25 @@ def main(): help="Only read and display current lane data") parser.add_argument("--load", metavar="FILE", help="Load lane data from JSON file and overwrite printer lanes") + parser.add_argument("--check-ofl-map", action="store_true", + help="Only run the offline check that the C++ generic-type map " + "resolves against shipped OrcaFilamentLibrary presets") parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output for debugging") args = parser.parse_args() + # Offline check first: the C++ type normalization must resolve against shipped + # OFL presets (no printer needed). + if not check_ofl_generic_map(): + return 1 + if args.check_ofl_map: + return 0 + + if requests is None: + print("The 'requests' module is required for live printer operations (pip install requests).") + return 1 + print(f"\nConnecting to Moonraker at {args.host}:{args.port}...") # First test basic connectivity diff --git a/scripts/tests/__init__.py b/scripts/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scripts/tests/test_filament_id.py b/scripts/tests/test_filament_id.py new file mode 100644 index 0000000000..3e7a6d2aec --- /dev/null +++ b/scripts/tests/test_filament_id.py @@ -0,0 +1,1910 @@ +#!/usr/bin/env python3 +"""Tests for scripts/orca_id_tool.py (stdlib unittest, no external deps). + +Run from the repo root: python -m unittest discover -s scripts/tests -v +""" + +import contextlib +import io +import json +import os +import re +import shutil +import sys +import tempfile +import unittest +import uuid + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +import orca_id_tool as afi # noqa: E402 +import update_bambu_filament_ids as ubfi # noqa: E402 + +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) +REAL_PROFILES = os.path.join(REPO_ROOT, "resources", "profiles") + +OFL = "OrcaFilamentLibrary" + + +def load_json_file(path): + with open(path, encoding="utf-8") as f: + return json.load(f) + + +# --------------------------------------------------------------------------- +# helpers: synthetic profile trees +# --------------------------------------------------------------------------- + +def preset(name, filament_id=None, inherits=None, instantiation=True, + compatible_printers=None, filament_vendor=None, filament_type=None): + data = {"type": "filament", "name": name} + if inherits is not None: + data["inherits"] = inherits + if filament_id is not None: + data["filament_id"] = filament_id + if filament_vendor is not None: + data["filament_vendor"] = ( + [filament_vendor] if isinstance(filament_vendor, str) else filament_vendor) + if filament_type is not None: + data["filament_type"] = ( + [filament_type] if isinstance(filament_type, str) else filament_type) + data["instantiation"] = "true" if instantiation else "false" + if compatible_printers is not None: + data["compatible_printers"] = compatible_printers + return data + + +class SyntheticTree: + """A throwaway resources/profiles-shaped directory plus a snapshot path.""" + + def __init__(self): + self.dir = tempfile.mkdtemp(prefix="filament_id_test_") + self.profiles = os.path.join(self.dir, "profiles") + os.makedirs(self.profiles) + self.snapshot = os.path.join(self.dir, "filament_id_snapshot.json") + + def cleanup(self): + shutil.rmtree(self.dir, ignore_errors=True) + + def preset_path(self, vendor, name): + return os.path.join(self.profiles, vendor, "filament", name + ".json") + + def add_vendor(self, vendor, presets): + vendor_dir = os.path.join(self.profiles, vendor, "filament") + os.makedirs(vendor_dir, exist_ok=True) + index = {"name": vendor, "version": "01.00.00.00", "filament_list": []} + for data in presets: + fname = data["name"] + ".json" + with open(os.path.join(vendor_dir, fname), "w", encoding="utf-8") as f: + json.dump(data, f, indent=4, ensure_ascii=False) + index["filament_list"].append( + {"name": data["name"], "sub_path": f"filament/{fname}"}) + with open(os.path.join(self.profiles, vendor + ".json"), "w", + encoding="utf-8") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + + def add_to_index(self, vendor, name): + idx_path = os.path.join(self.profiles, vendor + ".json") + with open(idx_path, encoding="utf-8") as f: + index = json.load(f) + index["filament_list"].append( + {"name": name, "sub_path": f"filament/{name}.json"}) + with open(idx_path, "w", encoding="utf-8") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + + def write_preset(self, vendor, data, register=True): + path = self.preset_path(vendor, data["name"]) + with open(path, "w", encoding="utf-8") as f: + json.dump(data, f, indent=4, ensure_ascii=False) + if register: + self.add_to_index(vendor, data["name"]) + + def set_sub_path(self, vendor, name, sub_path): + """Rewrite one index entry's sub_path (the file itself does not move).""" + idx_path = os.path.join(self.profiles, vendor + ".json") + with open(idx_path, encoding="utf-8") as f: + index = json.load(f) + for entry in index["filament_list"]: + if entry["name"] == name: + entry["sub_path"] = sub_path + with open(idx_path, "w", encoding="utf-8") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + + def remove_preset(self, vendor, name): + os.remove(self.preset_path(vendor, name)) + idx_path = os.path.join(self.profiles, vendor + ".json") + with open(idx_path, encoding="utf-8") as f: + index = json.load(f) + index["filament_list"] = [ + e for e in index["filament_list"] if e["name"] != name] + with open(idx_path, "w", encoding="utf-8") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + + def bytes_map(self): + """{relative path -> file bytes} over every .json in the tree.""" + raw = {} + for root, dirs, files in os.walk(self.profiles): + dirs.sort() + for name in sorted(files): + if not name.endswith(".json"): + continue + path = os.path.join(root, name) + with open(path, "rb") as f: + raw[os.path.relpath(path, self.profiles)] = f.read() + return raw + + # -- pipeline wrappers --------------------------------------------------- + + def update_snapshot(self, dry_run=False): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.update_snapshot(self.profiles, self.snapshot, dry_run) + return rc, buf.getvalue() + + def check(self, map_path=None): + buf = io.StringIO() + kwargs = {} if map_path is None else {"map_path": map_path} + with contextlib.redirect_stdout(buf): + errors = afi.check_filament_ids(self.profiles, self.snapshot, **kwargs) + return errors, buf.getvalue() + + # assign() and remint() are the same one pass over the tree — every filament + # ends up with the id its own triple mints, whether that means inserting a + # missing key or rewriting a non-conformant one. Both names are kept because + # they read differently at the call sites. + def assign(self, vendors=None, dry_run=False): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = afi.generate_filament_ids(self.profiles, vendors, dry_run) + return changed, errors, buf.getvalue() + + def remint(self, vendors, dry_run=False): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = afi.generate_filament_ids(self.profiles, vendors, dry_run) + return changed, errors, buf.getvalue() + + def cli(self, *flags): + """Run main() against this tree, capturing stdout.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.main([*flags, "--profiles", self.profiles, + "--snapshot", self.snapshot]) + return rc, buf.getvalue() + + +def make_clean_tree(apla_id="AX01", generic_id="OGFL99"): + """Baseline tree: OFL base+generic, a vendor filament, a clean tuned generic. + + apla_id/generic_id default to arbitrary non-OF placeholders (sanctioned by + the snapshot below) since most tests only need "already assigned, don't + touch" and never run the checks. TestAssign and the check tests pass real + OF-format ids instead (OfCleanTreeCase). + """ + t = SyntheticTree() + t.add_vendor(OFL, [ + preset("Generic PLA @base", filament_id=generic_id, instantiation=False, + filament_vendor="Generic", filament_type="PLA"), + preset("Generic PLA @System", inherits="Generic PLA @base", + compatible_printers=[]), + ]) + t.add_vendor("VendorA", [ + preset("APLA @base", filament_id=apla_id, instantiation=False, + filament_vendor="AVendor", filament_type="PLA"), + preset("APLA @P1", inherits="APLA @base", + compatible_printers=["P1 0.4 nozzle"]), + # Correctly tuned OFL generic: keeps the OFL base name, claims a printer. + preset("Generic PLA @P1", inherits="Generic PLA @System", + compatible_printers=["P1 0.4 nozzle"]), + ]) + rc, _out = t.update_snapshot() + assert rc == 0 + return t + + +class SyntheticTreeCase(unittest.TestCase): + def setUp(self): + self.t = make_clean_tree() + self.addCleanup(self.t.cleanup) + + +class OfCleanTreeCase(unittest.TestCase): + """Like SyntheticTreeCase, but the baseline filament/generic already carry + real OF-format ids (check 1 now rejects "AX01"/"OGFL99" unconditionally, + with no snapshot exemption), so an otherwise-untouched tree still passes + check_filament_ids. Tests that specifically need a non-OF baseline to + remint (TestRemint, TestUpdateSnapshot) keep using SyntheticTreeCase + instead. + """ + def setUp(self): + self.t = make_clean_tree( + apla_id=afi.generate_filament_id("AVendor", "PLA", "APLA"), + generic_id=afi.generate_filament_id("Generic", "PLA", "Generic PLA")) + self.addCleanup(self.t.cleanup) + + +# --------------------------------------------------------------------------- +# mint +# --------------------------------------------------------------------------- + +class TestMint(unittest.TestCase): + def test_namespace_literal(self): + # Frozen: derived from the setting_id namespace; baked into the snapshot. + self.assertEqual(afi.FILAMENT_ID_NAMESPACE, + uuid.UUID("c4d3ff49-4c32-5534-a3e3-00894157ab97")) + + def test_known_vector(self): + # Hardcoded, independently computed vectors: freeze prefix, input string + # layout ("filament_product/<vendor>/<type>/<name>") and base62 tail. + self.assertEqual(afi.generate_filament_id("Polymaker", "PLA", "PolyLite PLA"), + "OF5CgdDq") + self.assertEqual(afi.generate_filament_id("Generic", "PLA", "Generic PLA"), + "OFDSrzZ8") + + def test_determinism_and_format(self): + for triple in [("Polymaker", "PLA", "PolyLite PLA"), + ("Creality", "PLA", "CR PLA"), + ("Generic", "ABS", "Generic ABS"), + ("拓竹", "PLA", "拓竹 PLA")]: # unicode components + a = afi.generate_filament_id(*triple) + b = afi.generate_filament_id(*triple) + self.assertEqual(a, b) + self.assertRegex(a, r"^OF[0-9A-Za-z]{6}$") + self.assertEqual(len(a), 8) + + def test_every_triple_component_changes_the_id(self): + base = afi.generate_filament_id("Polymaker", "PLA", "PolyLite PLA") + self.assertNotEqual(base, afi.generate_filament_id("Other", "PLA", "PolyLite PLA")) + self.assertNotEqual(base, afi.generate_filament_id("Polymaker", "PETG", "PolyLite PLA")) + self.assertNotEqual(base, afi.generate_filament_id("Polymaker", "PLA", "PolyLite PLA Pro")) + + +class TestBaseName(unittest.TestCase): + def test_filament_name_derivation(self): + cases = [ + ("X @base", "X"), + ("Afinia PLA@HS", "Afinia PLA"), + ("PolyTerra PLA", "PolyTerra PLA"), + ("HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle", "HATCHBOX PLA"), + ("A @B @C", "A"), # first @ wins + ("Filár PLA 拓竹 @0.4 nozzle", "Filár PLA 拓竹"), + ] + for name, filament_name in cases: + self.assertEqual(afi.base_name(name), filament_name, msg=name) + + +# --------------------------------------------------------------------------- +# vendor discovery +# --------------------------------------------------------------------------- + +class TestVendorDiscovery(unittest.TestCase): + def test_a_bundle_is_a_subdir_with_a_matching_index(self): + # Neither half alone makes a bundle: resources/profiles tracks a "user" + # directory with no user.json, and an index without its directory is a + # leftover. Both are skipped, tree-wide. + t = SyntheticTree() + self.addCleanup(t.cleanup) + t.add_vendor("VendorA", []) + os.makedirs(os.path.join(t.profiles, "user", "filament")) + with open(os.path.join(t.profiles, "Orphan.json"), "w", + encoding="utf-8") as f: + json.dump({"name": "Orphan", "filament_list": []}, f) + self.assertEqual(afi.list_vendor_names(t.profiles), ["VendorA"]) + self.assertEqual(sorted(afi.analyze_tree(t.profiles)["vendors"]), + ["VendorA"]) + + +# --------------------------------------------------------------------------- +# resolver (loader-faithful semantics) +# --------------------------------------------------------------------------- + +class TestResolver(unittest.TestCase): + @staticmethod + def rec(name, filament_id=None, inherits=None): + return {"name": name, "filament_id": filament_id, "inherits": inherits} + + def resolve(self, name, vendor_recs, ofl_recs, **kw): + fmap = {r["name"]: r for r in vendor_recs} + omap = {r["name"]: r for r in ofl_recs} + return afi.resolve_filament_id(name, fmap, omap, **kw) + + def test_own_id(self): + fid, src, entry = self.resolve("A", [self.rec("A", "ID1")], []) + self.assertEqual((fid, src, entry), ("ID1", "own", None)) + + def test_inherited_within_vendor(self): + fid, src, entry = self.resolve( + "A", [self.rec("A", inherits="B"), self.rec("B", inherits="C"), + self.rec("C", "ID3")], []) + self.assertEqual((fid, src, entry), ("ID3", "inherited", None)) + + def test_ofl_fallback(self): + # Vendor preset inherits a name that only exists in the OFL map. + fid, src, entry = self.resolve( + "A", [self.rec("A", inherits="Generic PLA @System")], + [self.rec("Generic PLA @System", inherits="fdm_pla"), + self.rec("fdm_pla", "OGFL99")]) + self.assertEqual(fid, "OGFL99") + self.assertEqual(entry, "Generic PLA @System") + + def test_ofl_stays_in_ofl(self): + # Once a chain enters OFL it stays there: a vendor file sharing an + # OFL-internal hop's name must not shadow it. + fid, _src, entry = self.resolve( + "A", + [self.rec("A", inherits="ofl_entry"), self.rec("fdm_pla", "WRONG")], + [self.rec("ofl_entry", inherits="fdm_pla"), self.rec("fdm_pla", "RIGHT")]) + self.assertEqual(fid, "RIGHT") + self.assertEqual(entry, "ofl_entry") + + def test_dead_end_retries_parent_in_ofl(self): + # The vendor chain dead-ends id-less on a parent that also exists in + # OFL: the loader re-consults the OFL map for that direct parent. + fid, _src, entry = self.resolve( + "A", [self.rec("A", inherits="shared"), self.rec("shared")], + [self.rec("shared", "OFLID1")]) + self.assertEqual(fid, "OFLID1") + self.assertEqual(entry, "shared") + + def test_cycle(self): + fid, src, _e = self.resolve( + "A", [self.rec("A", inherits="B"), self.rec("B", inherits="A")], []) + self.assertEqual((fid, src), (None, "cycle")) + + def test_dangling_parent(self): + fid, src, _e = self.resolve("A", [self.rec("A", inherits="nope")], []) + self.assertEqual((fid, src), (None, "dangling")) + + def test_missing_id(self): + fid, src, _e = self.resolve("A", [self.rec("A")], []) + self.assertEqual((fid, src), (None, "missing")) + + +class TestTripleResolution(unittest.TestCase): + @staticmethod + def rec(name, inherits=None, filament_vendor=None, filament_type=None): + return {"name": name, "inherits": inherits, + "filament_vendor": filament_vendor, "filament_type": filament_type} + + def field(self, name, vendor_recs, ofl_recs, field="filament_vendor"): + fmap = {r["name"]: r for r in vendor_recs} + omap = {r["name"]: r for r in ofl_recs} + return afi.resolve_filament_field(name, field, fmap, omap) + + def test_own_value_first_element_of_list(self): + got = self.field("A", [self.rec("A", filament_vendor=["Poly", "Ignored"])], []) + self.assertEqual(got, "Poly") + + def test_plain_string_value_tolerated(self): + got = self.field("A", [self.rec("A", filament_vendor="Poly")], []) + self.assertEqual(got, "Poly") + + def test_inherited_within_vendor(self): + got = self.field( + "A", [self.rec("A", inherits="B"), self.rec("B", inherits="C"), + self.rec("C", filament_vendor=["Poly"])], []) + self.assertEqual(got, "Poly") + + def test_empty_list_keeps_walking(self): + got = self.field( + "A", [self.rec("A", inherits="B", filament_vendor=[]), + self.rec("B", filament_vendor=["Poly"])], []) + self.assertEqual(got, "Poly") + + def test_ofl_fallback(self): + got = self.field( + "A", [self.rec("A", inherits="Generic PLA @System")], + [self.rec("Generic PLA @System", inherits="fdm_pla"), + self.rec("fdm_pla", filament_vendor=["Generic"])]) + self.assertEqual(got, "Generic") + + def test_ofl_stays_in_ofl(self): + got = self.field( + "A", + [self.rec("A", inherits="ofl_entry"), + self.rec("fdm_pla", filament_vendor=["WRONG"])], + [self.rec("ofl_entry", inherits="fdm_pla"), + self.rec("fdm_pla", filament_vendor=["RIGHT"])]) + self.assertEqual(got, "RIGHT") + + def test_dead_end_retries_parent_in_ofl(self): + got = self.field( + "A", [self.rec("A", inherits="shared"), self.rec("shared")], + [self.rec("shared", filament_vendor=["Poly"])]) + self.assertEqual(got, "Poly") + + def test_missing_is_empty(self): + self.assertEqual(self.field("A", [self.rec("A")], []), "") + self.assertEqual(self.field("A", [self.rec("A", inherits="nope")], []), "") + + def test_resolve_triple(self): + recs = [self.rec("MyPLA @base", filament_vendor=["MyVendor"], + filament_type=["PLA"]), + self.rec("MyPLA @P1", inherits="MyPLA @base")] + fmap = {r["name"]: r for r in recs} + self.assertEqual(afi.resolve_triple("MyPLA @P1", fmap, {}), + ("MyVendor", "PLA", "MyPLA")) + + +# --------------------------------------------------------------------------- +# reserved namespaces +# --------------------------------------------------------------------------- + +class TestReservedSpaces(unittest.TestCase): + def test_owners(self): + # Bambu AMS/RFID catalog: reserved, but no vendor (not even BBL) may declare it + self.assertEqual(afi.reserved_space_owner("GFL99"), (True, None)) + # Qidi device protocol: reserved, but no vendor may declare it + self.assertEqual(afi.reserved_space_owner("QD_X4_PLA"), (True, None)) + self.assertEqual(afi.reserved_space_owner("P1234abc"), (True, None)) + self.assertEqual(afi.reserved_space_owner("pAbCdEf1"), (True, None)) # case-insensitive + self.assertEqual(afi.reserved_space_owner("null"), (True, None)) + self.assertEqual(afi.reserved_space_owner("OF5CgdDq"), (False, None)) + self.assertEqual(afi.reserved_space_owner("P1234abcd"), (False, None)) # 8 hex chars: not the user space + + def test_gf_is_reserved_and_ownerless(self): + self.assertEqual(afi.reserved_space_owner("GFA00"), (True, None)) + + +# --------------------------------------------------------------------------- +# checks on synthetic trees +# --------------------------------------------------------------------------- + +class TestChecks(OfCleanTreeCase): + def test_clean_tree_is_silent(self): + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + self.assertNotIn("[ERROR]", out) + self.assertNotIn("[WARNING]", out) + + def test_check1_unknown_non_of_id(self): + self.t.write_preset("VendorA", preset("BPLA @base", filament_id="BOGUS_9", + instantiation=False, + filament_vendor="BV", filament_type="PLA")) + self.t.write_preset("VendorA", preset("BPLA @P1", inherits="BPLA @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn('is not a minted "OF" id', out) + self.assertIn("BOGUS_9", out) + + def test_check2_new_claim_needs_snapshot_update(self): + self.t.write_preset("VendorA", preset("ANEW @P2", inherits="APLA @base", + compatible_printers=["P2"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn('claim "VendorA/ANEW" is not sanctioned', out) + self.assertIn("--update-snapshot", out) + + def test_check2_vanished_claim_is_stability_error(self): + self.t.remove_preset("VendorA", "APLA @P1") + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("stability", out) + self.assertIn('"VendorA/APLA"', out) + + def test_check2_triple_change_needs_snapshot_update(self): + apla_id = afi.generate_filament_id("AVendor", "PLA", "APLA") + self.t.write_preset("VendorA", preset("APLA @base", filament_id=apla_id, + instantiation=False, + filament_vendor="AVendor", + filament_type="PETG"), + register=False) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn('triple "AVendor/PETG/APLA" is not sanctioned', out) + self.assertIn('which records "AVendor/PLA/APLA"', out) + # Sanctioning the new triple is not enough: the old id is no longer its + # mint (check 3, nothing grandfathered) — the identity fix is a re-mint, + # reported on the root and again under the variant inheriting it. + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 2, out) + self.assertIn("does not match the mint of its triple", out) + self.assertIn('"APLA @P1" (VendorA/filament/APLA @P1.json) inherits filament_id', out) + _changed, errors, out = self.t.remint(["VendorA"]) + self.assertEqual(errors, 0, out) + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + + def test_check3_of_id_must_match_triple_mint(self): + self.t.write_preset("VendorA", preset("BNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_vendor="BV", filament_type="PLA")) + self.t.write_preset("VendorA", preset("BNEW @P1", inherits="BNEW @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("does not match the mint of its triple", out) + self.assertIn(afi.generate_filament_id("BV", "PLA", "BNEW"), out) + + def test_check3_no_grandfathering_of_a_wrong_declaration(self): + # Sanctioning the tree does not excuse a declaration from its mint. + self.t.write_preset("VendorA", preset("CNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_vendor="CV", filament_type="PLA")) + self.t.write_preset("VendorA", preset("CNEW @P1", inherits="CNEW @base", + compatible_printers=["P1"])) + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 2, out) # the declaration, and the variant inheriting it + self.assertIn("does not match the mint of its triple", out) + self.assertIn('"CNEW @P1" (VendorA/filament/CNEW @P1.json) inherits filament_id', out) + + def test_check3_inherited_id_must_be_the_mint_of_own_triple(self): + # A preset of another filament inheriting APLA's root takes APLA's id, + # which is not the mint of ITS triple (AVendor/PLA/Tuned PLA). + self.t.write_preset("VendorA", preset("Tuned PLA @P1", inherits="APLA @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn('"Tuned PLA @P1" (VendorA/filament/Tuned PLA @P1.json) inherits ' + 'filament_id "%s"' % afi.generate_filament_id("AVendor", "PLA", "APLA"), + out) + self.assertIn('mints "%s"' % afi.generate_filament_id("AVendor", "PLA", "Tuned PLA"), + out) + # ... and sanctioning the tree does not excuse it either. + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 1, out) + + def test_check3_lists_every_preset_inheriting_a_wrong_id(self): + # A wrong declaration is reported under every preset inheriting it, its + # own product's variant and another product alike: each one's effective + # id is not the mint of its own triple, and each is listed. Nothing is + # folded into the declarer's error. + self.t.write_preset("VendorA", preset("DNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_vendor="DV", filament_type="PLA")) + self.t.write_preset("VendorA", preset("DNEW @P1", inherits="DNEW @base", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("Other DNEW @P1", inherits="DNEW @base", + compatible_printers=["P1 0.4 nozzle"])) + errors, out = self.t.check() + self.assertIn("does not match the mint of its triple", out) + self.assertIn('"DNEW @P1" (VendorA/filament/DNEW @P1.json) inherits filament_id', out) + self.assertIn('"Other DNEW @P1" (VendorA/filament/Other DNEW @P1.json) inherits ' + 'filament_id', out) + # The unsanctioned id (check 2), the declaration (3a), and both presets + # inheriting it (3b). + self.assertEqual(errors, 4, out) + + def test_check3_reports_an_inherited_mismatch_even_when_its_own_product_misdeclares_the_id(self): + # "Tuned PLA @P1" inherits APLA's root, so it carries APLA's id: wrong + # for its own product however the declarations around it are fixed. + # That "Tuned PLA @base" — its own product — misdeclares that same id + # is a second error, not a reason to leave the first unreported. + apla_id = afi.generate_filament_id("AVendor", "PLA", "APLA") + self.t.write_preset("VendorA", preset("Tuned PLA @base", filament_id=apla_id, + instantiation=False, + filament_vendor="AVendor", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("Tuned PLA @P1", inherits="APLA @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertIn('"Tuned PLA @base" (VendorA/filament/Tuned PLA @base.json) does ' + 'not match the mint of its triple', out) + self.assertIn('"Tuned PLA @P1" (VendorA/filament/Tuned PLA @P1.json) inherits ' + 'filament_id', out) + # The unsanctioned claim and triple (check 2), the declaration (3a) and + # the inherited id (3b): four distinct errors, nothing folded away. + self.assertEqual(errors, 4, out) + + def test_check3_reports_a_collision_between_two_products(self): + # Two products whose triples mint one id is a base62 collision. There + # is no salted or hand-picked second id to fall back on: the check + # names both products, and the remedy is a rename so the triples differ. + collide = {("V", "PLA", "X"), ("W", "ABS", "Y")} + real = afi.generate_filament_id + + def colliding(vendor, ftype, name): + return "OFcolid0" if (vendor, ftype, name) in collide else real(vendor, ftype, name) + + afi.generate_filament_id = colliding + self.addCleanup(setattr, afi, "generate_filament_id", real) + for vendor, ftype, name in sorted(collide): + self.t.write_preset("VendorA", preset(f"{name} @base", filament_id="OFcolid0", + instantiation=False, + filament_vendor=vendor, + filament_type=ftype)) + self.t.write_preset("VendorA", preset(f"{name} @P1", inherits=f"{name} @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertIn("collision", out) + self.assertIn("V/PLA/X", out) + self.assertIn("W/ABS/Y", out) + # Each declaration is the mint of its own triple, so the collision is + # the only identity error — no product is pushed off its id — and the + # unsanctioned id (check 2) is the only other one. + self.assertNotIn("does not match the mint", out) + self.assertNotIn("inherits filament_id", out) + self.assertEqual(errors, 2, out) + + def test_check3_renamed_tuned_generic_is_an_identity_error(self): + # Riding the OFL generic under another base name: same rule, same error. + self.t.write_preset("VendorA", preset("Tuned PLA @P1", + inherits="Generic PLA @System", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("Tuned PLA @P1", out) + self.assertIn("inherits filament_id", out) + + def test_check3_own_key_on_an_instantiated_preset_is_fine(self): + # Where the id comes from is irrelevant: a variant may carry the key. + apla_id = afi.generate_filament_id("AVendor", "PLA", "APLA") + self.t.write_preset("VendorA", preset("APLA @P1", filament_id=apla_id, + inherits="APLA @base", + compatible_printers=["P1 0.4 nozzle"]), + register=False) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + + def test_check3_inheriting_a_real_filament_of_another_product_is_fine(self): + # A branded product may inherit the OFL generic (an instantiated + # preset) for its settings; it declares its own triple's id. + fid = afi.generate_filament_id("BV", "PLA", "Branded PLA") + self.t.write_preset("VendorA", preset("Branded PLA @P1", filament_id=fid, + inherits="Generic PLA @System", + filament_vendor="BV", + compatible_printers=["P1"])) + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + # With a wrong key it is a plain mint mismatch: the parent plays no + # part in the verdict. + drifted = afi.generate_filament_id("AVendor", "PLA", "APLA") + self.t.write_preset("VendorA", preset("Branded PLA @P1", filament_id=drifted, + inherits="Generic PLA @System", + filament_vendor="BV", + compatible_printers=["P1"]), + register=False) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("does not match the mint of its triple", out) + + def test_check4_reserved_namespace_claims(self): + for fid, marker in [("GFX99", "Bambu AMS/RFID catalog"), + ("QD_X_PLA", "composed by the device"), + ("P1a2b3c4", "user-custom"), + ("null", "user-custom")]: + with self.subTest(fid=fid): + name = f"R{fid} @base" + self.t.write_preset("VendorA", preset(name, filament_id=fid, + instantiation=False, + filament_vendor="RV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset(f"R{fid} @P1", inherits=name, + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("reserved id space", out) + self.assertIn(marker, out) + + def test_check3c_unresolvable_instantiated_filament(self): + self.t.write_preset("VendorA", preset("DNEW @P1", compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("resolves no filament_id", out) + self.assertIn("hard load error", out) + + def test_missing_snapshot_is_an_error(self): + os.remove(self.t.snapshot) + errors, out = self.t.check() + self.assertEqual(errors, 1) + self.assertIn("snapshot not found", out) + + +class TestCheck5(OfCleanTreeCase): + def test_5a_empty_vendor_is_hard_error(self): + fid = afi.generate_filament_id("", "PLA", "NVPLA") + self.t.write_preset("VendorA", preset("NVPLA @base", filament_id=fid, + instantiation=False, + filament_type="PLA")) + self.t.write_preset("VendorA", preset("NVPLA @P1", inherits="NVPLA @base", + compatible_printers=["P1"])) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("resolves empty filament_vendor", out) + self.assertIn('filament_vendor "Generic"', out) + # No grandfathering: sanctioning the tree does not silence check 5a. + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 1, out) + self.assertIn("resolves empty filament_vendor", out) + + def test_5b_divergent_filament_triples(self): + id1 = afi.generate_filament_id("MV", "PLA", "MPLA") + id2 = afi.generate_filament_id("MV", "PETG", "MPLA") + self.t.write_preset("VendorA", preset("MPLA @base1", filament_id=id1, + instantiation=False, + filament_vendor="MV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("MPLA @base2", filament_id=id2, + instantiation=False, + filament_vendor="MV", + filament_type="PETG")) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn("divergent triples", out) + self.assertIn("MV/PLA/MPLA", out) + self.assertIn("MV/PETG/MPLA", out) + # No grandfathering: sanctioning the tree does not silence check 5b. + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 1, out) + self.assertIn("divergent triples", out) + + def test_5_cross_bundle_divergence_is_warning_only(self): + fid = afi.generate_filament_id("BV", "PETG", "APLA") + self.t.add_vendor("VendorB", [ + preset("APLA @base", filament_id=fid, instantiation=False, + filament_vendor="BV", filament_type="PETG"), + preset("APLA @PB", inherits="APLA @base", + compatible_printers=["PB 0.4 nozzle"]), + ]) + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + self.assertIn("[WARNING]", out) + self.assertIn("across bundles", out) + self.assertIn('"APLA"', out) + + +class TestCheck6(OfCleanTreeCase): + def _write_map(self, rows): + path = os.path.join(self.t.dir, "bambu_filament_ids.json") + ubfi.write_map(path, rows, "testcommit", "2026-09-04") + return path + + def _write_raw_map(self, payload): + """Write a map write_map() would never produce (hand-edited or mis-generated).""" + path = os.path.join(self.t.dir, "bambu_filament_ids.json") + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(payload, f, indent=2, ensure_ascii=False, sort_keys=True) + return path + + def test_row_triple_must_match_tree(self): + fid = afi.generate_filament_id("V", "PLA", "Foo") + self.t.write_preset("VendorA", preset("Foo @base", filament_id=fid, + instantiation=False, + filament_vendor="V", filament_type="PLA")) + self.t.write_preset("VendorA", preset("Foo @P1", inherits="Foo @base", + compatible_printers=["P1"])) + map_path = self._write_map( + {fid: {"bambu_id": "GFZ00", "vendor": "V", "type": "PLA", "name": "Bar"}}) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn("regenerate the map", out) + + def test_non_of_map_key_is_an_error(self): + # The map is keyed by OUR ids; a Bambu id in the key column means the + # map was generated or hand-edited the wrong way round. + map_path = self._write_map({ + "GFB00": {"bambu_id": "GFB00", "vendor": "V", "type": "PLA", + "name": "Foo"}}) + errors, out = self.t.check(map_path) + self.assertEqual(errors, 1, out) + self.assertIn('"GFB00" is not a minted "OF" id', out) + + def test_duplicate_bambu_id_is_an_error(self): + map_path = self._write_map({ + "OFaaaaaa": {"bambu_id": "GFZ00", "vendor": "V", "type": "PLA", "name": "Foo"}, + "OFbbbbbb": {"bambu_id": "GFZ00", "vendor": "V", "type": "PETG", "name": "Bar"}, + }) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn("GFZ00", out) + + def test_row_for_unshipped_product_is_fine(self): + map_path = self._write_map({ + "OFcccccc": {"bambu_id": "GFZ99", "vendor": "Nobody", "type": "PLA", + "name": "Ships Nothing"}, + }) + errors, out = self.t.check(map_path) + self.assertEqual(errors, 0, out) + + def test_non_object_top_level_is_a_clean_error(self): + # A hand-edited map that is a list (or any non-object) must report the map, + # not raise AttributeError out of the check. + map_path = self._write_raw_map([{"bambu_id": "GFZ00"}]) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn("does not parse", out) + self.assertIn("regenerate the map", out) + + def test_empty_filaments_section_is_an_error(self): + # What a regeneration against the wrong --bambustudio-dir writes: a well-formed + # header with zero rows. At runtime every translation silently becomes identity. + map_path = self._write_map({}) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn('no "filaments" rows', out) + + def test_absent_filaments_section_is_an_error(self): + map_path = self._write_raw_map({ + "source": "https://github.com/bambulab/BambuStudio", + "bambustudio_commit": "testcommit", + "generated": "2026-09-04", + }) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn('no "filaments" rows', out) + + def test_row_without_bambu_id_is_an_error(self): + # Two such rows used to collide on None and be reported as a duplicate id. + map_path = self._write_map({ + "OFaaaaaa": {"vendor": "V", "type": "PLA", "name": "Foo"}, + "OFbbbbbb": {"vendor": "V", "type": "PETG", "name": "Bar"}, + }) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn('"OFaaaaaa" declares no "bambu_id"', out) + self.assertIn('"OFbbbbbb" declares no "bambu_id"', out) + self.assertNotIn("mapped by both", out) + + def test_empty_bambu_id_is_an_error(self): + # "" would land in the runtime map and translate an empty tray id into a filament. + map_path = self._write_map({ + "OFaaaaaa": {"bambu_id": "", "vendor": "V", "type": "PLA", "name": "Foo"}, + }) + errors, out = self.t.check(map_path) + self.assertGreater(errors, 0) + self.assertIn('declares no "bambu_id"', out) + + +# --------------------------------------------------------------------------- +# --update-snapshot +# --------------------------------------------------------------------------- + +class TestUpdateSnapshot(SyntheticTreeCase): + def test_idempotent_and_deterministic(self): + with open(self.t.snapshot, "rb") as f: + first = f.read() + rc, out = self.t.update_snapshot() + self.assertEqual(rc, 0) + self.assertIn("nothing changed", out) + with open(self.t.snapshot, "rb") as f: + self.assertEqual(f.read(), first) + self.assertTrue(first.endswith(b"\n")) + self.assertNotIn(b"\r", first) + snap = json.loads(first.decode("utf-8")) + self.assertEqual(list(snap), ["ids"]) # state only, no exception lists + self.assertEqual(list(snap["ids"]), sorted(snap["ids"])) + self.assertEqual(snap["ids"]["AX01"], { + "filaments": ["VendorA/APLA"], "name": "APLA", + "filament_type": "PLA", "filament_vendor": "AVendor"}) + self.assertEqual(snap["ids"]["OGFL99"], { + "filaments": ["OrcaFilamentLibrary/Generic PLA", "VendorA/Generic PLA"], + "name": "Generic PLA", "filament_type": "PLA", "filament_vendor": "Generic"}) + # Key order is part of the on-disk format. + self.assertEqual(list(snap["ids"]["AX01"]), + ["filaments", "name", "filament_type", "filament_vendor"]) + + def test_refuses_a_tree_it_could_not_read(self): + # A bundle that does not parse contributes no ids, so sanctioning the + # rest would record the loss as a deliberate removal. + with open(self.t.snapshot, "rb") as f: + before = f.read() + with open(os.path.join(self.t.profiles, "VendorA", + "filament", "APLA @base.json"), "w", + encoding="utf-8") as f: + f.write("{ not json") + rc, out = self.t.update_snapshot() + self.assertEqual(rc, 1, out) + self.assertIn("unreadable filament profile", out) + with open(self.t.snapshot, "rb") as f: + self.assertEqual(f.read(), before) + + def test_refuses_an_id_declared_under_two_triples(self): + # VendorB re-declares APLA's id for a different product: one id, two + # triples. No single entry can describe it, and check 3 rejects it anyway. + self.t.add_vendor("VendorB", [ + preset("BPLA @base", filament_id="AX01", instantiation=False, + filament_vendor="BVendor", filament_type="PLA"), + preset("BPLA @P1", inherits="BPLA @base", compatible_printers=["P1"]), + ]) + with open(self.t.snapshot, "rb") as f: + before = f.read() + rc, out = self.t.update_snapshot() + self.assertEqual(rc, 1) + self.assertIn('refusing to sanction filament_id "AX01": declared under 2 triples ' + '(AVendor/PLA/APLA; BVendor/PLA/BPLA)', out) + with open(self.t.snapshot, "rb") as f: + self.assertEqual(f.read(), before) # nothing written on refusal + + def test_refuses_reserved_namespace_ids(self): + self.t.write_preset("VendorA", preset("CNEW @base", filament_id="GFX99", + instantiation=False, + filament_vendor="CV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("CNEW @P1", inherits="CNEW @base", + compatible_printers=["P1"])) + with open(self.t.snapshot, "rb") as f: + before = f.read() + rc, out = self.t.update_snapshot() + self.assertEqual(rc, 1) + self.assertIn("refusing to sanction", out) + with open(self.t.snapshot, "rb") as f: + self.assertEqual(f.read(), before) # nothing written on refusal + + def test_dry_run_reports_without_writing(self): + self.t.write_preset("VendorA", preset("ANEW @P2", inherits="APLA @base", + compatible_printers=["P2"])) + with open(self.t.snapshot, "rb") as f: + before = f.read() + rc, out = self.t.update_snapshot(dry_run=True) + self.assertEqual(rc, 0) + self.assertIn("would be rewritten", out) + self.assertIn("claims added : 1", out) + with open(self.t.snapshot, "rb") as f: + self.assertEqual(f.read(), before) + # the real run writes exactly what the dry run reported + rc, out = self.t.update_snapshot() + self.assertEqual(rc, 0) + self.assertIn("snapshot written", out) + snap = load_json_file(self.t.snapshot) + self.assertEqual(snap["ids"]["AX01"]["filaments"], + ["VendorA/ANEW", "VendorA/APLA"]) + + +# --------------------------------------------------------------------------- +# --generate: one rule for inserts and rewrites alike +# --------------------------------------------------------------------------- + +class TestAssign(OfCleanTreeCase): + def test_noop_on_fully_idded_tree(self): + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (0, 0)) + self.assertIn("filament_ids inserted : 0", out) + self.assertIn("filament_ids re-minted : 0", out) + + def test_mints_into_filament_root_and_rootless_member(self): + self.t.write_preset("VendorA", preset("FNEW @base", instantiation=False, + filament_vendor="FV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("FNEW @P1", inherits="FNEW @base", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("FNEW @P2", inherits="FNEW @base", + compatible_printers=["P2"])) + self.t.write_preset("VendorA", preset("GNEW @P1", compatible_printers=["P1"], + filament_vendor="GV", + filament_type="PETG")) + changed, errors, _out = self.t.assign() + self.assertEqual(errors, 0) + self.assertEqual(changed, 2) # one root + one root-less member + root = load_json_file(self.t.preset_path("VendorA", "FNEW @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id("FV", "PLA", "FNEW")) + member = load_json_file(self.t.preset_path("VendorA", "GNEW @P1")) + self.assertEqual(member["filament_id"], + afi.generate_filament_id("GV", "PETG", "GNEW")) + # variants themselves never get the key + child = load_json_file(self.t.preset_path("VendorA", "FNEW @P1")) + self.assertNotIn("filament_id", child) + # idempotent: second run is a no-op + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (0, 0)) + self.assertIn("filament_ids inserted : 0", out) + + def test_refuses_filament_with_incomplete_triple(self): + self.t.write_preset("VendorA", preset("ENEW @base", instantiation=False)) + self.t.write_preset("VendorA", preset("ENEW @P1", inherits="ENEW @base", + compatible_printers=["P1"])) + changed, errors, out = self.t.assign() + self.assertEqual(changed, 0) + self.assertGreater(errors, 0) + self.assertIn("resolves empty filament_vendor and filament_type", out) + self.assertIn("mint key needs both", out) + + def test_refuses_to_re_mint_a_declaration_with_an_incomplete_triple(self): + # The rewrite half of the same guard: a declared id that is not its + # triple's mint still cannot be re-derived without a filament_vendor. + self.t.write_preset("VendorA", preset("QNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_type="PLA")) + self.t.write_preset("VendorA", preset("QNEW @P1", inherits="QNEW @base", + compatible_printers=["P1"])) + before = self.t.bytes_map() + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (0, 1), out) + self.assertIn("resolves empty filament_vendor", out) + self.assertIn("mint key needs both", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_refuses_filament_with_divergent_root_fields(self): + self.t.write_preset("VendorA", preset("HNEW @base1", instantiation=False, + filament_vendor="HV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("HNEW @base2", instantiation=False, + filament_vendor="HV", + filament_type="PETG")) + self.t.write_preset("VendorA", preset("HNEW @P1", inherits="HNEW @base1", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("HNEW @P2", inherits="HNEW @base2", + compatible_printers=["P2"])) + changed, errors, out = self.t.assign() + self.assertEqual(changed, 0) + self.assertGreater(errors, 0) + self.assertIn("divergent (filament_vendor, filament_type)", out) + + def test_parent_of_another_filament_never_receives_the_key(self): + # Members whose id-less parent belongs to another filament (here one + # parent shared by two filaments) carry the key themselves: the + # parent's own triple would mint a different id (check 3). + self.t.write_preset("VendorA", preset("shared_base", instantiation=False, + filament_vendor="SV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("HNEW @P1", inherits="shared_base", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("INEW @P1", inherits="shared_base", + compatible_printers=["P1"])) + changed, errors, out = self.t.assign() + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 2) + for filament_name in ("HNEW", "INEW"): + member = load_json_file(self.t.preset_path("VendorA", f"{filament_name} @P1")) + self.assertEqual(member["filament_id"], + afi.generate_filament_id("SV", "PLA", filament_name)) + parent = load_json_file(self.t.preset_path("VendorA", "shared_base")) + self.assertNotIn("filament_id", parent) + # ... and the tree they leave behind passes the identity check. + rc, _out = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + + def test_non_of_declaration_is_re_minted(self): + # A declaration that isn't OF-format (e.g. a vendor bundle synced from + # an upstream catalog, like BBL's GF ids) is not the mint of its own + # triple, so the same pass rewrites it in place. + self.t.write_preset("VendorA", preset("Synced PLA @base", filament_id="GFZZ00", + instantiation=False, + filament_vendor="ZV", filament_type="PLA")) + self.t.write_preset("VendorA", preset("Synced PLA @P1", + inherits="Synced PLA @base", + compatible_printers=["P1"])) + changed, errors, out = self.t.assign() + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 1) + path = self.t.preset_path("VendorA", "Synced PLA @base") + root = load_json_file(path) + want = afi.generate_filament_id("ZV", "PLA", "Synced PLA") + self.assertEqual(root["filament_id"], want) + # the value was replaced in place, not appended as a second key + with open(path, encoding="utf-8") as f: + raw = f.read() + self.assertEqual(raw.count('"filament_id"'), 1) + # idempotent: the id is its triple's mint now, so a second run is a no-op + changed, errors, _out = self.t.assign() + self.assertEqual((changed, errors), (0, 0)) + + def test_non_of_multi_root_filament_converges_on_one_id(self): + # Two per-printer roots of one product (same triple), both carrying + # the SAME non-OF id — the shape a synced vendor bundle ships (e.g. + # BambuStudio's own per-printer @base files). They must converge on + # one freshly minted id, not split into two. + self.t.write_preset("VendorA", preset("Synced ABS @P1base", filament_id="GFSYNC0", + instantiation=False, + filament_vendor="ZV", filament_type="ABS")) + self.t.write_preset("VendorA", preset("Synced ABS @P2base", filament_id="GFSYNC0", + instantiation=False, + filament_vendor="ZV", filament_type="ABS")) + self.t.write_preset("VendorA", preset("Synced ABS @P1", + inherits="Synced ABS @P1base", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("Synced ABS @P2", + inherits="Synced ABS @P2base", + compatible_printers=["P2"])) + changed, errors, out = self.t.assign() + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 2) + want = afi.generate_filament_id("ZV", "ABS", "Synced ABS") + b1 = load_json_file(self.t.preset_path("VendorA", "Synced ABS @P1base")) + b2 = load_json_file(self.t.preset_path("VendorA", "Synced ABS @P2base")) + self.assertEqual(b1["filament_id"], want) + self.assertEqual(b2["filament_id"], want) + + def test_converges_on_an_existing_tree_id_for_the_same_triple(self): + # An id-less filament whose product is already shipped (with its + # conforming id) in another bundle converges on that id. One product, + # one id, in every bundle. + want = afi.generate_filament_id("CV", "PLA", "CPLA") + self.t.add_vendor("VendorB", [ + preset("CPLA @base", filament_id=want, instantiation=False, + filament_vendor="CV", filament_type="PLA"), + preset("CPLA @PB", inherits="CPLA @base", + compatible_printers=["PB 0.4 nozzle"]), + ]) + self.t.write_preset("VendorA", preset("CPLA @base", instantiation=False, + filament_vendor="CV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("CPLA @P1", inherits="CPLA @base", + compatible_printers=["P1"])) + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (1, 0), out) + root = load_json_file(self.t.preset_path("VendorA", "CPLA @base")) + self.assertEqual(root["filament_id"], want) + + def test_a_squatted_id_is_still_minted_for_its_own_product(self): + # VendorB's "Other" declares the id that belongs to VendorA's "DPLA" — + # a copy-paste, not a claim. The id is the mint of DPLA's triple and + # nothing else, so DPLA gets it whatever VendorB carries. + want0 = afi.generate_filament_id("DV", "PLA", "DPLA") + self.t.add_vendor("VendorB", [ + preset("Other @base", filament_id=want0, instantiation=False, + filament_vendor="OV", filament_type="ABS"), + ]) + self.t.write_preset("VendorA", preset("DPLA @base", instantiation=False, + filament_vendor="DV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("DPLA @P1", inherits="DPLA @base", + compatible_printers=["P1"])) + changed, errors, out = self.t.assign(["VendorA"]) + self.assertEqual((changed, errors), (1, 0), out) + root = load_json_file(self.t.preset_path("VendorA", "DPLA @base")) + self.assertEqual(root["filament_id"], want0) + # VendorB's declaration is VendorB's own mismatch: a run not allowed to + # touch it leaves it to --check, and a run over VendorB re-mints it. + _errors, out = self.t.check() + self.assertIn('"Other @base" (VendorB/filament/Other @base.json) does not match ' + 'the mint of its triple', out) + changed, errors, out = self.t.assign(["VendorB"]) + self.assertEqual((changed, errors), (1, 0), out) + other = load_json_file(self.t.preset_path("VendorB", "Other @base")) + self.assertEqual(other["filament_id"], + afi.generate_filament_id("OV", "ABS", "Other")) + + def test_generate_refuses_to_write_into_a_collision(self): + # "X" ships on the id its triple mints; a new product "Y" whose triple + # mints the very same id is a base62 collision. The run does not salt + # past it: it reports both products, writes nothing for "Y", and leaves + # the remedy — a rename, so the triples differ — to the author. + collide = {("V", "PLA", "X"), ("W", "ABS", "Y")} + real = afi.generate_filament_id + + def colliding(vendor, ftype, name): + return "OFcolid0" if (vendor, ftype, name) in collide else real(vendor, ftype, name) + + afi.generate_filament_id = colliding + self.addCleanup(setattr, afi, "generate_filament_id", real) + self.t.write_preset("VendorA", preset("X @base", filament_id="OFcolid0", + instantiation=False, + filament_vendor="V", filament_type="PLA")) + self.t.write_preset("VendorA", preset("X @P1", inherits="X @base", + compatible_printers=["P1"])) + self.t.write_preset("VendorA", preset("Y @base", instantiation=False, + filament_vendor="W", filament_type="ABS")) + self.t.write_preset("VendorA", preset("Y @P1", inherits="Y @base", + compatible_printers=["P1"])) + before = self.t.bytes_map() + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (0, 1), out) + self.assertIn("V/PLA/X", out) + self.assertIn("W/ABS/Y", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_mismatching_of_declaration_is_re_derived(self): + # One rule: an id that is not the mint of its own triple is rewritten. + self.t.write_preset("VendorA", preset("KNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_vendor="KV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("KNEW @P1", inherits="KNEW @base", + compatible_printers=["P1"])) + want = afi.generate_filament_id("KV", "PLA", "KNEW") + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (1, 0), out) + self.assertIn('"OFZZZZZZ" -> "%s"' % want, out) + root = load_json_file(self.t.preset_path("VendorA", "KNEW @base")) + self.assertEqual(root["filament_id"], want) + changed, errors, _out = self.t.assign() + self.assertEqual((changed, errors), (0, 0)) + + def test_vendor_filter_limits_rewrites_and_inserts_alike(self): + # A mismatching declarer in VendorA and an id-less filament in VendorB; + # only VendorA is written, and VendorB's bytes are untouched. + self.t.write_preset("VendorA", preset("LNEW @base", filament_id="OFZZZZZZ", + instantiation=False, + filament_vendor="LV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("LNEW @P1", inherits="LNEW @base", + compatible_printers=["P1"])) + self.t.add_vendor("VendorB", [ + preset("MNEW @base", instantiation=False, + filament_vendor="MV", filament_type="PLA"), + preset("MNEW @PB", inherits="MNEW @base", + compatible_printers=["PB 0.4 nozzle"]), + ]) + before = self.t.bytes_map() + changed, errors, out = self.t.assign(["VendorA"]) + self.assertEqual((changed, errors), (1, 0), out) + root = load_json_file(self.t.preset_path("VendorA", "LNEW @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id("LV", "PLA", "LNEW")) + after = self.t.bytes_map() + for rel, raw in before.items(): + if rel.split(os.sep)[0].startswith("VendorB"): + self.assertEqual(after[rel], raw, rel) + # ... and the deferred half is exactly what a VendorB run then writes + changed, errors, out = self.t.assign(["VendorB"]) + self.assertEqual((changed, errors), (1, 0), out) + b_root = load_json_file(self.t.preset_path("VendorB", "MNEW @base")) + self.assertEqual(b_root["filament_id"], + afi.generate_filament_id("MV", "PLA", "MNEW")) + + def test_unknown_vendor_reports_and_writes_nothing(self): + # A real insert is pending, so "wrote nothing" means the unknown vendor + # aborted the run before any write — not that the tree was already done. + self.t.write_preset("VendorA", preset("PNEW @base", instantiation=False, + filament_vendor="PV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("PNEW @P1", inherits="PNEW @base", + compatible_printers=["P1"])) + before = self.t.bytes_map() + changed, errors, out = self.t.assign(["Nope"]) + self.assertEqual((changed, errors), (0, 1)) + self.assertIn("unknown vendor", out) + self.assertEqual(self.t.bytes_map(), before) + # ... and that pending insert is real: a known-vendor run makes it. + changed, errors, out = self.t.assign(["VendorA"]) + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual( + load_json_file(self.t.preset_path("VendorA", "PNEW @base"))["filament_id"], + afi.generate_filament_id("PV", "PLA", "PNEW")) + + def test_dry_run_reports_the_real_run_and_writes_nothing(self): + self.t.write_preset("VendorA", preset("NNEW @base", instantiation=False, + filament_vendor="NV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset("NNEW @P1", inherits="NNEW @base", + compatible_printers=["P1"])) + before = self.t.bytes_map() + dry_changed, errors, out = self.t.assign(dry_run=True) + self.assertEqual((dry_changed, errors), (1, 0), out) + self.assertIn("would insert", out) + self.assertEqual(self.t.bytes_map(), before) + changed, errors, out = self.t.assign() + self.assertEqual((changed, errors), (dry_changed, 0), out) + root = load_json_file(self.t.preset_path("VendorA", "NNEW @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id("NV", "PLA", "NNEW")) + + +# --------------------------------------------------------------------------- +# byte-preserving profile edits +# --------------------------------------------------------------------------- + +class TestInsertEditing(unittest.TestCase): + CRLF_TEXT = ( + '{\r\n' + '\t"type": "filament",\r\n' + '\t"name": "JNEW @base",\r\n' + '\t"inherits": "fdm_pla",\r\n' + '\t"from": "system",\r\n' + '\t"instantiation": "false",\r\n' + '\t"filament_type": [\r\n' + '\t\t"PLA"\r\n' + '\t]\r\n' + '}\r\n' + ) + CRLF_WITH_ID = ( + '{\r\n' + '\t"type": "filament",\r\n' + '\t"name": "JNEW @base",\r\n' + '\t"filament_id": "OFold123",\r\n' + '\t"instantiation": "false",\r\n' + '\t"filament_type": [\r\n' + '\t\t"PLA"\r\n' + '\t]\r\n' + '}\r\n' + ) + + def test_insert_before_instantiation_preserves_bytes(self): + text, n = afi.insert_filament_id(self.CRLF_TEXT, "OFabc123") + self.assertEqual(n, 1) + json.loads(text) + inserted = '\t"filament_id": "OFabc123",\r\n' + self.assertIn(inserted + '\t"instantiation"', text) + # every original byte is preserved: removing the inserted line restores + # the input exactly (CRLF stays CRLF, tabs stay tabs) + self.assertEqual(text.replace(inserted, "", 1), self.CRLF_TEXT) + + def test_insert_after_name_when_no_instantiation_line(self): + lf_text = '{\n "type": "filament",\n "name": "K",\n "from": "system"\n}\n' + text, n = afi.insert_filament_id(lf_text, "OFabc123") + self.assertEqual(n, 1) + json.loads(text) + self.assertIn('"name": "K",\n "filament_id": "OFabc123",\n', text) + self.assertNotIn("\r", text) + + def test_insert_no_anchor_fails(self): + _text, n = afi.insert_filament_id('{"type": "filament"}', "OFabc123") + self.assertEqual(n, 0) + + def test_write_filament_id_keeps_crlf_on_disk(self): + t = SyntheticTree() + self.addCleanup(t.cleanup) + t.add_vendor("VendorA", []) + path = t.preset_path("VendorA", "JNEW @base") + with open(path, "wb") as f: + f.write(self.CRLF_TEXT.encode("utf-8")) + t.add_to_index("VendorA", "JNEW @base") + afi.write_filament_id(path, "OFabc123") + with open(path, "rb") as f: + raw = f.read() + self.assertEqual(raw.count(b"\n"), raw.count(b"\r\n")) # still CRLF-only + self.assertEqual( + raw.replace(b'\t"filament_id": "OFabc123",\r\n', b"", 1), + self.CRLF_TEXT.encode("utf-8")) + + def test_replace_value_preserves_every_other_byte(self): + text, n = afi.replace_filament_id_value(self.CRLF_WITH_ID, + "OFold123", "OFnew456") + self.assertEqual(n, 1) + self.assertEqual(json.loads(text)["filament_id"], "OFnew456") + self.assertEqual(text, self.CRLF_WITH_ID.replace('"OFold123"', '"OFnew456"')) + + def test_replace_value_requires_exact_old_value(self): + _text, n = afi.replace_filament_id_value(self.CRLF_WITH_ID, + "OFwrong1", "OFnew456") + self.assertEqual(n, 0) + + def test_rewrite_filament_id_on_disk(self): + t = SyntheticTree() + self.addCleanup(t.cleanup) + t.add_vendor("VendorA", []) + path = t.preset_path("VendorA", "JNEW @base") + with open(path, "wb") as f: + f.write(self.CRLF_WITH_ID.encode("utf-8")) + afi.rewrite_filament_id(path, "OFold123", "OFnew456") + with open(path, "rb") as f: + raw = f.read() + self.assertEqual(raw, + self.CRLF_WITH_ID.replace('"OFold123"', '"OFnew456"') + .encode("utf-8")) + with self.assertRaises(RuntimeError): + afi.rewrite_filament_id(path, "OFold123", "OFxxx999") # stale old id + + def test_delete_line_with_trailing_comma(self): + text, n = afi.delete_key_line(self.CRLF_WITH_ID, "filament_id", "OFold123") + self.assertEqual(n, 1) + self.assertNotIn("filament_id", json.loads(text)) + self.assertEqual(text, self.CRLF_WITH_ID.replace( + '\t"filament_id": "OFold123",\r\n', "", 1)) + + def test_delete_last_property_line(self): + lf_text = ('{\n "name": "K @base",\n "instantiation": "false",\n' + ' "filament_id": "OFold123"\n}\n') + text, n = afi.delete_key_line(lf_text, "filament_id", "OFold123") + self.assertEqual(n, 1) + data = json.loads(text) + self.assertNotIn("filament_id", data) + self.assertEqual(data["instantiation"], "false") + # the preceding comma goes with it, and nothing else moves + self.assertEqual(text, '{\n "name": "K @base",\n' + ' "instantiation": "false"\n}\n') + + def test_dry_run_edits_verify_but_write_nothing(self): + t = SyntheticTree() + self.addCleanup(t.cleanup) + t.add_vendor("VendorA", []) + fresh = t.preset_path("VendorA", "JNEW @base") + with open(fresh, "wb") as f: + f.write(self.CRLF_TEXT.encode("utf-8")) + idded = t.preset_path("VendorA", "JOLD @base") + with open(idded, "wb") as f: + f.write(self.CRLF_WITH_ID.encode("utf-8")) + + afi.write_filament_id(fresh, "OFabc123", dry_run=True) + afi.rewrite_filament_id(idded, "OFold123", "OFnew456", dry_run=True) + with open(fresh, "rb") as f: + self.assertEqual(f.read(), self.CRLF_TEXT.encode("utf-8")) + with open(idded, "rb") as f: + self.assertEqual(f.read(), self.CRLF_WITH_ID.encode("utf-8")) + # the edit is still applied and verified in memory: only the write is + # skipped, so a stale old id fails just as loudly + with self.assertRaises(RuntimeError): + afi.rewrite_filament_id(idded, "OFstale1", "OFnew456", dry_run=True) + + +# --------------------------------------------------------------------------- +# --generate: re-minting non-conformant declarations +# --------------------------------------------------------------------------- + +class TestRemint(SyntheticTreeCase): + TRIPLE = ("AVendor", "PLA", "APLA") + + def test_rewrites_mismatching_declaration(self): + want = afi.generate_filament_id(*self.TRIPLE) + changed, errors, out = self.t.remint(["VendorA"]) + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 1) + self.assertIn('"AX01" -> "%s"' % want, out) + root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(root["filament_id"], want) + # OFL was not part of the run + ofl_root = load_json_file(self.t.preset_path(OFL, "Generic PLA @base")) + self.assertEqual(ofl_root["filament_id"], "OGFL99") + # idempotent: a second run over the same vendor rewrites nothing + changed, errors, _out = self.t.remint(["VendorA"]) + self.assertEqual((changed, errors), (0, 0)) + + def test_second_id_of_one_product_is_converged_by_remint(self): + # A second preset of one product kept on an id of its own is not a + # sanctioned split: the triple determines the id, so --generate pulls it + # back. An AMS ambiguity this exposes is fixed in the profiles instead. + want = afi.generate_filament_id(*self.TRIPLE) + self.t.write_preset("VendorA", preset("APLA @legacy", filament_id="OFlegac1", + inherits="APLA @base", + compatible_printers=["P2 0.4 nozzle"])) + changed, errors, out = self.t.remint(["VendorA"]) + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 2) # the non-conformant AX01 root and @legacy + legacy = load_json_file(self.t.preset_path("VendorA", "APLA @legacy")) + self.assertEqual(legacy["filament_id"], want) + + def test_same_triple_converges_within_run(self): + self.t.add_vendor("VendorB", [ + preset("APLA @Bbase", filament_id="BX01", instantiation=False, + filament_vendor="AVendor", filament_type="PLA"), + preset("APLA @PB", inherits="APLA @Bbase", + compatible_printers=["PB 0.4 nozzle"]), + ]) + want = afi.generate_filament_id(*self.TRIPLE) + changed, errors, _out = self.t.remint(["VendorA", "VendorB"]) + self.assertEqual(errors, 0) + self.assertEqual(changed, 2) + a = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + b = load_json_file(self.t.preset_path("VendorB", "APLA @Bbase")) + self.assertEqual(a["filament_id"], want) + self.assertEqual(b["filament_id"], want) + + def test_same_triple_converges_with_existing_tree_id(self): + # Another bundle already carries the conforming id for the same triple: + # reuse is required, not blocked. + want = afi.generate_filament_id(*self.TRIPLE) + self.t.add_vendor("VendorB", [ + preset("APLA @Bbase", filament_id=want, instantiation=False, + filament_vendor="AVendor", filament_type="PLA"), + ]) + changed, errors, _out = self.t.remint(["VendorA"]) + self.assertEqual((changed, errors), (1, 0)) + a = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(a["filament_id"], want) + + def test_not_blocked_by_a_non_conformant_occurrence(self): + # VendorB carries APLA's id under a PETG triple of its own: that + # declaration is wrong, and it costs VendorA's APLA nothing — the id is + # the mint of APLA's triple, whoever else is squatting on it. + want0 = afi.generate_filament_id(*self.TRIPLE) + self.t.add_vendor("VendorB", [ + preset("BPLA @base", filament_id=want0, instantiation=False, + filament_vendor="BV", filament_type="PETG"), + ]) + changed, errors, out = self.t.remint(["VendorA"]) + self.assertEqual((changed, errors), (1, 0), out) + root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(root["filament_id"], want0) + # A run over VendorB re-mints the squatter to its own triple. + changed, errors, out = self.t.remint(["VendorB"]) + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual( + load_json_file(self.t.preset_path("VendorB", "BPLA @base"))["filament_id"], + afi.generate_filament_id("BV", "PETG", "BPLA")) + + def test_bbl_is_reminted_like_any_vendor(self): + self.t.add_vendor("BBL", [ + preset("Bambu ABS @base", filament_id="GFB00", instantiation=False, + filament_vendor="Bambu Lab", filament_type="ABS"), + preset("Bambu ABS @P1", inherits="Bambu ABS @base", + compatible_printers=["P1"]), + ]) + changed, errors, out = self.t.remint(["BBL"]) + self.assertEqual(errors, 0, out) + self.assertEqual(changed, 1) + root = load_json_file(self.t.preset_path("BBL", "Bambu ABS @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id("Bambu Lab", "ABS", "Bambu ABS")) + + def test_dry_run_leaves_every_file_untouched(self): + before = self.t.bytes_map() + changed, errors, out = self.t.remint(["VendorA"], dry_run=True) + self.assertEqual((changed, errors), (1, 0), out) + self.assertIn("would rewrite", out) + self.assertEqual(self.t.bytes_map(), before) + # the real run then makes exactly that one change + changed, errors, _out = self.t.remint(["VendorA"]) + self.assertEqual((changed, errors), (1, 0)) + root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id(*self.TRIPLE)) + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +class TestCli(unittest.TestCase): + """main(argv) over a synthetic tree. The clean tree's baseline ids are + deliberately non-conformant ("AX01"/"OGFL99"), so a --generate run always + has both a filament_id rewrite and setting_id inserts to do.""" + + def setUp(self): + self.t = make_clean_tree() + self.addCleanup(self.t.cleanup) + + def test_bare_invocation_prints_help(self): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.main([]) + self.assertEqual(rc, 0) + self.assertIn("usage:", buf.getvalue()) + self.assertIn("--generate", buf.getvalue()) + # ... and so does any invocation naming no mode: help, and no work + before = self.t.bytes_map() + rc, out = self.t.cli() + self.assertEqual(rc, 0) + self.assertIn("usage:", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_another_tree_needs_its_own_snapshot(self): + # --profiles retargets the tree, but the sanctioned state of that tree + # is not the repo snapshot: checking against it is meaningless and + # re-recording into it would overwrite the tracked file. + with open(afi.SNAPSHOT_PATH, "rb") as f: + repo_snapshot = f.read() + for mode in ("--check", "--update-snapshot"): + with self.assertRaises(SystemExit) as caught: + with contextlib.redirect_stderr(io.StringIO()): + afi.main([mode, "--profiles", self.t.profiles]) + self.assertEqual(caught.exception.code, 2, mode) + with open(afi.SNAPSHOT_PATH, "rb") as f: + self.assertEqual(f.read(), repo_snapshot) + # Named explicitly, both modes run against that tree. + rc, out = self.t.cli("--update-snapshot") + self.assertEqual(rc, 0, out) + # --generate never reads the snapshot, so it keeps working without one. + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.main(["--dry-run", "--profiles", self.t.profiles]) + self.assertEqual(rc, 0, buf.getvalue()) + + def test_filament_id_and_setting_id_together_are_rejected(self): + # Each flag's help promises it skips the other kind, so the pair cannot + # quietly mean "both". + with self.assertRaises(SystemExit) as caught: + with contextlib.redirect_stderr(io.StringIO()): + afi.main(["--generate", "--filament-id", "--setting-id", + "--profiles", self.t.profiles]) + self.assertEqual(caught.exception.code, 2) + + def test_a_run_with_errors_does_not_report_success(self): + # An unreadable profile must not be buried under a green summary line. + path = self.t.preset_path("VendorA", "APLA @base") + with open(path, "w", encoding="utf-8") as f: + f.write("{ not json") + rc, out = self.t.cli("--generate") + self.assertEqual(rc, 1, out) + self.assertIn("error(s)", out) + self.assertNotIn("SUCCESS", out) + + def test_dry_run_alone_previews_generate(self): + before = self.t.bytes_map() + rc, out = self.t.cli("--dry-run") + self.assertEqual(rc, 0, out) + self.assertIn("would ", out) + self.assertIn("nothing written", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_the_reported_count_is_files_not_edits(self): + # A file both passes touch is still one file. "SoloPLA @P1" needs a + # filament_id rewrite AND a setting_id insert, so an edit-counting + # summary would over-report the tree. + self.t.write_preset("VendorA", preset( + "SoloPLA @P1", filament_id="AX01", filament_vendor="AVendor", + filament_type="PLA", compatible_printers=["P1"])) + before = self.t.bytes_map() + + rc, out = self.t.cli("--generate") + + self.assertEqual(rc, 0, out) + after = self.t.bytes_map() + touched = {p for p in after if after[p] != before.get(p)} + self.assertIn("VendorA/filament/SoloPLA @P1.json".replace("/", os.sep), touched) + self.assertIn("rewrite VendorA/filament/SoloPLA @P1.json", out) + self.assertIn("update VendorA/filament/SoloPLA @P1.json", out) + summary = [l for l in out.splitlines() if "file(s) changed" in l] + self.assertEqual(len(summary), 1, out) + self.assertIn(f"{len(touched)} file(s) changed", summary[0]) + + def test_dryrun_is_the_same_flag(self): + before = self.t.bytes_map() + rc, out = self.t.cli("--dryrun") + self.assertEqual(rc, 0, out) + self.assertIn("would ", out) # the same preview, not a silent no-op + self.assertIn("nothing written", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_generate_vendor_writes_only_in_that_bundle(self): + before = self.t.bytes_map() + rc, out = self.t.cli("--generate", "--vendor", "VendorA") + self.assertEqual(rc, 0, out) + after = self.t.bytes_map() + changed = sorted(rel for rel in before if after[rel] != before[rel]) + self.assertTrue(changed, out) + for rel in changed: + self.assertTrue(rel.startswith("VendorA" + os.sep), rel) + # The bundles it spared were not simply already conformant: the + # un-narrowed run goes on to write in them too. + rc, out = self.t.cli("--generate") + self.assertEqual(rc, 0, out) + final = self.t.bytes_map() + self.assertTrue(any(final[rel] != after[rel] for rel in after + if not rel.startswith("VendorA" + os.sep)), out) + + def test_generate_unknown_vendor_returns_1(self): + before = self.t.bytes_map() + rc, out = self.t.cli("--generate", "--vendor", "Nope") + self.assertEqual(rc, 1) + self.assertIn("unknown vendor", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_setting_id_only_leaves_filament_ids_alone(self): + rc, out = self.t.cli("--generate", "--setting-id") + self.assertEqual(rc, 0, out) + root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(root["filament_id"], "AX01") # not re-minted + member = load_json_file(self.t.preset_path("VendorA", "APLA @P1")) + self.assertNotIn("filament_id", member) + self.assertEqual(member["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", + "APLA @P1")) + + def test_filament_id_only_inserts_no_setting_id(self): + rc, out = self.t.cli("--generate", "--filament-id") + self.assertEqual(rc, 0, out) + root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) + self.assertEqual(root["filament_id"], + afi.generate_filament_id("AVendor", "PLA", "APLA")) + for name in ("APLA @base", "APLA @P1"): + self.assertNotIn( + "setting_id", load_json_file(self.t.preset_path("VendorA", name))) + + def test_check_mode_returns_1_on_errors(self): + # What CI keys off: --check exits nonzero when the tree does not match + # the snapshot it is validated against. + before = self.t.bytes_map() + rc, out = self.t.cli("--check") + self.assertEqual(rc, 1) + self.assertIn("error(s)", out) + self.assertEqual(self.t.bytes_map(), before) # --check never writes + + def test_removed_and_conflicting_flags_are_rejected(self): + for argv in (["--remint", "VendorA"], # removed mode + ["--mint", "A/B/C"], # removed mode + ["--drop-redundant-ids", "VendorA"], # removed mode + ["--assign"], # removed mode + ["--generate", "--check"], # two modes + ["--vendor", "VendorA"], # narrowing without a mode + ["--filament-id"], # narrowing without a mode + ["--check", "--vendor", "VendorA"]): # narrowing on --check + with self.subTest(argv=argv): + with self.assertRaises(SystemExit) as cm, \ + contextlib.redirect_stdout(io.StringIO()), \ + contextlib.redirect_stderr(io.StringIO()): + afi.main([*argv, "--profiles", self.t.profiles]) + self.assertEqual(cm.exception.code, 2) + + +# --------------------------------------------------------------------------- +# the real tree +# --------------------------------------------------------------------------- + +@unittest.skipUnless(os.path.isdir(REAL_PROFILES), "resources/profiles not present") +class TestRealTree(unittest.TestCase): + def test_shipped_snapshot_matches_tree(self): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = afi.check_filament_ids(REAL_PROFILES) + self.assertEqual(errors, 0, buf.getvalue()) + + def test_check_cli_returns_0(self): + # The exact CI invocation, return code included. + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.main(["--check"]) + self.assertEqual(rc, 0, buf.getvalue()) + + def test_every_instantiated_filament_resolves_an_id(self): + analysis = afi.analyze_tree(REAL_PROFILES) + self.assertEqual(analysis["missing_effective"], []) + self.assertEqual(analysis["read_errors"], []) + +# --------------------------------------------------------------------------- +# review-fix regressions +# --------------------------------------------------------------------------- + +class TestReviewFixes(OfCleanTreeCase): + def test_one_file_reached_by_two_spellings_counts_once(self): + # The filament pass reaches a file through its index sub_path, the + # setting_id pass through os.walk. Those two spellings differ whenever + # the sub_path is not already normalized - always, on Windows, where + # every sub_path keeps the "/" the index stores. One file is one file. + # One preset per write path: SoloPLA has no id (inserted), WrongPLA + # declares one that is not its own mint (rewritten). Both are + # instantiated, so the setting_id pass reaches them too. + self.t.write_preset("VendorA", preset("SoloPLA @P1", + compatible_printers=["P1 0.4 nozzle"], + filament_vendor="SV", + filament_type="PLA")) + self.t.write_preset("VendorA", preset( + "WrongPLA @P1", filament_id=afi.generate_filament_id("WV", "PLA", "Nope"), + compatible_printers=["P1 0.4 nozzle"], + filament_vendor="WV", filament_type="PLA")) + for name in ("SoloPLA @P1", "WrongPLA @P1"): + self.t.set_sub_path("VendorA", name, f"filament/./{name}.json") + touched = set() + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + afi.generate_filament_ids(self.t.profiles, None, False, touched) + afi.generate_setting_ids(self.t.profiles, None, False, touched) + for name in ("SoloPLA @P1", "WrongPLA @P1"): + self.assertEqual([t for t in touched if t.endswith(name + ".json")], + [self.t.preset_path("VendorA", name)], sorted(touched)) + self.assertEqual(sorted(touched), + sorted(os.path.normpath(t) for t in touched)) + + def test_a_broken_edit_names_the_file(self): + # An edit that produces invalid JSON is refused, and the message has to + # say which of ~12,000 files it was: a bare JSONDecodeError does not. + path = self.t.preset_path("VendorA", "APLA @base") + with self.assertRaises(RuntimeError) as caught: + afi._edit_profile(path, lambda text: (text.replace("{", "{,", 1), 1), + what="test edit") + self.assertIn(path, str(caught.exception)) + self.assertIn("test edit", str(caught.exception)) + + def test_check3_skips_of_id_inherited_from_other_vendor(self): + # An OFL filament carries its own minted OF id and a vendor tunes it + # correctly (same base name, non-empty printers). The new claim must + # trip only the snapshot gate, never mint conformance. + fid = afi.generate_filament_id("Generic", "PLA", "Generic PLA Matte") + self.t.write_preset(OFL, preset("Generic PLA Matte @base", filament_id=fid, + instantiation=False, + filament_vendor="Generic", + filament_type="PLA")) + self.t.write_preset(OFL, preset("Generic PLA Matte @System", + inherits="Generic PLA Matte @base", + compatible_printers=[])) + rc, _ = self.t.update_snapshot() + self.assertEqual(rc, 0) + self.t.write_preset("VendorA", preset("Generic PLA Matte @P1", + inherits="Generic PLA Matte @System", + compatible_printers=["P1 0.4 nozzle"])) + errors, out = self.t.check() + self.assertNotIn("does not match the mint", out) + self.assertIn("not sanctioned", out) + self.assertEqual(errors, 1, out) + # After sanctioning the claim the tree is fully green again. + rc, _ = self.t.update_snapshot() + self.assertEqual(rc, 0) + errors, out = self.t.check() + self.assertEqual(errors, 0, out) + + def test_check3c_prints_expected_mint(self): + self.t.write_preset("VendorA", preset("Orphan PLA @P1", + compatible_printers=["P1 0.4 nozzle"], + filament_vendor="OV", + filament_type="PLA")) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn(afi.generate_filament_id("OV", "PLA", "Orphan PLA"), out) + + +# --------------------------------------------------------------------------- +# scripts/update_bambu_filament_ids.py: the generated Bambu catalog id map +# --------------------------------------------------------------------------- + +class TestBambuMap(unittest.TestCase): + def _bs_tree(self, filaments): + # filaments: list of (name, bambu_id, vendor, type); builds a minimal BBL + # bundle with an @base per filament carrying the id and one instantiated child. + t = SyntheticTree() + self.addCleanup(t.cleanup) + presets = [] + for filament_name, bambu_id, vendor, ftype in filaments: + presets.append(preset(f"{filament_name} @base", filament_id=bambu_id, + instantiation=False, filament_vendor=vendor, + filament_type=ftype)) + presets.append(preset(f"{filament_name} @P1", inherits=f"{filament_name} @base", + compatible_printers=["P1 0.4 nozzle"])) + t.add_vendor("BBL", presets) + filaments, errors = afi.load_vendor_filaments(t.profiles, "BBL") + self.assertEqual(errors, []) + return filaments + + def test_one_row_per_filament(self): + rows = ubfi.derive_rows(self._bs_tree([("Bambu ABS", "GFB00", "Bambu Lab", "ABS")])) + self.assertEqual(rows, {afi.generate_filament_id("Bambu Lab", "ABS", "Bambu ABS"): + {"bambu_id": "GFB00", "vendor": "Bambu Lab", "type": "ABS", "name": "Bambu ABS"}}) + + def test_shared_bambu_id_is_an_error(self): + with self.assertRaises(SystemExit): + ubfi.derive_rows(self._bs_tree([("A", "GFX00", "V", "PLA"), ("B", "GFX00", "V", "PLA")])) + + @unittest.skipUnless(os.path.isdir("/Users/lijiang/codes/BambuStudio/resources/profiles"), "no local clone") + def test_local_clone_yields_the_catalog(self): + rows = ubfi.derive_rows(afi.load_vendor_filaments("/Users/lijiang/codes/BambuStudio/resources/profiles", "BBL")[0]) + self.assertEqual(len(rows), 100) + self.assertEqual(len({r["bambu_id"] for r in rows.values()}), 100) + + +class TestWriteMap(unittest.TestCase): + def test_format(self): + d = tempfile.mkdtemp(prefix="bambu_map_test_") + self.addCleanup(shutil.rmtree, d, ignore_errors=True) + # nested, not-yet-existing directory: write_map must create it + path = os.path.join(d, "out", "bambu_filament_ids.json") + rows = {"OFabc123": {"bambu_id": "GFB00", "vendor": "Bambu Lab", "type": "ABS", "name": "Bambu ABS"}} + + ubfi.write_map(path, rows, "66e405477", "2026-09-04") + + with open(path, "rb") as f: + raw = f.read() + self.assertTrue(raw.endswith(b"\n")) + self.assertNotIn(b"\r", raw) + text = raw.decode("utf-8") + self.assertEqual(json.loads(text), { + "source": "https://github.com/bambulab/BambuStudio", + "bambustudio_commit": "66e405477", + "generated": "2026-09-04", + "filaments": rows, + }) + # sorted top-level keys + self.assertLess(text.index('"bambustudio_commit"'), text.index('"filaments"')) + self.assertLess(text.index('"filaments"'), text.index('"generated"')) + self.assertLess(text.index('"generated"'), text.index('"source"')) + + +class TestDriftReport(unittest.TestCase): + def test_reports_both_directions(self): + t = SyntheticTree() + self.addCleanup(t.cleanup) + t.add_vendor("BBL", [ + preset("Match PLA @base", filament_id="GFX01", instantiation=False, + filament_vendor="V", filament_type="PLA"), + preset("Match PLA @P1", inherits="Match PLA @base", + compatible_printers=["P1"]), + preset("Orphan PLA @base", filament_id="GFX03", instantiation=False, + filament_vendor="V", filament_type="PLA"), + preset("Orphan PLA @P1", inherits="Orphan PLA @base", + compatible_printers=["P1"]), + ]) + rows = { + # matches the BBL bundle's "Match PLA" filament: no drift either way + "OFmatch01": {"bambu_id": "GFX01", "vendor": "V", "type": "PLA", "name": "Match PLA"}, + # no filament of this identity in the BBL bundle above + "OFghost01": {"bambu_id": "GFX02", "vendor": "V", "type": "PLA", "name": "Upstream Only PLA"}, + } + orca_analysis = afi.analyze_tree(t.profiles) + + lines = ubfi.drift_report(rows, orca_analysis) + + report = "\n".join(lines) + self.assertIn("Upstream Only PLA", report) + self.assertIn("Orca BBL filaments with no row: 1", report) + self.assertNotIn("Match PLA", report) # the matched filament is not drift + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_setting_id.py b/scripts/tests/test_setting_id.py new file mode 100644 index 0000000000..95e447d03c --- /dev/null +++ b/scripts/tests/test_setting_id.py @@ -0,0 +1,899 @@ +#!/usr/bin/env python3 +"""Tests for the setting_id half of scripts/orca_id_tool.py (stdlib unittest, no +external deps). + +Run from the repo root: python -m unittest discover -s scripts/tests -v +""" + +import contextlib +import io +import json +import os +import shutil +import sys +import tempfile +import unittest +import uuid + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +import orca_id_tool as afi # noqa: E402 + +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) +REAL_PROFILES = os.path.join(REPO_ROOT, "resources", "profiles") + + +# --------------------------------------------------------------------------- +# helpers: synthetic profile trees +# --------------------------------------------------------------------------- + +def preset(name, instantiation=True, setting_id=None, settings_id=None, + filament_id=None, type_name="filament", **extra): + """A preset in the canonical key order the shipped profiles use.""" + data = {"type": type_name, "name": name, "from": "system"} + if setting_id is not None: + data["setting_id"] = setting_id + if settings_id is not None: + data["settings_id"] = settings_id + if filament_id is not None: + data["filament_id"] = filament_id + data["instantiation"] = "true" if instantiation else "false" + data.update(extra) + return data + + +class SettingTree: + """A throwaway resources/profiles-shaped directory of setting_id-bearing bundles. + + A bundle is a `<vendor>/` directory plus the sibling `<vendor>.json` index + that makes list_vendor_names() see it; presets live under filament/, + process/ and machine/, the three subdirs generate_setting_ids walks. + + write() also registers filament presets in the index's filament_list, the + way a shipped bundle does. generate_setting_ids never reads that list, but + generate_filament_ids does: without it the filament half of the tool is a + no-op on this tree, and the tests that assert --setting-id leaves + filament_ids alone would hold for the wrong reason. + """ + + def __init__(self): + self.dir = tempfile.mkdtemp(prefix="setting_id_test_") + self.profiles = os.path.join(self.dir, "profiles") + os.makedirs(self.profiles) + + def cleanup(self): + shutil.rmtree(self.dir, ignore_errors=True) + + def index_path(self, vendor): + return os.path.join(self.profiles, vendor + ".json") + + def add_vendor(self, vendor): + """Create the bundle dir and its index; idempotent, keeps the list.""" + for sub in afi.PROFILE_SUBDIRS: + os.makedirs(os.path.join(self.profiles, vendor, sub), exist_ok=True) + if not os.path.exists(self.index_path(vendor)): + self._write_index(vendor, {"name": vendor, "version": "01.00.00.00", + "filament_list": []}) + + def _write_index(self, vendor, index): + with open(self.index_path(vendor), "w", encoding="utf-8", + newline="\n") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + + def register(self, vendor, subdir, name): + """Add a filament preset to the bundle index's filament_list.""" + with open(self.index_path(vendor), encoding="utf-8") as f: + index = json.load(f) + sub_path = os.path.join(subdir, name + ".json").replace(os.sep, "/") + index["filament_list"].append({"name": name, "sub_path": sub_path}) + self._write_index(vendor, index) + + def path(self, vendor, subdir, name): + return os.path.join(self.profiles, vendor, subdir, name + ".json") + + def write(self, vendor, subdir, data, name=None): + """Write a preset as indented LF JSON; returns its path.""" + self.add_vendor(vendor) + file_name = name if name is not None else data["name"] + path = self.path(vendor, subdir, file_name) + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(data, f, indent=4, ensure_ascii=False) + f.write("\n") + if subdir.split(os.sep)[0] == "filament" and data.get("name"): + self.register(vendor, subdir, file_name) + return path + + def write_raw(self, vendor, subdir, name, raw): + """Write exact bytes (BOM, CRLF, tabs, broken JSON); returns its path.""" + self.add_vendor(vendor) + path = self.path(vendor, subdir, name) + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "wb") as f: + f.write(raw) + return path + + def read(self, vendor, subdir, name): + with open(self.path(vendor, subdir, name), encoding="utf-8-sig") as f: + return json.load(f) + + def raw(self, vendor, subdir, name): + with open(self.path(vendor, subdir, name), "rb") as f: + return f.read() + + def bytes_map(self): + """relative path -> bytes, for every file in the tree.""" + out = {} + for root, dirs, files in os.walk(self.profiles): + dirs.sort() + for name in sorted(files): + path = os.path.join(root, name) + with open(path, "rb") as f: + out[os.path.relpath(path, self.profiles)] = f.read() + return out + + # -- pipeline wrappers --------------------------------------------------- + + def run(self, vendors=None, dry_run=False): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = afi.generate_setting_ids(self.profiles, vendors, dry_run) + return changed, errors, buf.getvalue() + + def run_filament_ids(self, vendors=None, dry_run=False): + """The OTHER half of --generate.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = afi.generate_filament_ids(self.profiles, vendors, dry_run) + return changed, errors, buf.getvalue() + + +class SettingTreeCase(unittest.TestCase): + def setUp(self): + self.t = SettingTree() + self.addCleanup(self.t.cleanup) + + +# --------------------------------------------------------------------------- +# mint: the C++/Python byte-identity contract +# --------------------------------------------------------------------------- + +class TestSettingIdMint(unittest.TestCase): + # Copied verbatim from tests/libslic3r/test_preset_setting_id.cpp: the C++ + # generate_preset_setting_id() recomputes these ids on the fly, so the two + # implementations must stay byte-identical. + GOLDEN = [ + ("Afinia", "filament", "Afinia ABS @Afinia H400", "TL34qSVkppBvMvgH"), + ("Afinia", "process", "0.20mm Standard @Afinia H400", "FzmtNsy7XQvpd7w0"), + ("Afinia", "machine", "Afinia H400 0.4 nozzle", "r4FZagW0S8uoaJPd"), + ("Anycubic", "filament", "Generic PLA @Anycubic Kobra 2", "YIWGGLQ8Oepd30Fv"), + ("Creality", "process", "0.16mm Optimal @Creality Ender-3 V3", "2Nrbq8PxssUPBLza"), + ("Elegoo", "machine", "Elegoo Neptune 4 0.4 nozzle", "69QdWuRQwAZk9rFu"), + ] + + def test_golden_vectors(self): + for vendor, type_name, name, expected in self.GOLDEN: + with self.subTest(name=name): + self.assertEqual( + afi.generate_preset_setting_id(vendor, type_name, name), expected) + + def test_namespace_and_length_are_frozen(self): + # Baked into the C++ side and into every shipped profile; never change it. + self.assertEqual(afi.NAMESPACE, + uuid.UUID("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f")) + self.assertEqual(afi.SETTING_ID_LENGTH, 16) + self.assertEqual( + afi.ALPHABET, + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") + self.assertEqual(len(afi.ALPHABET), 62) + + def test_format_is_sixteen_alphabet_chars(self): + for vendor, type_name, name in [("Creality", "filament", "CR PLA @Ender"), + ("Elegoo", "machine", "Elegoo Neptune 4"), + ("拓竹", "filament", "拓竹 PLA @P1")]: + with self.subTest(name=name): + sid = afi.generate_preset_setting_id(vendor, type_name, name) + self.assertEqual(len(sid), afi.SETTING_ID_LENGTH) + self.assertTrue(set(sid) <= set(afi.ALPHABET), sid) + + def test_is_the_low_base62_digits_of_the_uuid5(self): + # Independent re-implementation of the whole rule, key layout included. + for vendor, type_name, name, _expected in self.GOLDEN: + u = uuid.uuid5(afi.NAMESPACE, f"{vendor}/{type_name}/{name}") + n = int.from_bytes(u.bytes, "big") + digits = "" + for _ in range(afi.SETTING_ID_LENGTH): + digits = afi.ALPHABET[n % 62] + digits + n //= 62 + self.assertEqual(afi.generate_preset_setting_id(vendor, type_name, name), + digits) + + def test_deterministic(self): + a = afi.generate_preset_setting_id("VendorX", "filament", "My PLA") + self.assertEqual(a, afi.generate_preset_setting_id("VendorX", "filament", "My PLA")) + + def test_every_identity_component_changes_the_id(self): + base = afi.generate_preset_setting_id("VendorX", "filament", "My PLA") + self.assertNotEqual(base, afi.generate_preset_setting_id("VendorY", "filament", "My PLA")) + self.assertNotEqual(base, afi.generate_preset_setting_id("VendorX", "process", "My PLA")) + self.assertNotEqual(base, afi.generate_preset_setting_id("VendorX", "filament", "My PETG")) + + def test_key_is_a_flat_slash_join(self): + # The mint key is "<vendor>/<type>/<name>" with no escaping, so a "/" in + # a component shifts the split — harmless in practice (vendor is a + # directory name and type is one of PROFILE_SUBDIRS), but it is what the + # C++ side does too and the two must agree byte for byte. + self.assertEqual(afi.generate_preset_setting_id("A/B", "filament", "C"), + afi.generate_preset_setting_id("A", "B/filament", "C")) + + +class TestBase62Tail(unittest.TestCase): + def test_hand_computed_digits(self): + self.assertEqual(afi._base62_tail(0, 4), "0000") + self.assertEqual(afi._base62_tail(61, 1), "z") # last alphabet char + self.assertEqual(afi._base62_tail(62, 2), "10") # 1*62 + 0 + self.assertEqual(afi._base62_tail(3843, 2), "zz") # 61*62 + 61 + self.assertEqual(afi._base62_tail(3907, 3), "111") # 62^2 + 62 + 1 + + def test_keeps_only_the_low_digits(self): + self.assertEqual(afi._base62_tail(62, 1), "0") # high digit dropped + self.assertEqual(afi._base62_tail(3907, 2), "11") + + +# --------------------------------------------------------------------------- +# assignment +# --------------------------------------------------------------------------- + +class TestAssignment(SettingTreeCase): + def test_instantiation_is_read_exactly_as_the_validator_reads_it(self): + # orca_extra_profile_check.py tests `instantiation == "true"` strictly. + # Anything looser here would hand an id to a preset the validator calls + # a base profile, and the two would fight over it on every run. + for name, value in [("Boolean", True), ("Capitalised", "True"), + ("Numeric", 1), ("Absent", None)]: + with self.subTest(instantiation=value): + data = {"type": "filament", "name": name, "from": "system"} + if value is not None: + data["instantiation"] = value + self.t.write("VendorA", "filament", data) + before = self.t.bytes_map() + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (0, 0), out) + self.assertEqual(self.t.bytes_map(), before) + + def test_a_bundle_without_an_index_is_still_assigned(self): + # setting_id is a per-file property, and the validator walks every + # directory. A bundle whose index has not landed yet must be fixable, + # or the validator flags files this tool refuses to touch. + path = os.path.join(self.t.profiles, "Noindex", "process", "Q.json") + os.makedirs(os.path.dirname(path)) + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(preset("Q", type_name="process"), f, indent=4) + self.assertFalse(os.path.exists(self.t.index_path("Noindex"))) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + with open(path, encoding="utf-8") as f: + self.assertEqual(json.load(f)["setting_id"], + afi.generate_preset_setting_id("Noindex", "process", "Q")) + + def test_assigns_across_every_profile_subdir(self): + self.t.write("VendorA", "filament", preset("A PLA @P1")) + self.t.write("VendorA", "process", + preset("0.20mm Standard @P1", type_name="process")) + self.t.write("VendorA", "machine", + preset("P1 0.4 nozzle", type_name="machine")) + # os.walk recursion: a preset in a nested directory is walked too. + self.t.write("VendorA", os.path.join("filament", "nested"), + preset("A PETG @P1")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (4, 0), out) + for subdir, type_name, name in [ + ("filament", "filament", "A PLA @P1"), + ("process", "process", "0.20mm Standard @P1"), + ("machine", "machine", "P1 0.4 nozzle"), + (os.path.join("filament", "nested"), "filament", "A PETG @P1")]: + self.assertEqual( + self.t.read("VendorA", subdir, name)["setting_id"], + afi.generate_preset_setting_id("VendorA", type_name, name), + msg=name) + + def test_type_comes_from_the_subdirectory_not_the_type_field(self): + # The subdir name is the type name (Preset::get_type_string()); a stale + # "type" field inside the file does not enter the id. + self.t.write("VendorA", "process", preset("Odd @P1", type_name="filament")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual(self.t.read("VendorA", "process", "Odd @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "process", "Odd @P1")) + + def test_idempotent(self): + self.t.write("VendorA", "filament", preset("A PLA @P1")) + self.t.write("VendorA", "process", + preset("0.20mm Standard @P1", type_name="process")) + self.t.write("VendorA", "filament", preset("A PLA @base", instantiation=False, + setting_id="LEFTOVER00000000")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (3, 0), out) + + after_first = self.t.bytes_map() + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (0, 0), out) + self.assertEqual(self.t.bytes_map(), after_first) + + def test_stale_value_is_replaced_in_place(self): + path = self.t.write("VendorA", "filament", + preset("A PLA @P1", setting_id="0000000000000000", + filament_id="OFabc123")) + before = self.t.raw("VendorA", "filament", "A PLA @P1") + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + want = afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1") + self.assertEqual(self.t.read("VendorA", "filament", "A PLA @P1")["setting_id"], + want) + raw = self.t.raw("VendorA", "filament", "A PLA @P1") + self.assertEqual(raw.count(b'"setting_id"'), 1) # replaced, not appended + self.assertEqual(raw, before.replace(b'"0000000000000000"', + b'"%s"' % want.encode())) + self.assertTrue(os.path.isfile(path)) + + def test_missing_value_is_inserted_before_filament_id(self): + self.t.write("VendorA", "filament", + preset("A PLA @P1", filament_id="OFabc123")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + text = self.t.raw("VendorA", "filament", "A PLA @P1").decode("utf-8") + want = afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1") + self.assertIn(f'"setting_id": "{want}"', text) + self.assertLess(text.index('"setting_id"'), text.index('"filament_id"')) + + def test_base_profiles_are_stripped(self): + self.t.write("VendorA", "filament", + preset("A PLA @base", instantiation=False, + setting_id="0000000000000000", filament_id="OFabc123")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + data = self.t.read("VendorA", "filament", "A PLA @base") + self.assertNotIn("setting_id", data) + self.assertEqual(data["filament_id"], "OFabc123") # nothing else touched + self.assertEqual(data["instantiation"], "false") + + def test_base_profile_without_instantiation_key_is_stripped(self): + # No "instantiation" key at all == not instantiated (str(None) != "true"). + data = {"type": "filament", "name": "A PLA @root", "from": "system", + "setting_id": "0000000000000000"} + self.t.write("VendorA", "filament", data) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + self.assertNotIn("setting_id", self.t.read("VendorA", "filament", "A PLA @root")) + + def test_misspelled_settings_id_is_dropped(self): + self.t.write("VendorA", "filament", + preset("A PLA @base", instantiation=False, + settings_id="0000000000000000")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + data = self.t.read("VendorA", "filament", "A PLA @base") + self.assertNotIn("settings_id", data) + self.assertNotIn("setting_id", data) + + def test_typo_drop_and_assignment_are_one_file_change(self): + self.t.write("VendorA", "filament", + preset("A PLA @P1", settings_id="0000000000000000", + filament_id="OFabc123")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) # ONE counted file change + data = self.t.read("VendorA", "filament", "A PLA @P1") + self.assertNotIn("settings_id", data) + self.assertEqual(data["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1")) + + def test_reserved_vendor_keeps_instantiated_ids_and_loses_base_ones(self): + # BBL owns the authoritative "G*" cloud id space: its instantiated + # presets are never rewritten, its base declarations still are stripped. + self.t.write("BBL", "filament", + preset("Bambu ABS @BBL A1", setting_id="GFSB00_07")) + self.t.write("BBL", "filament", preset("Bambu ABS @P1 no id")) + self.t.write("BBL", "filament", + preset("Bambu ABS @base", instantiation=False, + setting_id="GFSB00_00")) + kept = self.t.raw("BBL", "filament", "Bambu ABS @BBL A1") + kept_idless = self.t.raw("BBL", "filament", "Bambu ABS @P1 no id") + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) # only the base profile + self.assertEqual(self.t.raw("BBL", "filament", "Bambu ABS @BBL A1"), kept) + self.assertEqual(self.t.raw("BBL", "filament", "Bambu ABS @P1 no id"), + kept_idless) + self.assertNotIn("setting_id", + self.t.read("BBL", "filament", "Bambu ABS @base")) + + def test_reserved_vendors_misspelled_key_is_corrected_not_dropped(self): + # A reserved vendor's id is authoritative, so there is no formula to + # fall back on. Dropping the typo and stopping there would leave the + # preset with no setting_id at all and no way for the tool to give it + # one - a validator error nothing can clear. Fix the key, keep the value. + self.t.write("BBL", "filament", + preset("Bambu PLA @P1", settings_id="GFSA00_01")) + # A base profile still just loses the key; it may not carry an id. + self.t.write("BBL", "filament", + preset("Bambu PLA @base", instantiation=False, + settings_id="GFSA00_00")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (2, 0), out) + fixed = self.t.read("BBL", "filament", "Bambu PLA @P1") + self.assertNotIn("settings_id", fixed) + self.assertEqual(fixed["setting_id"], "GFSA00_01") + base = self.t.read("BBL", "filament", "Bambu PLA @base") + self.assertNotIn("settings_id", base) + self.assertNotIn("setting_id", base) + # Idempotent: the corrected file is what the next run expects to see. + self.assertEqual(self.t.run()[:2], (0, 0)) + + def test_a_managed_vendors_misspelled_key_is_still_replaced_by_the_mint(self): + self.t.write("VendorA", "filament", + preset("A PLA @P1", settings_id="whatever")) + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + data = self.t.read("VendorA", "filament", "A PLA @P1") + self.assertNotIn("settings_id", data) + self.assertEqual(data["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1")) + + def test_reserved_vendors_constant(self): + self.assertEqual(afi.RESERVED_VENDORS, {"BBL"}) + self.assertEqual(afi.PROFILE_SUBDIRS, ("filament", "process", "machine")) + + +# --------------------------------------------------------------------------- +# --vendor narrowing +# --------------------------------------------------------------------------- + +class TestVendorNarrowing(SettingTreeCase): + def setUp(self): + super().setUp() + self.t.write("VendorA", "filament", preset("A PLA @P1")) + self.t.write("VendorB", "filament", preset("B PLA @P1")) + + def test_restricts_writes_to_the_named_vendor(self): + before = self.t.bytes_map() + + changed, errors, out = self.t.run(vendors=["VendorA"]) + + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual(self.t.read("VendorA", "filament", "A PLA @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1")) + self.assertEqual(self.t.raw("VendorB", "filament", "B PLA @P1"), + before[os.path.join("VendorB", "filament", "B PLA @P1.json")]) + # ... and the vendor left out is written by a later run, unchanged in kind. + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual(self.t.read("VendorB", "filament", "B PLA @P1")["setting_id"], + afi.generate_preset_setting_id("VendorB", "filament", "B PLA @P1")) + + def test_unknown_vendor_reports_and_writes_nothing(self): + before = self.t.bytes_map() + + changed, errors, out = self.t.run(vendors=["Nope"]) + + self.assertEqual((changed, errors), (0, 1)) + self.assertIn("Nope", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_unknown_vendor_blocks_the_known_ones_too(self): + before = self.t.bytes_map() + changed, errors, _out = self.t.run(vendors=["VendorA", "Nope"]) + self.assertEqual((changed, errors), (0, 1)) + self.assertEqual(self.t.bytes_map(), before) + + +# --------------------------------------------------------------------------- +# --dry-run +# --------------------------------------------------------------------------- + +class TestDryRun(SettingTreeCase): + def test_writes_nothing_and_previews_the_real_run(self): + self.t.write("VendorA", "filament", preset("A PLA @P1")) + self.t.write("VendorA", "process", + preset("0.20mm Standard @P1", type_name="process")) + self.t.write("VendorA", "filament", + preset("A PLA @base", instantiation=False, + setting_id="0000000000000000")) + before = self.t.bytes_map() + + dry_changed, dry_errors, out = self.t.run(dry_run=True) + + self.assertEqual((dry_changed, dry_errors), (3, 0), out) + self.assertIn("would", out) + self.assertEqual(self.t.bytes_map(), before) # nothing written + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (dry_changed, dry_errors), out) + self.assertNotEqual(self.t.bytes_map(), before) + + +# --------------------------------------------------------------------------- +# byte preservation +# --------------------------------------------------------------------------- + +class TestBytePreservation(SettingTreeCase): + CRLF_TEXT = ( + '{\r\n' + '\t"type": "filament",\r\n' + '\t"name": "CRLF PLA @P1",\r\n' + '\t"from": "system",\r\n' + '\t"filament_id": "OFabc123",\r\n' + '\t"instantiation": "true",\r\n' + '\t"filament_type": [\r\n' + '\t\t"PLA"\r\n' + '\t]\r\n' + '}\r\n' + ) + + def test_crlf_and_tab_indentation_survive(self): + self.t.write_raw("VendorA", "filament", "CRLF PLA @P1", + self.CRLF_TEXT.encode("utf-8")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + raw = self.t.raw("VendorA", "filament", "CRLF PLA @P1") + self.assertEqual(raw.count(b"\n"), raw.count(b"\r\n")) # still CRLF-only + want = afi.generate_preset_setting_id("VendorA", "filament", "CRLF PLA @P1") + inserted = ('\t"setting_id": "%s",\r\n' % want).encode("utf-8") + # Every original byte survives: dropping the inserted line restores the file. + self.assertEqual(raw.replace(inserted, b"", 1), + self.CRLF_TEXT.encode("utf-8")) + + def test_bom_survives(self): + raw_in = b"\xef\xbb\xbf" + json.dumps( + preset("BOM PLA @P1", filament_id="OFabc123"), + indent=4, ensure_ascii=False).encode("utf-8") + b"\n" + self.t.write_raw("VendorA", "filament", "BOM PLA @P1", raw_in) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + raw = self.t.raw("VendorA", "filament", "BOM PLA @P1") + self.assertTrue(raw.startswith(b"\xef\xbb\xbf")) + self.assertEqual(raw.count(b"\xef\xbb\xbf"), 1) + want = afi.generate_preset_setting_id("VendorA", "filament", "BOM PLA @P1") + self.assertEqual(self.t.read("VendorA", "filament", "BOM PLA @P1")["setting_id"], + want) + self.assertEqual( + raw.replace((' "setting_id": "%s",\n' % want).encode("utf-8"), b"", 1), + raw_in) + + def test_non_ascii_name_round_trips(self): + name = "拓竹 PLA @P1 0.4 nozzle" + raw_in = (json.dumps(preset(name, filament_id="OFabc123"), indent=4, + ensure_ascii=False).encode("utf-8") + b"\n") + self.t.write_raw("VendorA", "filament", name, raw_in) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + raw = self.t.raw("VendorA", "filament", name) + self.assertIn(name.encode("utf-8"), raw) # not escaped to \uXXXX + data = self.t.read("VendorA", "filament", name) + self.assertEqual(data["name"], name) + self.assertEqual(data["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", name)) + + def test_surrounding_formatting_is_untouched_on_a_strip(self): + text = ('{\r\n' + '\t"type": "filament",\r\n' + '\t"name": "Odd @base",\r\n' + '\t"setting_id": "0000000000000000",\r\n' + '\t"instantiation": "false",\r\n' + '\t"compatible_printers": []\r\n' + '}\r\n') + self.t.write_raw("VendorA", "filament", "Odd @base", text.encode("utf-8")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual( + self.t.raw("VendorA", "filament", "Odd @base").decode("utf-8"), + text.replace('\t"setting_id": "0000000000000000",\r\n', "", 1)) + + +# --------------------------------------------------------------------------- +# byte-preserving key edits +# --------------------------------------------------------------------------- + +class TestInsertAnchor(unittest.TestCase): + WITH_BOTH = ('{\n "name": "K @P1",\n "filament_id": "OFabc123",\n' + ' "instantiation": "true"\n}\n') + WITH_INSTANTIATION = ('{\n "name": "K @P1",\n' + ' "instantiation": "true"\n}\n') + + def test_inserts_before_filament_id(self): + text, n = afi.insert_setting_id(self.WITH_BOTH, "0123456789abcdef") + self.assertEqual(n, 1) + json.loads(text) + self.assertEqual(text, self.WITH_BOTH.replace( + ' "filament_id"', + ' "setting_id": "0123456789abcdef",\n "filament_id"', 1)) + + def test_falls_back_to_instantiation(self): + text, n = afi.insert_setting_id(self.WITH_INSTANTIATION, "0123456789abcdef") + self.assertEqual(n, 1) + json.loads(text) + self.assertIn('"setting_id": "0123456789abcdef",\n "instantiation"', text) + + def test_falls_back_to_name(self): + # Last-resort anchor: every preset has a name, so the insert does not + # depend on filament_id having been written first — a dry run, which + # writes none, must reach the same verdict as the real run. + text, n = afi.insert_setting_id('{\n "name": "K",\n "x": 1\n}\n', + "0123456789abcdef") + self.assertEqual(n, 1) + json.loads(text) + self.assertIn('"name": "K",\n "setting_id": "0123456789abcdef",', text) + + def test_no_anchor_returns_zero(self): + src = '{\n "type": "filament"\n}\n' + text, n = afi.insert_setting_id(src, "0123456789abcdef") + self.assertEqual(n, 0) + self.assertEqual(text, src) + + +class TestKeyLineHelpers(unittest.TestCase): + def test_delete_trailing_comma_form(self): + text = ('{\n "name": "K",\n "setting_id": "OLD0000000000000",\n' + ' "instantiation": "false"\n}\n') + out, n = afi.delete_key_line(text, "setting_id") + self.assertEqual(n, 1) + self.assertEqual(json.loads(out), {"name": "K", "instantiation": "false"}) + self.assertEqual(out, text.replace( + ' "setting_id": "OLD0000000000000",\n', "", 1)) + + def test_delete_last_property_form_consumes_the_preceding_comma(self): + text = ('{\n "name": "K",\n "instantiation": "false",\n' + ' "setting_id": "OLD0000000000000"\n}\n') + out, n = afi.delete_key_line(text, "setting_id") + self.assertEqual(n, 1) + self.assertEqual(json.loads(out), {"name": "K", "instantiation": "false"}) + self.assertEqual(out, '{\n "name": "K",\n "instantiation": "false"\n}\n') + + def test_delete_requires_the_exact_old_value(self): + text = ('{\n "name": "K",\n "setting_id": "OLD0000000000000",\n' + ' "instantiation": "false"\n}\n') + out, n = afi.delete_key_line(text, "setting_id", old_value="OTHER") + self.assertEqual((out, n), (text, 0)) + _out, n = afi.delete_key_line(text, "setting_id", + old_value="OLD0000000000000") + self.assertEqual(n, 1) + + def test_delete_missing_key_returns_zero(self): + text = '{\n "name": "K"\n}\n' + self.assertEqual(afi.delete_key_line(text, "setting_id"), (text, 0)) + + def test_delete_does_not_confuse_the_two_spellings(self): + text = ('{\n "name": "K",\n "settings_id": "TYPO000000000000",\n' + ' "setting_id": "REAL000000000000",\n' + ' "instantiation": "true"\n}\n') + out, n = afi.delete_key_line(text, "settings_id") + self.assertEqual(n, 1) + self.assertEqual(json.loads(out)["setting_id"], "REAL000000000000") + + def test_replace_refuses_a_stale_old_value(self): + text = '{\n "setting_id": "OLD0000000000000"\n}\n' + out, n = afi.replace_key_value(text, "setting_id", "NEW0000000000000", + old_value="NOTTHIS000000000") + self.assertEqual((out, n), (text, 0)) + out, n = afi.replace_key_value(text, "setting_id", "NEW0000000000000", + old_value="OLD0000000000000") + self.assertEqual(n, 1) + self.assertEqual(json.loads(out)["setting_id"], "NEW0000000000000") + + def test_insert_key_line_prefers_before_over_after(self): + text = ('{\n "name": "K",\n "filament_id": "OFabc123",\n' + ' "instantiation": "true"\n}\n') + out, n = afi.insert_key_line(text, "setting_id", "V", + before=("filament_id", "instantiation"), + after=("name",)) + self.assertEqual(n, 1) + self.assertLess(out.index('"setting_id"'), out.index('"filament_id"')) + self.assertGreater(out.index('"setting_id"'), out.index('"name"')) + # The `before` tuple's own order decides, not the order in the file. + out, _n = afi.insert_key_line(text, "setting_id", "V", + before=("instantiation", "filament_id")) + self.assertGreater(out.index('"setting_id"'), out.index('"filament_id"')) + + def test_insert_key_line_falls_back_to_after(self): + text = '{\n "name": "K",\n "from": "system"\n}\n' + out, n = afi.insert_key_line(text, "setting_id", "V", + before=("filament_id",), after=("name",)) + self.assertEqual(n, 1) + self.assertEqual(out, '{\n "name": "K",\n "setting_id": "V",\n' + ' "from": "system"\n}\n') + + def test_insert_key_line_without_any_anchor(self): + text = '{\n "from": "system"\n}\n' + self.assertEqual( + afi.insert_key_line(text, "setting_id", "V", before=("filament_id",), + after=("name",)), + (text, 0)) + + +# --------------------------------------------------------------------------- +# error paths: reported and counted, never raised +# --------------------------------------------------------------------------- + +class TestErrorPaths(SettingTreeCase): + def test_unparsable_profile_is_reported_and_the_run_continues(self): + broken = b'{\n "name": "Broken @P1",\n oops\n}\n' + self.t.write_raw("VendorA", "filament", "Broken @P1", broken) + self.t.write("VendorA", "filament", preset("Good @P1")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 1), out) + self.assertIn("Broken @P1", out) + self.assertEqual(self.t.raw("VendorA", "filament", "Broken @P1"), broken) + self.assertEqual(self.t.read("VendorA", "filament", "Good @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "Good @P1")) + + def test_non_object_top_level_is_reported(self): + raw = b'[\n {"name": "K"}\n]\n' + self.t.write_raw("VendorA", "filament", "List @P1", raw) + self.t.write("VendorA", "filament", preset("Good @P1")) + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 1), out) + self.assertIn("List @P1", out) + self.assertEqual(self.t.raw("VendorA", "filament", "List @P1"), raw) + + def test_nameless_instantiated_preset_is_reported(self): + nameless = {"type": "filament", "from": "system", "instantiation": "true"} + self.t.write("VendorA", "filament", nameless, name="Nameless") + self.t.write("VendorA", "filament", preset("Good @P1")) + before = self.t.raw("VendorA", "filament", "Nameless") + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 1), out) + self.assertIn("Nameless", out) + self.assertEqual(self.t.raw("VendorA", "filament", "Nameless"), before) + self.assertEqual(self.t.read("VendorA", "filament", "Good @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "Good @P1")) + + def test_a_nameless_preset_still_gets_its_misspelled_key_dropped(self): + # The nameless-preset error must not abandon an edit already queued for + # the same file: leaving "settings_id" behind would keep the validator + # red with no way for this tool to clear it. + nameless = {"type": "filament", "from": "system", "settings_id": "JUNK123", + "instantiation": "true"} + self.t.write("VendorA", "filament", nameless, name="Nameless") + + changed, errors, out = self.t.run() + + self.assertEqual((changed, errors), (1, 1), out) + self.assertNotIn("settings_id", self.t.read("VendorA", "filament", "Nameless")) + self.assertNotIn("setting_id", self.t.read("VendorA", "filament", "Nameless")) + self.assertIn('misspelled "settings_id" dropped : 1', out) + + def test_an_unanchorable_file_is_reported_not_raised(self): + # One oddly formatted profile must not abort the pass over all the + # others, and it must fail the same way in a dry run as in a real one. + raw = b'{ "type":"filament", "name":"Flat @P1", "instantiation":"true" }\n' + self.t.write_raw("VendorA", "filament", "Flat @P1", raw) + self.t.write("VendorA", "filament", preset("Good @P1")) + + dry_changed, dry_errors, dry_out = self.t.run(dry_run=True) + changed, errors, out = self.t.run() + + self.assertEqual((dry_changed, dry_errors), (changed, errors), dry_out) + self.assertEqual((changed, errors), (1, 1), out) + self.assertIn("Flat @P1", out) + self.assertEqual(self.t.raw("VendorA", "filament", "Flat @P1"), raw) + self.assertEqual(self.t.read("VendorA", "filament", "Good @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "Good @P1")) + + def test_nameless_base_preset_is_fine(self): + # Only instantiated presets need an identity; a nameless base profile is + # simply left alone. + nameless = {"type": "filament", "from": "system", "instantiation": "false"} + self.t.write("VendorA", "filament", nameless, name="Nameless base") + before = self.t.bytes_map() + changed, errors, out = self.t.run() + self.assertEqual((changed, errors), (0, 0), out) + self.assertEqual(self.t.bytes_map(), before) + + +# --------------------------------------------------------------------------- +# the real tree +# --------------------------------------------------------------------------- + +@unittest.skipUnless(os.path.isdir(REAL_PROFILES), "resources/profiles not present") +class TestRealTree(unittest.TestCase): + def test_shipped_tree_needs_no_setting_id_change(self): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = afi.generate_setting_ids(REAL_PROFILES, dry_run=True) + self.assertEqual((changed, errors), (0, 0), buf.getvalue()) + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +class TestCli(SettingTreeCase): + def main(self, argv): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = afi.main(argv) + return rc, buf.getvalue() + + def test_setting_id_only_run_touches_no_filament_id(self): + # "OFZZZZZZ" is not the mint of the preset's own triple, so the filament + # half of --generate has real work waiting on this tree (proven at the + # end): leaving the id alone is the narrowing's doing, not an idle tree. + self.t.write("VendorA", "filament", + preset("A PLA @P1", filament_id="OFZZZZZZ", + filament_vendor=["AV"], filament_type=["PLA"])) + self.t.write("VendorA", "machine", + preset("P1 0.4 nozzle", type_name="machine")) + + rc, out = self.main(["--generate", "--setting-id", + "--profiles", self.t.profiles]) + + self.assertEqual(rc, 0, out) + filament = self.t.read("VendorA", "filament", "A PLA @P1") + self.assertEqual(filament["filament_id"], "OFZZZZZZ") + self.assertEqual(filament["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1")) + machine = self.t.read("VendorA", "machine", "P1 0.4 nozzle") + self.assertNotIn("filament_id", machine) + self.assertEqual(machine["setting_id"], + afi.generate_preset_setting_id("VendorA", "machine", "P1 0.4 nozzle")) + # ... and the skipped half does re-mint that id when it is allowed to run. + changed, errors, out = self.t.run_filament_ids() + self.assertEqual((changed, errors), (1, 0), out) + self.assertEqual( + self.t.read("VendorA", "filament", "A PLA @P1")["filament_id"], + afi.generate_filament_id("AV", "PLA", "A PLA")) + + def test_dry_run_setting_id_writes_nothing(self): + self.t.write("VendorA", "filament", preset("A PLA @P1")) + before = self.t.bytes_map() + rc, out = self.main(["--generate", "--setting-id", "--dry-run", + "--profiles", self.t.profiles]) + self.assertEqual(rc, 0, out) + self.assertIn("1 file(s) would change", out) # there WAS one to write + self.assertEqual(self.t.bytes_map(), before) + # the real run then writes exactly it + rc, out = self.main(["--generate", "--setting-id", + "--profiles", self.t.profiles]) + self.assertEqual(rc, 0, out) + self.assertIn("1 file(s) changed", out) + self.assertEqual(self.t.read("VendorA", "filament", "A PLA @P1")["setting_id"], + afi.generate_preset_setting_id("VendorA", "filament", + "A PLA @P1")) + + def test_setting_id_without_generate_is_a_usage_error(self): + with contextlib.redirect_stderr(io.StringIO()), \ + self.assertRaises(SystemExit) as cm: + afi.main(["--setting-id", "--profiles", self.t.profiles]) + self.assertEqual(cm.exception.code, 2) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/update_bambu_filament_ids.py b/scripts/update_bambu_filament_ids.py new file mode 100644 index 0000000000..539376599e --- /dev/null +++ b/scripts/update_bambu_filament_ids.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python3 +""" +Generate resources/printers/bambu_filament_ids.json: the map from Orca's +content-addressed filament_id ("OF" + 6 base62 chars, see orca_id_tool.py) +to Bambu Lab's own AMS/RFID catalog id ("GF..." etc.) for the subset of filament +products Bambu ships. + +The map is generated from BambuStudio's OWN shipped BBL bundle, never from +Orca's: Orca's BBL bundle is a fork of Bambu's, tuned and extended +independently, so it is not the source of truth for Bambu's catalog ids. +src/slic3r/Utils/BBLPrinterAgent.cpp loads it at runtime and translates an id +only where it crosses to or from a Bambu printer, so the correspondence never +has to be hand-maintained. See docs/HLSD/filament_id.md. + +One row per BambuStudio filament PRODUCT: one named spool product = one +"@base"-declared filament_id, shared by every per-printer/per-nozzle +instantiation of it (BambuStudio follows the same one-product-one-id shape +Orca's own filament_id policy does). A row's key is the OF id that product's +(filament_vendor, filament_type, filament) triple mints — the id Orca carries +for it wherever it ships it, since the id is a function of the triple alone. + +Map format: +{ + "source": "https://github.com/bambulab/BambuStudio", + "bambustudio_commit": "66e405477", + "generated": "2026-09-04", + "filaments": { + "OFhuaUQB": {"bambu_id": "GFB00", "vendor": "Bambu Lab", "type": "ABS", "name": "Bambu ABS"} + } +} + +Run from anywhere: python3 scripts/update_bambu_filament_ids.py + (default) shallow-clone BambuStudio's master branch (sparse: just + the BBL filament bundle) and regenerate the map + --bambustudio-dir DIR + read DIR (a BambuStudio resources/profiles checkout) + instead of cloning + --ref REF clone this BambuStudio ref instead of master + --output PATH write here instead of resources/printers/bambu_filament_ids.json + +After writing, an informational drift report is printed: BambuStudio filaments +Orca ships nothing with the same identity for, and a count of Orca's own BBL +filaments that matched no BambuStudio row. Neither blocks the write; both are +for a human to read. +""" + +import argparse +import json +import os +import shutil +import subprocess +import sys +import tempfile +import datetime + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from orca_id_tool import ( # noqa: E402 + BAMBU_MAP_PATH, + OFL, + PROFILES_DIR, + analyze_tree, + base_name, + generate_filament_id, + load_vendor_filaments, + print_error, + print_info, + print_success, + resolve_filament_id, + resolve_triple, +) + +BAMBUSTUDIO_REPO = "https://github.com/bambulab/BambuStudio" + + +# --------------------------------------------------------------------------- +# Row derivation +# --------------------------------------------------------------------------- + +def derive_rows(bs_filaments): + """One row per BambuStudio product, keyed by the OF id its triple mints.""" + by_filament = {} # filament_name -> (bambu_id, triple) + for rec in bs_filaments.values(): + if not rec["instantiation"]: + continue + bambu_id, _src, _entry = resolve_filament_id(rec["name"], bs_filaments, {}) + if not bambu_id: + continue + filament_name = base_name(rec["name"]) + triple = resolve_triple(rec["name"], bs_filaments, {}) + prev = by_filament.setdefault(filament_name, (bambu_id, triple)) + if prev != (bambu_id, triple): + raise SystemExit(f"BambuStudio filament {filament_name!r} is not one " + f"product: {prev} vs {(bambu_id, triple)}") + rows, seen = {}, {} + for filament_name, (bambu_id, triple) in sorted(by_filament.items()): + if bambu_id in seen: + raise SystemExit(f"Bambu id {bambu_id} is shared by " + f"{seen[bambu_id]!r} and {filament_name!r}") + seen[bambu_id] = filament_name + rows[generate_filament_id(*triple)] = { + "bambu_id": bambu_id, "vendor": triple[0], "type": triple[1], "name": triple[2]} + return rows + + +# --------------------------------------------------------------------------- +# Drift report (informational only) +# --------------------------------------------------------------------------- + +def drift_report(rows, orca_analysis): + """Two triple-identity comparisons between the map just derived and Orca's + own BBL bundle (never id-based: the two bundles assign filament_id + independently, so only the (vendor, type, name) identity is comparable). + + Returns print-ready lines: one per BambuStudio row triple with no + same-triple filament in Orca's BBL bundle (upstream ships it, we ship + nothing with that identity there — sometimes a genuinely missing product, + sometimes a renamed one), then a count of Orca's own BBL filaments that + matched no BambuStudio row (Orca-only products, e.g. a name-drifted + duplicate of one already counted in the first list). + """ + row_triples = {(r["vendor"], r["type"], r["name"]) for r in rows.values()} + + bbl_filaments = orca_analysis["vendors"].get("BBL", {}) + ofl_filaments = orca_analysis["vendors"].get(OFL, {}) + orca_filaments = {} + for rec in bbl_filaments.values(): + if not rec["instantiation"]: + continue + triple = resolve_triple(rec["name"], bbl_filaments, ofl_filaments) + orca_filaments.setdefault(base_name(rec["name"]), triple) + + lines = [] + for triple in sorted(row_triples - set(orca_filaments.values())): + lines.append(f'upstream ships {triple[2]!r} ({triple[0]}/{triple[1]}), ' + "we ship nothing with that identity") + orca_only = [name for name, triple in orca_filaments.items() + if triple not in row_triples] + lines.append(f"Orca BBL filaments with no row: {len(orca_only)} Orca-only product(s)") + return lines + + +# --------------------------------------------------------------------------- +# Map IO +# --------------------------------------------------------------------------- + +def write_map(path, rows, commit, date): + """Write the map: sorted keys, indent 2, LF, trailing newline.""" + payload = { + "source": BAMBUSTUDIO_REPO, + "bambustudio_commit": commit, + "generated": date, + "filaments": rows, + } + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(payload, f, indent=2, ensure_ascii=False, sort_keys=True) + f.write("\n") + + +# --------------------------------------------------------------------------- +# BambuStudio fetch +# --------------------------------------------------------------------------- + +def run(command, cwd=None): + """Run a command, streaming its output; raise SystemExit on failure.""" + print("+ " + " ".join(command)) + try: + subprocess.run(command, cwd=cwd, check=True) + except subprocess.CalledProcessError as e: + raise SystemExit(f"command failed ({e.returncode}): {' '.join(command)}") from e + + +def run_out(command, cwd=None): + """Run a command and return its stripped stdout; raise SystemExit on failure.""" + try: + result = subprocess.run(command, cwd=cwd, check=True, capture_output=True, text=True) + except subprocess.CalledProcessError as e: + raise SystemExit( + f"command failed ({e.returncode}): {' '.join(command)}\n{e.stderr}") from e + return result.stdout.strip() + + +def fetch_bambustudio(ref, workdir): + run(["git", "clone", "--depth=1", "--filter=blob:none", "--sparse", "--branch", ref, + BAMBUSTUDIO_REPO + ".git", workdir]) + run(["git", "-C", workdir, "sparse-checkout", "set", "--no-cone", + "resources/profiles/BBL.json", "resources/profiles/BBL/filament"]) + return os.path.join(workdir, "resources", "profiles"), run_out(["git", "-C", workdir, "rev-parse", "--short", "HEAD"]) + + +def local_dir_commit(dir_path): + """git rev-parse --short HEAD of dir_path, or "local" when it is not a repo.""" + result = subprocess.run(["git", "-C", dir_path, "rev-parse", "--short", "HEAD"], + capture_output=True, text=True) + return result.stdout.strip() if result.returncode == 0 else "local" + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +def main(argv=None): + parser = argparse.ArgumentParser( + description="Regenerate resources/printers/bambu_filament_ids.json from " + "BambuStudio's shipped BBL bundle.") + source = parser.add_mutually_exclusive_group() + source.add_argument("--bambustudio-dir", metavar="DIR", + help="a BambuStudio resources/profiles directory to read " + "instead of cloning") + source.add_argument("--ref", default="master", + help='BambuStudio git ref to shallow-clone when ' + '--bambustudio-dir is not given (default: "master")') + parser.add_argument("--output", default=BAMBU_MAP_PATH, + help="output path (default: resources/printers/bambu_filament_ids.json)") + args = parser.parse_args(argv) + + workdir = None + if args.bambustudio_dir: + profiles_dir = args.bambustudio_dir + commit = local_dir_commit(profiles_dir) + else: + workdir = tempfile.mkdtemp(prefix="bambustudio_") + profiles_dir, commit = fetch_bambustudio(args.ref, workdir) + + try: + bs_filaments, errors = load_vendor_filaments(profiles_dir, "BBL") + if errors: + for e in errors: + print_error(e) + raise SystemExit("unreadable BambuStudio filament profile(s)") + + rows = derive_rows(bs_filaments) + write_map(args.output, rows, commit, datetime.date.today().isoformat()) + print_success(f"wrote {len(rows)} row(s) to {args.output} (BambuStudio @ {commit})") + + for line in drift_report(rows, analyze_tree(PROFILES_DIR)): + print_info(line) + finally: + if workdir: + shutil.rmtree(workdir, ignore_errors=True) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0036af0a8c..f0de57f12c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -33,7 +33,8 @@ if (SLIC3R_GUI) set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}") find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core adv html gl aui net media webview) else () - find_package(wxWidgets 3.3 CONFIG REQUIRED COMPONENTS html adv gl core base webview aui net media) + # propgrid is required by wxInspector. + find_package(wxWidgets 3.3 CONFIG REQUIRED COMPONENTS html adv gl core base webview aui net media propgrid) endif () if(UNIX) @@ -90,6 +91,16 @@ if (SLIC3R_GUI) # list(REMOVE_ITEM wxWidgets_LIBRARIES oleacc) find_package(wxInspector REQUIRED) + + # wxInspector's exported interface names the release wxWidgets import + # libraries, which a Debug build cannot link. wx is linked above instead. + get_target_property(_wxinspector_interface wxInspector::wxInspector INTERFACE_LINK_LIBRARIES) + if (_wxinspector_interface) + list(FILTER _wxinspector_interface EXCLUDE REGEX "wx(base|msw)3[0-9]u[_.]") + set_target_properties(wxInspector::wxInspector PROPERTIES + INTERFACE_LINK_LIBRARIES "${_wxinspector_interface}") + endif () + list(APPEND wxWidgets_LIBRARIES "wxInspector::wxInspector") message(STATUS "wx libs: ${wxWidgets_LIBRARIES}") diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 8176e9f444..5463f55c20 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -100,6 +100,10 @@ using namespace nlohmann; #ifdef SLIC3R_GUI #include "slic3r/GUI/GUI_Init.hpp" + // BBLPrinterAgent::from_orca_filament_id(); the map and its lookups live in libslic3r_gui, + // which only a SLIC3R_GUI build links (see target_link_libraries(OrcaSlicer libslic3r_gui) + // in CMakeLists). + #include "slic3r/Utils/BBLPrinterAgent.hpp" #endif /* SLIC3R_GUI */ using namespace Slic3r; @@ -1793,8 +1797,9 @@ int CLI::run(int argc, char **argv) old_printable_area = config.option<ConfigOptionPoints>("printable_area", true)->values; old_exclude_area = config.option<ConfigOptionPoints>("bed_exclude_area", true)->values; if (old_printable_area.size() >= 4) { - old_printable_width = (int)(old_printable_area[2].x() - old_printable_area[0].x()); - old_printable_depth = (int)(old_printable_area[2].y() - old_printable_area[0].y()); + BoundingBoxf old_printable_bbox(old_printable_area); + old_printable_width = static_cast<int>(old_printable_bbox.size().x()); + old_printable_depth = static_cast<int>(old_printable_bbox.size().y()); } old_printable_height = (int)(config.opt_float("printable_height")); @@ -1920,7 +1925,7 @@ int CLI::run(int argc, char **argv) } } catch (std::exception& e) { - boost::nowide::cerr << construct_assemble_list << ": " << e.what() << std::endl; + boost::nowide::cerr << "construct_assemble_list: " << e.what() << std::endl; record_exit_reson(outfile_dir, CLI_DATA_FILE_ERROR, 0, cli_errors[CLI_DATA_FILE_ERROR], sliced_info); flush_and_exit(CLI_DATA_FILE_ERROR); } @@ -1969,7 +1974,79 @@ int CLI::run(int argc, char **argv) } } - auto load_config_file = [config_substitution_rule](const std::string& file, DynamicPrintConfig& config, std::string& config_type, + std::unique_ptr<PresetBundle> cli_preset_bundle; + auto ensure_cli_preset_bundle = [&cli_preset_bundle](std::string &error) -> PresetBundle * { + if (cli_preset_bundle) + return cli_preset_bundle.get(); + try { + AppConfig app_config; + const std::string app_config_error = app_config.load_if_exists(); + if (!app_config_error.empty()) { + BOOST_LOG_TRIVIAL(warning) << "Ignoring invalid app config during CLI preset resolution: " << app_config_error; + app_config.reset(); + } + + auto bundle = std::make_unique<PresetBundle>(); + std::string load_error; + bundle->load_presets(app_config, config_substitution_rule, + PresetBundle::PresetPreferences(), &load_error, true); + if (!load_error.empty()) { + error = "Failed to load presets for inheritance resolution: " + load_error; + return nullptr; + } + cli_preset_bundle = std::move(bundle); + return cli_preset_bundle.get(); + } catch (const std::exception &ex) { + error = ex.what(); + return nullptr; + } + }; + + auto resolve_preset = [&ensure_cli_preset_bundle](const std::string &file, DynamicPrintConfig &config, + std::string &config_type, const std::string &config_from, + bool probe_type, std::string &error) { + const auto *inherits = config.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS); + if (!probe_type && (inherits == nullptr || inherits->value.empty())) + return true; + + std::unique_ptr<PresetBundle> source_bundle; + PresetBundle *bundle = nullptr; + bool allow_source_manifest = false; + if (config_from == "system") { + source_bundle = std::make_unique<PresetBundle>(); + bundle = source_bundle.get(); + allow_source_manifest = true; + } else { + bundle = ensure_cli_preset_bundle(error); + if (bundle == nullptr) + return false; + } + + if (probe_type) { + Preset::Type preset_type; + if (!bundle->resolve_preset_config_type(config, preset_type, file, config_substitution_rule, + error, allow_source_manifest)) + return false; + config_type = Preset::get_type_string(preset_type); + return true; + } + + Preset::Type preset_type; + if (config_type == "process") + preset_type = Preset::TYPE_PRINT; + else if (config_type == "filament") + preset_type = Preset::TYPE_FILAMENT; + else if (config_type == "machine") + preset_type = Preset::TYPE_PRINTER; + else { + error = "Unsupported preset type: " + config_type; + return false; + } + return bundle->resolve_preset_config(config, preset_type, file, config_substitution_rule, + error, allow_source_manifest); + }; + + auto load_config_file = [&resolve_preset](const std::string& file, DynamicPrintConfig& config, std::string& config_type, std::string& config_name, std::string& filament_id, std::string& config_from) { if (! boost::filesystem::exists(file)) { boost::nowide::cerr << __FUNCTION__<< ": can not find setting file: " << file << std::endl; @@ -1998,9 +2075,15 @@ int CLI::run(int argc, char **argv) } auto type_iter = key_values.find(BBL_JSON_KEY_TYPE); - if (type_iter != key_values.end()) { + const bool probe_type = type_iter == key_values.end(); + if (!probe_type) config_type = type_iter->second; + + if (!resolve_preset(file, config, config_type, config_from, probe_type, reason)) { + boost::nowide::cerr << __FUNCTION__ << boost::format(": can not resolve preset %1%: %2%") % file % reason << std::endl; + return CLI_CONFIG_FILE_ERROR; } + if (config_type == "machine") { //config.set("printer_settings_id", config_name, true); //printer_inherits = config.option<ConfigOptionString>("inherits", true)->value; @@ -2343,8 +2426,9 @@ int CLI::run(int argc, char **argv) Pointfs orig_printable_area; orig_printable_area = config.option<ConfigOptionPoints>("printable_area", true)->values; if (orig_printable_area.size() >= 4) { - orig_printable_width = (int)(orig_printable_area[2].x() - orig_printable_area[0].x()); - orig_printable_depth = (int)(orig_printable_area[2].y() - orig_printable_area[0].y()); + BoundingBoxf orig_printable_bbox(orig_printable_area); + orig_printable_width = static_cast<int>(orig_printable_bbox.size().x()); + orig_printable_depth = static_cast<int>(orig_printable_bbox.size().y()); } orig_printable_height = (int)(config.opt_float("printable_height")); BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(":%1%, check printable size: old_printable_width=%2%, orig_printable_width=%3%, old_printable_depth=%4%, orig_printable_depth=%5%, old_printable_height=%6%, orig_printable_height=%7%") @@ -3138,7 +3222,25 @@ int CLI::run(int argc, char **argv) std::vector<int> old_variant_counts(filament_count, 1), new_variant_counts; ConfigOptionInts* filament_self_index_opt = m_print_config.option<ConfigOptionInts>("filament_self_index"); - if (!filament_self_index_opt) { + bool need_regenerate_self_index = !filament_self_index_opt; + if (filament_self_index_opt) { + // a filament_self_index carried over from a stale project can disagree with the + // current filament_count. old_start_indice/old_variant_counts below are sized to + // filament_count and walked with 1-based group indices, so an index above + // filament_count overruns old_start_indice[++k], and a non-positive first index + // writes old_variant_counts[-1] - both heap corruption. + int max_self_index = 0, min_self_index = 1; + for (int v : filament_self_index_opt->values) { + max_self_index = std::max(max_self_index, v); + min_self_index = std::min(min_self_index, v); + } + if (max_self_index > filament_count || min_self_index < 1) { + BOOST_LOG_TRIVIAL(warning) << boost::format("filament_self_index range [%1%, %2%] is invalid for filament_count %3%, regenerating") + % min_self_index % max_self_index % filament_count; + need_regenerate_self_index = true; + } + } + if (need_regenerate_self_index) { filament_self_index_opt = m_print_config.option<ConfigOptionInts>("filament_self_index", true); std::vector<int>& filament_self_indice = filament_self_index_opt->values; filament_self_indice.resize(filament_count); @@ -3732,6 +3834,8 @@ int CLI::run(int argc, char **argv) double height_to_lid = m_print_config.opt_float("extruder_clearance_height_to_lid"); double height_to_rod = m_print_config.opt_float("extruder_clearance_height_to_rod"); double clearance_radius = m_print_config.opt_float("extruder_clearance_radius"); + double nozzle_height = m_print_config.opt_float("nozzle_height"); + Vec2d align_center = m_print_config.option<ConfigOptionPoint>("best_object_pos")->value; int shared_printable_width = 0, shared_printable_depth = 0, shared_printable_height = 0, shared_center_x = 0, shared_center_y = 0; //double plate_stride; std::string bed_texture; @@ -3742,8 +3846,11 @@ int CLI::run(int argc, char **argv) if (m_print_config.opt<ConfigOptionFloatsNullable>("extruder_printable_height")) { current_extruder_print_heights = m_print_config.opt<ConfigOptionFloatsNullable>("extruder_printable_height")->values; } - current_printable_width = current_printable_area[2].x() - current_printable_area[0].x(); - current_printable_depth = current_printable_area[2].y() - current_printable_area[0].y(); + { + BoundingBoxf current_printable_bbox(current_printable_area); + current_printable_width = static_cast<int>(current_printable_bbox.size().x()); + current_printable_depth = static_cast<int>(current_printable_bbox.size().y()); + } current_printable_height = print_height; if (old_printable_width == 0) old_printable_width = current_printable_width; @@ -3908,7 +4015,7 @@ int CLI::run(int argc, char **argv) } }; - auto check_plate_wipe_tower = [get_print_sequence, is_smooth_timelapse, new_extruder_count](Slic3r::GUI::PartPlate* plate, int plate_index, DynamicPrintConfig& print_config, plate_obj_size_info_t &plate_obj_size_info) { + auto check_plate_wipe_tower = [get_print_sequence, is_smooth_timelapse](Slic3r::GUI::PartPlate* plate, int plate_index, DynamicPrintConfig& print_config, plate_obj_size_info_t &plate_obj_size_info) { plate_obj_size_info.obj_bbox= plate->get_objects_bounding_box(); BOOST_LOG_TRIVIAL(info) << boost::format("plate %1%, object bbox: min {%2%, %3%, %4%} - max {%5%, %6%, %7%}") %(plate_index+1) %plate_obj_size_info.obj_bbox.min.x() % plate_obj_size_info.obj_bbox.min.y() % plate_obj_size_info.obj_bbox.min.z() %plate_obj_size_info.obj_bbox.max.x() % plate_obj_size_info.obj_bbox.max.y() % plate_obj_size_info.obj_bbox.max.z(); @@ -3944,25 +4051,21 @@ int CLI::run(int argc, char **argv) ConfigOptionFloats *wipe_x_option = dynamic_cast<ConfigOptionFloats *>(print_config.option("wipe_tower_x")); ConfigOptionFloats *wipe_y_option = dynamic_cast<ConfigOptionFloats *>(print_config.option("wipe_tower_y")); + // get_at() silently clamps an out-of-range index to entry 0 - make the reuse visible + if (static_cast<size_t>(plate_index) >= wipe_x_option->values.size() || static_cast<size_t>(plate_index) >= wipe_y_option->values.size()) { + BOOST_LOG_TRIVIAL(warning) << boost::format("plate %1%: wipe_tower_x/y only has %2%/%3% entries, reusing entry 0's position") + %(plate_index+1) %wipe_x_option->values.size() %wipe_y_option->values.size(); + } plate_obj_size_info.wipe_x = wipe_x_option->get_at(plate_index); plate_obj_size_info.wipe_y = wipe_y_option->get_at(plate_index); - ConfigOptionFloat* width_option = print_config.option<ConfigOptionFloat>("prime_tower_width", true); - plate_obj_size_info.wipe_width = width_option->value; + // Body and brim from one estimate: resolving an auto (-1) brim against a different + // height would size the two halves of the same tower from two different objects. + const WipeTowerFootprint footprint = plate->estimate_wipe_tower_footprint(print_config, filaments_cnt); + float brim_width = float(footprint.brim_width); - ConfigOptionFloat* brim_width_option = print_config.option<ConfigOptionFloat>("prime_tower_brim_width", true); - float brim_width = brim_width_option->value; - if (brim_width < 0) brim_width = WipeTower::get_auto_brim_by_height((float)plate_obj_size_info.obj_bbox.max.z()); - - ConfigOptionFloat* volume_option = print_config.option<ConfigOptionFloat>("prime_volume", true); - float wipe_volume = volume_option->value; - - const ConfigOptionBool * wrapping_detection = print_config.option<ConfigOptionBool>("enable_wrapping_detection"); - bool enable_wrapping = (wrapping_detection != nullptr) && wrapping_detection->value; - - Vec3d wipe_tower_size = plate->estimate_wipe_tower_size(print_config, plate_obj_size_info.wipe_width, wipe_volume, new_extruder_count, filaments_cnt, false, enable_wrapping); - plate_obj_size_info.wipe_width = wipe_tower_size(0); - plate_obj_size_info.wipe_depth = wipe_tower_size(1); + plate_obj_size_info.wipe_width = footprint.width; + plate_obj_size_info.wipe_depth = footprint.depth; Vec3d origin = plate->get_origin(); Vec3d start(origin(0) + plate_obj_size_info.wipe_x - brim_width, origin(1) + plate_obj_size_info.wipe_y, 0.f); @@ -4139,8 +4242,9 @@ int CLI::run(int argc, char **argv) temp_extruder_print_heights = config.option<ConfigOptionFloatsNullable>("extruder_printable_height", true)->values; if (temp_printable_area.size() >= 4) { - printer_plate.printable_width = (int)(temp_printable_area[2].x() - temp_printable_area[0].x()); - printer_plate.printable_depth = (int)(temp_printable_area[2].y() - temp_printable_area[0].y()); + BoundingBoxf temp_printable_bbox(temp_printable_area); + printer_plate.printable_width = static_cast<int>(temp_printable_bbox.size().x()); + printer_plate.printable_depth = static_cast<int>(temp_printable_bbox.size().y()); printer_plate.printable_height = (int)(config.opt_float("printable_height")); } if (temp_exclude_area.size() >= 4) { @@ -4722,13 +4826,16 @@ int CLI::run(int argc, char **argv) } } - if (!arrange_cfg.is_seq_print && (assemble_plate.filaments_count > 1)||(enable_wrapping_detect && !current_wrapping_exclude_area.empty())) + if ((!arrange_cfg.is_seq_print && (assemble_plate.filaments_count > 1))||(enable_wrapping_detect && !current_wrapping_exclude_area.empty())) { //prepare the wipe tower int plate_count = partplate_list.get_plate_count(); auto printer_structure_opt = m_print_config.option<ConfigOptionEnum<PrinterStructure>>("printer_structure"); - const float tower_brim_width = m_print_config.option<ConfigOptionFloat>("prime_tower_width", true)->value; + // This margin only pre-adjusts the default away from the near edges; + // estimate_wipe_tower_polygon below computes the real clamped position. + float tower_brim_width = m_print_config.option<ConfigOptionFloat>("prime_tower_brim_width", true)->value; + if (tower_brim_width < 0.f) tower_brim_width = 8.f; // auto: object heights unknown here, 8 mm is the auto cap const float tower_margin = WIPE_TOWER_MARGIN + tower_brim_width; // set the default position, the same with print config(left top) @@ -4762,7 +4869,7 @@ int CLI::run(int argc, char **argv) wipe_y_option->set_at(&wt_y_opt, i, 0); Vec3d wipe_tower_size, wipe_tower_pos; - ArrangePolygon wipe_tower_ap = cur_plate->estimate_wipe_tower_polygon(m_print_config, i, wipe_tower_pos, wipe_tower_size, new_extruder_count, assemble_plate.filaments_count, true); + ArrangePolygon wipe_tower_ap = cur_plate->estimate_wipe_tower_polygon(m_print_config, i, wipe_tower_pos, wipe_tower_size, assemble_plate.filaments_count, true); //update the new wp position wt_x_opt.value = wipe_tower_pos(0); @@ -4788,6 +4895,8 @@ int CLI::run(int argc, char **argv) arrange_cfg.clearance_height_to_rod = height_to_rod; arrange_cfg.clearance_height_to_lid = height_to_lid; arrange_cfg.clearance_radius = clearance_radius; + arrange_cfg.nozzle_height = nozzle_height; + arrange_cfg.align_center = align_center; arrange_cfg.printable_height = print_height; arrange_cfg.min_obj_distance = 0; if (arrange_cfg.is_seq_print) { @@ -5023,7 +5132,10 @@ int CLI::run(int argc, char **argv) int extruder_size = used_filament_set.size(); auto printer_structure_opt = m_print_config.option<ConfigOptionEnum<PrinterStructure>>("printer_structure"); - const float tower_brim_width = m_print_config.option<ConfigOptionFloat>("prime_tower_width", true)->value; + // This margin only pre-adjusts the default away from the near edges; + // estimate_wipe_tower_polygon below computes the real clamped position. + float tower_brim_width = m_print_config.option<ConfigOptionFloat>("prime_tower_brim_width", true)->value; + if (tower_brim_width < 0.f) tower_brim_width = 8.f; // auto: object heights unknown here, 8 mm is the auto cap const float tower_margin = WIPE_TOWER_MARGIN + tower_brim_width; // set the default position, the same with print config(left top) float x = WIPE_TOWER_DEFAULT_X_POS; @@ -5060,7 +5172,7 @@ int CLI::run(int argc, char **argv) } Vec3d wipe_tower_size, wipe_tower_pos; - ArrangePolygon wipe_tower_ap = partplate_list.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(m_print_config, plate_index_valid, wipe_tower_pos, wipe_tower_size, new_extruder_count, extruder_size, true); + ArrangePolygon wipe_tower_ap = partplate_list.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(m_print_config, plate_index_valid, wipe_tower_pos, wipe_tower_size, extruder_size, true); //update the new wp position if (bedid < plate_count) { @@ -5161,21 +5273,16 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); - const ConfigOptionBool *wrapping_detection = m_print_config.option<ConfigOptionBool>("enable_wrapping_detection"); - bool enable_wrapping = (wrapping_detection != nullptr) && wrapping_detection->value; - - Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, new_extruder_count, filaments_cnt, false, enable_wrapping); + const WipeTowerFootprint footprint = cur_plate->estimate_wipe_tower_footprint(m_print_config, filaments_cnt); + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); Vec3d plate_origin = cur_plate->get_origin(); - int plate_width, plate_depth, plate_height; + int plate_width, plate_depth; + double plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); float depth = wipe_tower_size(1); - float margin = 15.f, wp_brim_width = 0.f; - ConfigOption *wipe_tower_brim_width_opt = m_print_config.option("prime_tower_brim_width"); - if (wipe_tower_brim_width_opt ) { - wp_brim_width = wipe_tower_brim_width_opt->getFloat(); - if (wp_brim_width < 0) wp_brim_width = WipeTower::get_auto_brim_by_height((float) wipe_tower_size.z()); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%")%wp_brim_width; - } + // Brim already resolved against the height the body was sized from. + float margin = 15.f, wp_brim_width = float(footprint.brim_width); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%")%wp_brim_width; w = wipe_tower_size(0); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: x=%1%, y=%2%, width=%3%, depth=%4%, angle=%5%, prime_volume=%6%, filaments_cnt=%7%, layer_height=%8%, plate_width=%9%, plate_depth=%10%") @@ -5238,6 +5345,8 @@ int CLI::run(int argc, char **argv) arrange_cfg.clearance_height_to_rod = height_to_rod; arrange_cfg.clearance_height_to_lid = height_to_lid; arrange_cfg.clearance_radius = clearance_radius; + arrange_cfg.nozzle_height = nozzle_height; + arrange_cfg.align_center = align_center; arrange_cfg.printable_height = print_height; arrange_cfg.min_obj_distance = 0; if (arrange_cfg.is_seq_print) { @@ -5689,6 +5798,34 @@ int CLI::run(int argc, char **argv) //Print fff_print; std::vector<size_t> plate_triangle_counts(partplate_list.get_plate_count(), 0); + // The stored (or default) tower position may not fit the tower these plates + // need, and no CLI placement site runs on a plain slice - mirror the GUI's + // reload clamp and fit every plate's tower into the printable area first. + if (m_print_config.option<ConfigOptionBool>("enable_prime_tower", true)->value) { + for (int index = 0; index < partplate_list.get_plate_count(); index++) { + if ((plate_to_slice != 0) && (plate_to_slice != (index + 1))) + continue; + Slic3r::GUI::PartPlate *plate = partplate_list.get_plate(index); + // Printing by object disables the tower only with more than one instance. + bool is_seq_print = false; + get_print_sequence(plate, m_print_config, is_seq_print); + if (is_seq_print && plate->printable_instance_size() > 1) + continue; + // An empty estimate is a plate that prints no tower (one filament and + // neither smooth timelapse, wrapping detection nor a raft). + Vec3d wt_pos, wt_size; + plate->estimate_wipe_tower_polygon(m_print_config, index, wt_pos, wt_size); + if (wt_size(0) < EPSILON || wt_size(1) < EPSILON) + continue; + ConfigOptionFloat wt_x_opt((float) wt_pos(0)); + ConfigOptionFloat wt_y_opt((float) wt_pos(1)); + m_print_config.option<ConfigOptionFloats>("wipe_tower_x", true)->set_at(&wt_x_opt, index, 0); + m_print_config.option<ConfigOptionFloats>("wipe_tower_y", true)->set_at(&wt_y_opt, index, 0); + BOOST_LOG_TRIVIAL(info) << boost::format("plate %1%: wipe tower clamped to {%2%, %3%}, size {%4%, %5%}") + % (index + 1) % wt_pos(0) % wt_pos(1) % wt_size(0) % wt_size(1); + } + } + while(!finished) { //BBS: slice every partplate one by one @@ -6497,13 +6634,26 @@ int CLI::run(int argc, char **argv) bool need_create_thumbnail_group = false, need_create_no_light_group = false, need_create_top_group = false; // get type and color for platedata - auto* filament_types = dynamic_cast<const ConfigOptionStrings*>(m_print_config.option("filament_type")); const ConfigOptionStrings* filament_color = dynamic_cast<const ConfigOptionStrings *>(m_print_config.option("filament_colour")); auto* filament_id = dynamic_cast<const ConfigOptionStrings*>(m_print_config.option("filament_ids")); const ConfigOptionFloats* nozzle_diameter_option = dynamic_cast<const ConfigOptionFloats *>(m_print_config.option("nozzle_diameter")); std::string nozzle_diameter_str; if (nozzle_diameter_option) nozzle_diameter_str = nozzle_diameter_option->serialize(); +#ifdef SLIC3R_GUI + // A Bambu printer reads slice_info.config and knows only its own catalog ids. The GUI + // gates the same translation on PresetBundle::is_bbl_vendor(); the CLI has no + // PresetBundle, so reuse the printer_model prefix that already decides + // Print::is_BBL_printer() for this same run. + auto* printer_model_option = dynamic_cast<const ConfigOptionString*>(m_print_config.option("printer_model")); + const bool is_bbl_printer = printer_model_option && printer_model_option->value.compare(0, 9, "Bambu Lab") == 0; + // No wxApp on the CLI path, so there is no live agent to ask; the translator is stateless + // over a lazily loaded map, so one instance serves every plate and filament below. + // ORCA TODO: this assumes Bambu's is the only agent with a catalog of its own. Once another + // agent carries one, resolve the agent from the selected printer the way + // GUI_App::resolve_printer_agent_id does, rather than hard-coding BBLPrinterAgent here. + const BBLPrinterAgent bbl_agent; +#endif /* SLIC3R_GUI */ for (int i = 0; i < plate_data_list.size(); i++) { PlateData *plate_data = plate_data_list[i]; @@ -6516,10 +6666,15 @@ int CLI::run(int argc, char **argv) plate_data->nozzle_diameters = nozzle_diameter_str; for (auto it = plate_data->slice_filaments_info.begin(); it != plate_data->slice_filaments_info.end(); it++) { + // get_at() on an empty vector option is UB - these can be unpopulated on a from-scratch slice std::string display_filament_type; it->type = m_print_config.get_filament_type(display_filament_type, it->id); - it->color = filament_color ? filament_color->get_at(it->id) : "#FFFFFF"; - it->filament_id = filament_id?filament_id->get_at(it->id):""; + it->color = (filament_color && !filament_color->values.empty()) ? filament_color->get_at(it->id) : "#FFFFFF"; + it->filament_id = (filament_id && !filament_id->values.empty()) ? filament_id->get_at(it->id) : ""; +#ifdef SLIC3R_GUI + if (is_bbl_printer) + it->filament_id = bbl_agent.from_orca_filament_id(it->filament_id); +#endif /* SLIC3R_GUI */ } if (!plate_data->plate_thumbnail.is_valid()) { @@ -7311,6 +7466,10 @@ bool CLI::setup(int argc, char **argv) m_config.option(optdef.first, true); set_data_dir(m_config.opt_string("datadir")); + if (!data_dir().empty() && !boost::filesystem::exists(data_dir())) { + boost::nowide::cerr << "Could not create data directory: " << data_dir() << std::endl; + return false; + } //FIXME Validating at this stage most likely does not make sense, as the config is not fully initialized yet. if (!validity.empty()) { @@ -7384,7 +7543,7 @@ void CLI::print_help(bool include_print_options, PrinterTechnology printer_techn << std::endl << "Print setting priorities:" << std::endl << "\t1) setting values from the command line (highest priority)"<< std::endl - << "\t2) setting values loaded with --load_settings and --load_filaments" << std::endl + << "\t2) setting values loaded with --load-settings and --load-filaments" << std::endl << "\t3) setting values loaded from 3mf(lowest priority)" << std::endl; /*if (include_print_options) { @@ -7423,6 +7582,10 @@ bool CLI::export_models(IO::ExportFormat format, std::string path_dir) for (ModelObject* model_object : model.objects) { const std::string path = this->output_filepath(*model_object, index++, format, path_dir); + if (path.empty()) { + boost::nowide::cerr << "Could not create output directory for STL export" << std::endl; + return false; + } success = Slic3r::store_stl(path.c_str(), model_object, true); if (success) BOOST_LOG_TRIVIAL(info) << "Model successfully exported to " << path << std::endl; @@ -7548,8 +7711,19 @@ std::string CLI::output_filepath(const ModelObject &object, unsigned int index, output_path = subdir + "/"+file_name; boost::filesystem::path subdir_path(subdir); - if (!boost::filesystem::exists(subdir_path)) - boost::filesystem::create_directory(subdir_path); + if (!boost::filesystem::exists(subdir_path)) { + try { + boost::filesystem::create_directories(subdir_path); + } catch (const boost::filesystem::filesystem_error &ex) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": failed to create output directory " << subdir_path.string() << ": " << ex.what(); + } + if (!boost::filesystem::exists(subdir_path)) { + // Directory creation failed and won't succeed on a retry (same path, same cause) - + // signal failure now instead of letting every object in the model repeat the same + // doomed attempt and fail with a less specific "export failed" error later. + return std::string(); + } + } return output_path; } diff --git a/src/OrcaSlicer_app_msvc.cpp b/src/OrcaSlicer_app_msvc.cpp index 35568a9cfa..265047fa34 100644 --- a/src/OrcaSlicer_app_msvc.cpp +++ b/src/OrcaSlicer_app_msvc.cpp @@ -297,7 +297,7 @@ int wmain(int argc, wchar_t **argv) // printf("Loading Slic3r library: %S\n", path_to_slic3r); HINSTANCE hInstance_Slic3r = LoadLibraryExW(path_to_slic3r, nullptr, 0); if (hInstance_Slic3r == nullptr) { - printf("OrcaSlicer.dll was not loaded, error=%d\n", GetLastError()); + printf("OrcaSlicer.dll was not loaded, error=%lu\n", GetLastError()); return -1; } diff --git a/src/dev-utils/BaseException.cpp b/src/dev-utils/BaseException.cpp index efb7a98245..048eadf151 100644 --- a/src/dev-utils/BaseException.cpp +++ b/src/dev-utils/BaseException.cpp @@ -9,6 +9,7 @@ #include <boost/format.hpp> #include <mutex> +#include "git_commit_hash.h" #include "libslic3r_version.h" static std::string g_log_folder; @@ -39,7 +40,7 @@ CBaseException::CBaseException(HANDLE hProcess, WORD wPID, LPCTSTR lpSymbolPath, output_file->open(log_filename, std::ios::out | std::ios::app); // Output app build info in crash log so we could look for the correct PDB files - OutputString(_T("%s\n\n"), _T(SLIC3R_APP_NAME " " SoftFever_VERSION " Build " GIT_COMMIT_HASH)); + OutputString(_T("%s\n\n"), _T(SLIC3R_APP_NAME " " SoftFever_VERSION " Build " GIT_COMMIT_HASH GIT_COMMIT_SUFFIX)); } } diff --git a/src/dev-utils/OrcaSlicer_profile_validator.cpp b/src/dev-utils/OrcaSlicer_profile_validator.cpp index 49a38cd1c4..56acbaa732 100644 --- a/src/dev-utils/OrcaSlicer_profile_validator.cpp +++ b/src/dev-utils/OrcaSlicer_profile_validator.cpp @@ -8,7 +8,11 @@ #define NANOSVGRAST_IMPLEMENTATION #include "nanosvg/nanosvgrast.h" +#include "libslic3r/BoundingBox.hpp" #include "libslic3r/GCode.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "libslic3r/Geometry.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/PresetBundle.hpp" @@ -116,15 +120,45 @@ Vec2d printable_area_center(const DynamicPrintConfig &cfg) return 0.5 * (lo + hi); } +// Put the prime tower where the GUI and CLI would before slicing. The config default (x 15, y 220) +// lies off any bed shallower than the tower, and generation rejects an off-plate tower instead of +// exporting it. Beside the centred cube, clear of the edge exclusion strips some beds carry, then +// pulled inside the printable outline by the tower's own estimated footprint, with a few mm of +// clearance so the conflict checker never sees the two touch. +void place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) +{ + const auto *area = cfg.option<ConfigOptionPoints>("printable_area"); + if (area == nullptr || area->values.size() < 3) + return; + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(cfg, resolve_wipe_tower_type(cfg), {0, 1}, cfg.opt_float("layer_height"), 10.); + if (footprint.depth < EPSILON) + return; + const double margin = WIPE_TOWER_MARGIN + footprint.brim_width; + // The position is the tower's own origin; a rotated tower extends from it in another + // direction, so place the rotated box's extents rather than the origin. + Slic3r::Polygon box({Point::new_scale(0., 0.), Point::new_scale(footprint.width, 0.), Point::new_scale(footprint.width, footprint.depth), Point::new_scale(0., footprint.depth)}); + box.rotate(Geometry::deg2rad(cfg.opt_float("wipe_tower_rotation_angle"))); + const BoundingBox local = get_extents(box); + const Vec2d lo = unscale(local.min); + const Vec2d size = unscale(local.max) - lo; + Vec2d pos(center.x() + 5. + margin + 5. - lo.x(), center.y() - size.y() / 2. - lo.y()); + box.translate(Point::new_scale(pos.x(), pos.y())); + const Vec2f move = WipeTower::move_box_inside_polygon(get_extents(box), Polygons{Polygon::new_scale(area->values)}, scaled<coord_t>(margin)); + pos += move.cast<double>(); + cfg.option<ConfigOptionFloats>("wipe_tower_x", true)->values = {pos.x()}; + cfg.option<ConfigOptionFloats>("wipe_tower_y", true)->values = {pos.y()}; +} + // Slice one centered cube that switches from filament 1 to filament 2 partway up, so exactly one // filament change fires, then export. The change drives the printer's own change_filament_gcode: on a // single-nozzle machine it rides the AMS prime tower (append_tcr), on a multi-nozzle machine it routes // through the nozzle swap (set_extruder / append_tcr2) - the engine picks the path from the printer's // topology, so one model covers both. An undefined placeholder in any shipped custom g-code throws // Slic3r::PlaceholderParserError from export. -std::string slice_two_color_cube_and_export(const DynamicPrintConfig &cfg, bool is_bbl) +std::string slice_two_color_cube_and_export(DynamicPrintConfig cfg, bool is_bbl) { const Vec2d center = printable_area_center(cfg); + place_wipe_tower(cfg, center); TriangleMesh m = make_cube(10, 10, 10); m.translate(float(center.x() - 5.), float(center.y() - 5.), 0.f); @@ -175,6 +209,17 @@ void select_printer_default_presets(PresetBundle &bundle) if (const auto *def_fil = printer_preset.config.option<ConfigOptionStrings>("default_filament_profile"); def_fil != nullptr && !def_fil->values.empty()) bundle.filaments.select_preset_by_name(def_fil->values.front(), /*force=*/true); + // Re-seed the per-slot filament list from that selection, or the sweep's result depends on the + // printer sliced before it. Once there are 2+ slots, full_config() builds the filament config from + // filament_presets and ignores the selected preset (PresetBundle::full_fff_config), while + // update_compatible() only replaces a slot that has gone *incompatible* - and when it does, it ranks + // the outgoing preset's alias, then its filament type, above the printer's own default. The sweep + // grows every printer to 2 slots and update_multi_material_filament_presets() never shrinks them, so + // a material picked up on the first printer rides the whole run. With all vendors loaded the first + // printer inherits a TPU (the load-time pick is whichever filament sorts first), the type match + // re-resolves it to "Generic TPU @System", and its alias then pins every later printer to that + // vendor's own "Generic TPU @..." - which the BBL dual-nozzle profiles rightly refuse to group. + bundle.filament_presets.assign(1, bundle.filaments.get_selected_preset_name()); } // The vendor/printer currently being sliced, stamped onto every engine log record by the sink below so @@ -381,7 +426,7 @@ int main(int argc, char* argv[]) ("generate_presets,g", po::value<bool>()->default_value(false), "Generate user presets for mock test") ("slice,s", po::bool_switch()->default_value(false), "Slice a two-colour cube through every printer to expand all custom g-code (catches placeholder/flow errors that static checks miss). Off unless this flag is present.") ("outdir,o", po::value<std::string>()->default_value(""), "With -s, also save each printer's g-code to this folder (as <vendor>__<printer>.gcode) for manual inspection. Optional.") - ("check_filament_subtypes,f", po::bool_switch()->default_value(false), "Also flag printers with duplicate (ambiguous) filament subtypes. Off unless this flag is present.") + ("check_filament_subtypes,f", po::bool_switch()->default_value(true), "Also flag printers with duplicate (ambiguous) filament subtypes. Off unless this flag is present.") ("log_level,l", po::value<int>()->default_value(2), "Log level. Optional, default is 2 (warning). Higher values produce more detailed logs."); // clang-format on diff --git a/src/dev-utils/StackWalker.cpp b/src/dev-utils/StackWalker.cpp index 468e8927a5..6038196cb0 100644 --- a/src/dev-utils/StackWalker.cpp +++ b/src/dev-utils/StackWalker.cpp @@ -364,7 +364,7 @@ void CStackWalker::GetModuleInformation(LPMODULE_INFO pmi) if (dwInfoSize > 0) { - LPVOID lpData = new byte[dwInfoSize]; + byte *lpData = new byte[dwInfoSize]; ZeroMemory(lpData, dwInfoSize * sizeof(byte)); if (GetFileVersionInfo(pmi->szModulePath, dwHandle, dwInfoSize, lpData) > 0 ) diff --git a/src/libslic3r/Algorithm/LineSplit.hpp b/src/libslic3r/Algorithm/LineSplit.hpp index 58b9fdc34a..e12113fa6c 100644 --- a/src/libslic3r/Algorithm/LineSplit.hpp +++ b/src/libslic3r/Algorithm/LineSplit.hpp @@ -49,7 +49,7 @@ SplittedLine split_line(const PathType& path, const ExPolygons& clip, bool close // Convert the input path into an open ZPath ClipperZUtils::ZPath p; - p.reserve(path.size() + closed ? 1 : 0); + p.reserve(path.size() + (closed ? 1 : 0)); ClipperLib_Z::cInt z = 0; for (const auto& point : path) { p.emplace_back(point.x(), point.y(), z); diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 39fffd57a5..4c6eefa470 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -1448,6 +1448,7 @@ void AppConfig::set_mouse_device(const std::string& name, double translation_spe it->second["invert_yaw"] = invert_yaw ? "1" : "0"; it->second["invert_pitch"] = invert_pitch ? "1" : "0"; it->second["invert_roll"] = invert_roll ? "1" : "0"; + m_dirty = true; } std::vector<std::string> AppConfig::get_mouse_device_names() const @@ -1833,4 +1834,9 @@ bool AppConfig::exists() return boost::filesystem::exists(config_path()); } +std::string AppConfig::load_if_exists() +{ + return boost::filesystem::exists(loading_path()) ? load() : std::string(); +} + }; // namespace Slic3r diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 0a278f4f1f..c799502993 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -113,8 +113,10 @@ public: void set_defaults(); // Load the slic3r.ini from a user profile directory (or a datadir, if configured). - // return error string or empty strinf + // Return an error string, or an empty string on success. std::string load(); + // Treat a missing config as default state; otherwise load it normally. + std::string load_if_exists(); // Store the slic3r.ini into a user profile directory (or a datadir, if configured). void save(); diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 48e6950a82..fd496537f4 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -797,7 +797,7 @@ public: } }); - m_pck.unfitIndicator([this](std::string name) { + m_pck.unfitIndicator([](std::string name) { BOOST_LOG_TRIVIAL(debug) << "arrange progress: " + name; }); diff --git a/src/libslic3r/BlacklistedLibraryCheck.cpp b/src/libslic3r/BlacklistedLibraryCheck.cpp index 938f542497..cf7e6da2aa 100644 --- a/src/libslic3r/BlacklistedLibraryCheck.cpp +++ b/src/libslic3r/BlacklistedLibraryCheck.cpp @@ -1,6 +1,7 @@ #include "BlacklistedLibraryCheck.hpp" #include <cstdio> +#include <boost/filesystem/path.hpp> #include <boost/nowide/convert.hpp> #ifdef WIN32 diff --git a/src/libslic3r/BuildVolume.cpp b/src/libslic3r/BuildVolume.cpp index 1ac200d9c8..15e6668bae 100644 --- a/src/libslic3r/BuildVolume.cpp +++ b/src/libslic3r/BuildVolume.cpp @@ -13,7 +13,6 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double : m_bed_shape(printable_area), m_max_print_height(printable_height), m_extruder_shapes(extruder_areas), m_extruder_printable_height(extruder_printable_heights) { assert(printable_height >= 0); - //assert(extruder_printable_heights.size() == extruder_areas.size()); m_polygon = Polygon::new_scale(printable_area); assert(m_polygon.is_counter_clockwise()); @@ -86,6 +85,9 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double m_shared_volume.data[2] = m_bboxf.max.x(); m_shared_volume.data[3] = m_bboxf.max.y(); m_shared_volume.zs[1] = m_bboxf.max.z(); + if (extruder_printable_heights.size() < m_extruder_shapes.size()) + BOOST_LOG_TRIVIAL(warning) << boost::format("extruder_printable_height has only %1% entries but extruder_printable_area has %2%, falling back to the bed printable_height for the missing ones") + % extruder_printable_heights.size() % m_extruder_shapes.size(); for (unsigned int index = 0; index < m_extruder_shapes.size(); index++) { std::vector<Vec2d>& extruder_shape = m_extruder_shapes[index]; @@ -100,7 +102,9 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double return; } - if ((extruder_shape == printable_area)&&(extruder_printable_heights[index] == printable_height)) { + const double extruder_height = index < extruder_printable_heights.size() ? extruder_printable_heights[index] : printable_height; + + if ((extruder_shape == printable_area)&&(extruder_height == printable_height)) { extruder_volume.same_with_bed = true; extruder_volume.type = m_type; extruder_volume.bbox = m_bbox; @@ -113,7 +117,7 @@ BuildVolume::BuildVolume(const std::vector<Vec2d> &printable_area, const double double poly_area = poly.area(); extruder_volume.bbox = get_extents(poly); BoundingBoxf temp_bboxf = get_extents(extruder_shape); - extruder_volume.bboxf = BoundingBoxf3{ to_3d(temp_bboxf.min, 0.), to_3d(temp_bboxf.max, extruder_printable_heights[index]) }; + extruder_volume.bboxf = BoundingBoxf3{ to_3d(temp_bboxf.min, 0.), to_3d(temp_bboxf.max, extruder_height) }; if (extruder_shape.size() >= 4 && std::abs((poly_area - double(extruder_volume.bbox.size().x()) * double(extruder_volume.bbox.size().y()))) < sqr(SCALED_EPSILON)) { diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 2880a3cc6b..e860f50280 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -147,6 +147,8 @@ set(lisbslic3r_sources Fill/FillBase.hpp Fill/FillConcentric.cpp Fill/FillConcentric.hpp + Fill/FillSpiralInset.cpp + Fill/FillSpiralInset.hpp Fill/FillConcentricInternal.cpp Fill/FillConcentricInternal.hpp Fill/FillCornerSmoothing.cpp @@ -270,6 +272,8 @@ set(lisbslic3r_sources GCode/WipeTower2.hpp GCode/WipeTower.cpp GCode/WipeTower.hpp + GCode/WipeTowerEstimate.cpp + GCode/WipeTowerEstimate.hpp GCodeWriter.cpp GCodeWriter.hpp Geometry/ArcWelder.hpp @@ -368,6 +372,8 @@ set(lisbslic3r_sources Preset.hpp PrincipalComponents2D.cpp PrincipalComponents2D.hpp + PublishSettings.cpp + PublishSettings.hpp PrintApply.cpp PrintBase.cpp PrintBase.hpp @@ -663,6 +669,13 @@ if(SLIC3R_PROFILE) target_link_libraries(libslic3r PRIVATE Shiny) endif() +if (WIN32) + # Public, since BlacklistedLibraryCheck.hpp includes windows.h. Empty + # WIN32_LEAN_AND_MEAN matches the sources that define it themselves; bare + # NOMINMAX matches the one libigl already passes. + target_compile_definitions(libslic3r PUBLIC "WIN32_LEAN_AND_MEAN=" "NOMINMAX") +endif () + if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r pchheader.hpp FORCEINCLUDE) endif () diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 242e4bb146..394cfb5b74 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -1049,7 +1049,8 @@ int ConfigBase::load_from_json(const std::string &file, ConfigSubstitutionContex std::vector<std::string>& different_settings = this->option<ConfigOptionStrings>("different_settings_to_system", true)->values; size_t size = different_settings.size(); if (size == 0) { - size = this->option<ConfigOptionStrings>("filament_settings_id")->values.size() + 2; + const auto *filament_ids = this->option<ConfigOptionStrings>("filament_settings_id"); + size = (filament_ids ? filament_ids->values.size() : 0) + 2; different_settings.resize(size); } @@ -1715,6 +1716,36 @@ const ConfigOption* DynamicConfig::optptr(const t_config_option_key &opt_key) co return (it == options.end()) ? nullptr : it->second.get(); } +// ConfigOptionBool(s)::deserialize only understands "1" and "0", but scripts commonly spell CLI +// flags as --opt=true or --opt=no. Map the usual spellings onto what deserialize() accepts, per +// comma-separated item so vector options keep working, and pass anything else through unchanged +// so a genuine typo is still reported as invalid. +static std::string normalize_cli_bool_value(const std::string &value) +{ + static const char* true_values[] = { "1", "true", "yes", "on", "enabled" }; + static const char* false_values[] = { "0", "false", "no", "off", "disabled" }; + + auto matches = [](const std::string &item, const char* const* candidates, size_t count) { + return std::any_of(candidates, candidates + count, [&item](const char* candidate) { return boost::iequals(item, candidate); }); + }; + + std::string normalized; + std::istringstream is(value); + std::string item; + while (std::getline(is, item, ',')) { + boost::trim(item); + if (! normalized.empty()) + normalized += ","; + if (matches(item, true_values, std::size(true_values))) + normalized += "1"; + else if (matches(item, false_values, std::size(false_values))) + normalized += "0"; + else + normalized += item; + } + return normalized; +} + bool DynamicConfig::read_cli(int argc, const char* const argv[], t_config_option_keys* extra, t_config_option_keys* keys) { // cache the CLI option => opt_key mapping @@ -1812,17 +1843,32 @@ bool DynamicConfig::read_cli(int argc, const char* const argv[], t_config_option // to the end of the value. if (opt_base->type() == coBools && value.empty()) static_cast<ConfigOptionBools*>(opt_base)->values.push_back(!no); - else + else { // Deserialize any other vector value (ConfigOptionInts, Floats, Percents, Points) the same way // they get deserialized from an .ini file. For ConfigOptionStrings, that means that the C-style unescape // will be applied for values enclosed in quotes, while values non-enclosed in quotes are left to be // unescaped by the calling shell. - opt_vector->deserialize(value, true); + const std::string vector_value = opt_base->type() == coBools ? normalize_cli_bool_value(value) : value; + bool deserialized = false; + try { + deserialized = opt_vector->deserialize(vector_value, true); + } catch (const std::exception &ex) { + // e.g. "nil" deserialized into a non-nullable vector option throws instead of + // returning false - treat that the same as any other invalid value here. + deserialized = false; + } + if (! deserialized) { + boost::nowide::cerr << "Invalid value for option --" << token.c_str() << std::endl; + return false; + } + } } else if (opt_base->type() == coBool) { if (value.empty()) static_cast<ConfigOptionBool*>(opt_base)->value = !no; - else - opt_base->deserialize(value); + else if (! opt_base->deserialize(normalize_cli_bool_value(value))) { + boost::nowide::cerr << "Invalid value for option --" << token.c_str() << std::endl; + return false; + } } else if (opt_base->type() == coString) { // Do not unescape single string values, the unescaping is left to the calling shell. static_cast<ConfigOptionString*>(opt_base)->value = value; diff --git a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp index 97f8f743fb..e5fbeb5cdb 100644 --- a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp +++ b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp @@ -342,7 +342,7 @@ void fuzzy_polyline(Points& poly, bool closed, coordf_t slice_z, const FuzzySkin } // Thanks Cura developers for this function. -void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice_z, const FuzzySkinConfig& cfg, bool closed) +void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice_z, coordf_t layer_height, const FuzzySkinConfig& cfg, bool closed) { if (cfg.noise_type == NoiseType::Ripple) { @@ -356,7 +356,9 @@ void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice const double min_dist_between_points = cfg.point_distance * 3. / 4.; // hardcoded: the point distance may vary between 3/4 and 5/4 the supplied value const double range_random_point_dist = cfg.point_distance / 2.; - const double min_extrusion_width = 0.01; // workaround for many print options. Need overwrite formula with the layer height parameter. The width must more than >>> layer_height * (1 - 0.25 * PI) * 1.05 <<< (last num is the coeff of overlay error case) + // ExtrusionJunction::w is a scaled coord_t, so this floor must be scaled too. + // Flow::rounded_rectangle_extrusion_spacing() requires width > height * (1 - 0.25 * PI); keep 5% above it. + const double min_extrusion_width = scaled<double>(layer_height * (1. - 0.25 * M_PI) * 1.05); double dist_left_over = random_value() * (min_dist_between_points / 2.); // the distance to be traversed on the line before making the first new point auto* p0 = &ext_lines.front(); @@ -685,12 +687,13 @@ Polygon apply_fuzzy_skin(const Polygon& polygon, const PerimeterGenerator& perim void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerator& perimeter_generator, const bool is_contour, const bool closed) { const auto slice_z = perimeter_generator.slice_z; + const auto layer_height = perimeter_generator.layer_height; const auto& regions = perimeter_generator.regions_by_fuzzify; if (regions.size() == 1) { // optimization const auto& config = regions.begin()->first; const bool fuzzify = should_fuzzify(config, perimeter_generator.layer_id, extrusion->inset_idx, is_contour); if (fuzzify) - fuzzy_extrusion_line(extrusion->junctions, slice_z, config, closed); + fuzzy_extrusion_line(extrusion->junctions, slice_z, perimeter_generator.layer_height, config, closed); } else { // Merge regions that produce identical fuzzy effects (differ only in type). // When the style (e.g. External) and a painted region (All) both fuzzify this loop @@ -701,7 +704,7 @@ void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerato // Fast path: single merged region — apply directly without splitting if (merged_regions.size() == 1 && merged_regions.front().expolygons.empty()) { - fuzzy_extrusion_line(extrusion->junctions, slice_z, *merged_regions.front().config, closed); + fuzzy_extrusion_line(extrusion->junctions, slice_z, perimeter_generator.layer_height, *merged_regions.front().config, closed); return; } @@ -761,7 +764,7 @@ void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerato // Fuzzy splitted extrusion if (std::all_of(splitted.begin(), splitted.end(), [](const Algorithm::SplitLineJunction& j) { return j.clipped; })) { // The entire polygon is fuzzified - fuzzy_extrusion_line(extrusion->junctions, slice_z, *r.config, closed); + fuzzy_extrusion_line(extrusion->junctions, slice_z, perimeter_generator.layer_height, *r.config, closed); continue; } else { const auto current_ext = extrusion->junctions; @@ -769,12 +772,12 @@ void apply_fuzzy_skin(Arachne::ExtrusionLine* extrusion, const PerimeterGenerato segment.reserve(current_ext.size()); extrusion->junctions.clear(); - const auto fuzzy_current_segment = [&segment, &extrusion, &r, slice_z]() { + const auto fuzzy_current_segment = [&segment, &extrusion, &r, slice_z, layer_height]() { // Orca: non fuzzy points to isolate fuzzy region const auto front = segment.front(); const auto back = segment.back(); - fuzzy_extrusion_line(segment, slice_z, *r.config, false); + fuzzy_extrusion_line(segment, slice_z, layer_height, *r.config, false); // Orca: only add non fuzzy point if it's not in the extrusion closing point. if (!extrusion->junctions.empty() && extrusion->junctions.front().p != front.p) { extrusion->junctions.push_back(front); diff --git a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp index 51d503a3c9..ab0c491b38 100644 --- a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp +++ b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp @@ -9,7 +9,7 @@ namespace Slic3r::Feature::FuzzySkin { void fuzzy_polyline(Points& poly, bool closed, coordf_t slice_z, const FuzzySkinConfig& cfg); -void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice_z, const FuzzySkinConfig& cfg, bool closed = true); +void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice_z, coordf_t layer_height, const FuzzySkinConfig& cfg, bool closed = true); void group_region_by_fuzzify(PerimeterGenerator& g); diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 0888e1bb55..dc772580ca 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -950,7 +950,7 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p params.extruder = region_config.internal_solid_filament_id; // Orca: forced fill order applies only to top/bottom surfaces filled with a // center-based pattern; everything else stays at Default to keep batching together. - if (params.pattern == ipConcentric || params.pattern == ipArchimedeanChords || params.pattern == ipOctagramSpiral) { + if (params.pattern == ipConcentric || params.pattern == ipSpiralInset || params.pattern == ipArchimedeanChords || params.pattern == ipOctagramSpiral) { if (params.extrusion_role == erTopSolidInfill) params.fill_order = region_config.top_surface_fill_order.value; else if (params.extrusion_role == erBottomSurface) @@ -1332,7 +1332,8 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.anchor_length = surface_fill.params.anchor_length; params.anchor_length_max = surface_fill.params.anchor_length_max; params.resolution = resolution; - params.use_arachne = surface_fill.params.pattern == ipConcentric || surface_fill.params.pattern == ipConcentricInternal; + params.use_arachne = surface_fill.params.pattern == ipConcentric || surface_fill.params.pattern == ipSpiralInset || + surface_fill.params.pattern == ipConcentricInternal; params.layer_height = layerm->layer()->height; params.lateral_lattice_angle_1 = surface_fill.params.lateral_lattice_angle_1; params.lateral_lattice_angle_2 = surface_fill.params.lateral_lattice_angle_2; @@ -1515,6 +1516,7 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc case ipCubic: case ipLine: case ipConcentric: + case ipSpiralInset: case ipHoneycomb: case ipLateralHoneycomb: case ip3DHoneycomb: diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index 45157ec42d..f4615dc640 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -15,6 +15,7 @@ #include "FillBase.hpp" #include "FillConcentric.hpp" +#include "FillSpiralInset.hpp" #include "FillHoneycomb.hpp" #include "Fill3DHoneycomb.hpp" #include "FillGyroid.hpp" @@ -41,6 +42,7 @@ Fill* Fill::new_from_type(const InfillPattern type) { switch (type) { case ipConcentric: return new FillConcentric(); + case ipSpiralInset: return new FillSpiralInset(); case ipHoneycomb: return new FillHoneycomb(); case ipLateralHoneycomb: return new FillLateralHoneycomb(); case ip3DHoneycomb: return new Fill3DHoneycomb(); @@ -2465,9 +2467,11 @@ void Fill::connect_base_support(Polylines &&infill_ordered, const std::vector<co #endif // INFILL_DEBUG_OUTPUT const std::vector<SupportArcCost> arches = evaluate_support_arches(infill_ordered, graph, spacing, params); - static const double cost_low = line_spacing * 1.3; - static const double cost_high = line_spacing * 2.; - static const double cost_veryhigh = line_spacing * 3.; + // Must not be static: line_spacing varies per call (base vs interface fills differ), + // and a static here would fix these to whichever call ran first, order depending on thread count. + const double cost_low = line_spacing * 1.3; + const double cost_high = line_spacing * 2.; + const double cost_veryhigh = line_spacing * 3.; { std::vector<const SupportArcCost*> selected; diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index 0c82354b38..7edf350081 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -2395,12 +2395,7 @@ static std::vector<MonotonicRegionLink> chain_monotonic_regions( } // Probability (unnormalized) of traversing a link between two monotonic regions. - auto path_probability = [ -#ifndef __APPLE__ - // clang complains when capturing constexpr constants. - pheromone_alpha, pheromone_beta -#endif // __APPLE__ - ](AntPath &path) { + auto path_probability = [](AntPath &path) { return pow(path.pheromone, pheromone_alpha) * pow(path.visibility, pheromone_beta); }; @@ -3095,10 +3090,11 @@ bool FillRectilinear::fill_surface_trapezoidal( case 0: // Grid / Trapezoidal { // Generate a non-crossing trapezoidal pattern to avoid overextrusion at intersections when `multiline > 1`. - // P2--P3 - // / \ - // P0_P1/ \P4_ - // + /* + * P2--P3 + * / \ + * P0_P1/ \P4_ + */ // P0xP1x=P4xP0x=d1/2 // P2xP3x=d1 // P1yP2y=P2yP3y=d2 @@ -3176,10 +3172,12 @@ bool FillRectilinear::fill_surface_trapezoidal( case 1: // Triangular { // Generate a non-crossing trapezoidal pattern with a base line below. - // P1-P2 - // / \ - // P0/ \P3_P4 - // ---------------- + /* + * P1-P2 + * / \ + * P0/ \P3_P4 + * ---------------- + */ // P1xP2x=P3xP4x=d2 // P0yP1y=P2yP3y=h-2d1 // diff --git a/src/libslic3r/Fill/FillSpiralInset.cpp b/src/libslic3r/Fill/FillSpiralInset.cpp new file mode 100644 index 0000000000..e6323c2572 --- /dev/null +++ b/src/libslic3r/Fill/FillSpiralInset.cpp @@ -0,0 +1,426 @@ +#include "../ClipperUtils.hpp" +#include "../ExPolygon.hpp" +#include "../Surface.hpp" +#include "../VariableWidth.hpp" +#include "Arachne/WallToolPaths.hpp" + +#include "FillSpiralInset.hpp" + +#include <algorithm> +#include <cmath> +#include <functional> + +namespace Slic3r { + +// Index of the corner the spiral should start at. Every following loop is split at the point nearest +// the end of the one before it, so this choice propagates inwards and decides where the whole spiral +// hands over from ring to ring. A tight corner is the worst place for it: there the next ring +// retreats along the bisector by spacing/sin(angle), so the spiral has to strike out several spacings +// to reach it instead of stepping across to a ring running parallel one spacing away. +// +// A right angle is taken first when the loop has one. It clips cleanly, since the trimming below +// scales with 1/sin(angle) and so is at its shortest and least sensitive there, and it holds its +// shape as the loop is offset inwards, which keeps the handover in the same place ring after ring. +// Failing that the widest corner is the flattest stretch on offer, which is the next best handover. +// A straight point is no corner at all and only turns up as an artefact of the offsetting, so it is +// skipped. +static int find_spiral_start_corner(const Polygon& loop) +{ + const size_t n = loop.points.size(); + if (n < 3) + return 0; + + // cos(85 deg): a corner within five degrees of square counts as a right angle. + static const double right_angle_cos = 0.08716; + // cos(179 deg): anything flatter than this counts as a straight point rather than a corner. + static const double straight_cos = -0.99985; + + // Only convex corners qualify. A reflex corner spans the same angle between its two edges but + // bulges the other way, so the next ring in steps away from it along the bisector instead of + // hugging it, and starting there hands over across a long diagonal on every single ring. Loops + // arrive counter-clockwise, in which case a convex corner turns left, but check the winding + // rather than trust it. A closed loop always has at least one convex corner. + const double convex_turn = loop.is_counter_clockwise() ? 1.0 : -1.0; + + double best_right_cos = right_angle_cos; + int best_right = -1; + double best_wide_cos = 1.0; + int best_wide = -1; + for (size_t i = 0; i < n; ++i) { + const Point& p_prev = loop.points[(i - 1 + n) % n]; + const Point& p = loop.points[i]; + const Point& p_next = loop.points[(i + 1) % n]; + + Vec2d e_in = (p - p_prev).cast<double>(); + Vec2d e_out = (p_next - p).cast<double>(); + double len1 = e_in.norm(); + double len2 = e_out.norm(); + if (len1 < 1e-6 || len2 < 1e-6) + continue; + if (convex_turn * (e_in.x() * e_out.y() - e_in.y() * e_out.x()) <= 0.0) + continue; + + // Cosine of the angle the two edges span at the corner: 1 at a spike, 0 square, -1 straight. + double cos_val = -e_in.dot(e_out) / (len1 * len2); + if (std::abs(cos_val) < best_right_cos) { + best_right_cos = std::abs(cos_val); + best_right = int(i); + } + if (cos_val > straight_cos && cos_val < best_wide_cos) { + best_wide_cos = cos_val; + best_wide = int(i); + } + } + if (best_right >= 0) + return best_right; + // A loop smooth enough to have no corner at all, a circle say, hands over equally well anywhere. + return best_wide < 0 ? 0 : best_wide; +} + +// Length to trim off the end of a loop so that it does not overlap the start of the next one. +// The theoretical gap is distance/sin(alpha), alpha being the angle between the last segment of the +// loop and the first segment of the next one. +static double loop_clip_length(const Polyline& loop_path, const double gap) +{ + const Point& p_prev = loop_path.points[loop_path.points.size() - 2]; + const Point& p_last = loop_path.points.back(); + const Point& p_next = loop_path.points[1]; + Vec2d v1 = (p_last - p_prev).cast<double>(); + Vec2d v2 = (p_next - p_last).cast<double>(); + if (v1.norm() < 1e-6 || v2.norm() < 1e-6) + return gap; + + double alpha = std::atan2(std::abs(v1.x() * v2.y() - v1.y() * v2.x()), v1.dot(v2)); + // Outside 45deg < alpha < 120deg the 1/sin(alpha) term would clip far too much, so fall back to the plain gap. + return (alpha > M_PI / 4 && alpha < 2 * M_PI / 3) ? gap / std::sin(alpha) : gap; +} + +// The chaining below drives two kinds of loop: the plain offset polygons of the classic path, and +// Arachne's variable width walls. These are the only four steps that differ between them. Widths run +// two per segment, so every point added or removed takes a pair with it. +static Polyline open_loop(const Polygon& loop, int start_index) { return loop.split_at_index(start_index); } + +static ThickPolyline open_loop(const Arachne::ExtrusionLine& loop, int start_index) +{ + ThickPolyline path = Arachne::to_thick_polyline(loop); + // start_at_index() rotates a closed path, and wants it closed with a matching width at both ends. + if (path.points.front() != path.points.back()) { + const coordf_t w_first = path.width.front(), w_last = path.width.back(); + path.points.emplace_back(path.points.front()); + path.width.emplace_back(w_last); + path.width.emplace_back(w_first); + } + path.start_at_index(start_index); + return path; +} + +static void clip_path_end(Polyline& path, double distance) { path.clip_end(distance); } + +static void clip_path_end(ThickPolyline& path, double distance) +{ + // Polyline::clip_end() knows nothing about the widths, so walk back trimming the two together. + while (distance > 0 && path.points.size() >= 2) { + const Point last = path.points.back(); + const coordf_t w_end = path.width.back(); + path.points.pop_back(); + path.width.pop_back(); + const coordf_t w_start = path.width.back(); + path.width.pop_back(); + + const Vec2d v = (path.points.back() - last).cast<double>(); + const double len = v.norm(); + if (len > distance) { + const double t = distance / len; + path.points.emplace_back((last.cast<double>() + v * t).cast<coord_t>()); + path.width.emplace_back(w_start); + path.width.emplace_back(w_start + (w_end - w_start) * (1.0 - t)); + return; + } + distance -= len; + } + path.clear(); +} + +static void append_path(Polyline& dst, Polyline&& src) { dst.append(std::move(src)); } + +static void append_path(ThickPolyline& dst, ThickPolyline&& src) +{ + if (dst.empty()) { + dst = std::move(src); + return; + } + if (dst.points.back() == src.points.front()) { + // Carrying straight on from the same point, so there is no run across to give a width to. + src.points.erase(src.points.begin()); + src.width.erase(src.width.begin(), src.width.begin() + 2); + } else { + // The run across to the next loop tapers between the two ends it joins. + const coordf_t w_from = dst.width.back(), w_to = src.width.front(); + dst.width.emplace_back(w_from); + dst.width.emplace_back(w_to); + } + append(dst.points, std::move(src.points)); + append(dst.width, std::move(src.width)); +} + +// The classic loops all carry the same width, so the innermost one of an island can still ring an +// unfilled pin hole, which the spiral plugs by running into the middle. Arachne's walls widen to take +// up whatever is left over, so there is nothing there to plug and the stub would only double back +// over the wall that just filled it. +static bool leaves_a_centre_hole(const Polygon&) { return true; } +static bool leaves_a_centre_hole(const Arachne::ExtrusionLine&) { return false; } + +static void append_path_point(Polyline& path, const Point& point) { path.points.emplace_back(point); } + +static void append_path_point(ThickPolyline& path, const Point& point) +{ + const coordf_t w = path.width.back(); + path.points.emplace_back(point); + path.width.emplace_back(w); + path.width.emplace_back(w); +} + +// Chain the loops of one surface into as few continuous spirals as its shape allows. The loops arrive +// ordered outside in, depth first, each paired with its outline in loop_outlines; every decision here +// is made on those outlines, so the two kinds of loop take exactly the same route. +template<class LoopType, class PathType> +static std::vector<PathType> generate_spiral_insets(const FillParams& params, + const std::vector<const LoopType*>& loops, + const Polygons& loop_outlines, + const coord_t distance, + const ExPolygon& original_expoly) +{ + std::vector<PathType> output; + PathType spiral; + Point current_pos(0, 0); + // Index into loops of the innermost loop appended to the spiral currently being built. + int innermost_loop = -1; + + // Whether the spiral can run straight from one point to the other. The run across is extruded, + // not travelled, so it has to be a genuine step over to the ring alongside: + // - up to a ring spacing and a half it cannot leave the material, and needs no check at all, + // which covers all but a few of the loops; + // - beyond that it is tested against the surface, which catches the points that are close in a + // straight line but separated by a hole or a notch; + // - past four spacings it is refused outright. A handover does stretch at a corner, where the + // next ring retreats along the bisector by spacing/sin(angle), but four spacings is already a + // fifteen degree wedge, and down a wedge that tight the run across would trace the bisector, + // which is where the tail is filled from anyway. Anything longer is a traverse across the + // surface that prints over what it crosses. Breaking the spiral leaves the G-code to travel it. + const double free_hop = 1.5 * double(distance); + const double max_hop = 4.0 * double(distance); + auto reachable = [&](const Point& from, const Point& to) { + const double hop = from.distance_to(to); + if (hop > max_hop) + return false; + return hop <= free_hop || original_expoly.contains(Line(from, to)); + }; + + // The centre point plugs the pin hole left in the middle of an island, it is not meant to + // traverse it, so it is only worth adding when the innermost loop has shrunk to about a ring. + const double max_center_stub = 2.0 * double(distance); + + // Emit the spiral built so far as one path and start over on a fresh island. + auto flush_spiral = [&]() { + if (spiral.empty()) + return; + // Run into the middle of the innermost loop so the island's centre is filled instead of being + // left as a pin hole. Only where there is a hole to fill: the loop has to still enclose open + // space once its own bead is accounted for, or the stub just runs back over that bead. And + // the point has to sit inside the loop and be reachable, or it runs off across the surface. + if (innermost_loop >= 0 && leaves_a_centre_hole(*loops[innermost_loop])) { + const Polygon& innermost = loop_outlines[innermost_loop]; + const Point centroid = innermost.centroid(); + if (!offset(innermost, -float(0.5 * double(distance))).empty() && centroid != spiral.last_point() && + spiral.last_point().distance_to(centroid) <= max_center_stub && innermost.contains(centroid) && + reachable(spiral.last_point(), centroid)) + append_path_point(spiral, centroid); + } + output.emplace_back(std::move(spiral)); + spiral.clear(); + innermost_loop = -1; + current_pos = Point(0, 0); + }; + + for (size_t i = 0; i < loops.size(); ++i) { + const Polygon& outline = loop_outlines[i]; + if (outline.points.empty()) + continue; + + // The loop is opened into a path with the split point repeated at both ends, so a usable one + // has at least 3 points. Both kinds of loop share the outline's indices, hence its start point. + PathType loop_path = open_loop(*loops[i], spiral.empty() ? find_spiral_start_corner(outline) : + current_pos.nearest_point_index(outline.points)); + if (loop_path.size() < 3) + continue; + + // Island jumping: the loops are ordered by their nesting, depth first, so the next one + // continues the current spiral exactly when it lies inside the one just laid down. Distance + // cannot stand in for that test: at a sharp corner the next ring retreats along the bisector + // by spacing/sin(angle), which leaves it several spacings away while still being the very + // next ring in, and the spiral would break off at every spike. + const bool same_island = innermost_loop >= 0 && loop_outlines[innermost_loop].contains(loop_path.points.front()); + if (!spiral.empty() && (!same_island || !reachable(spiral.last_point(), loop_path.points.front()))) { + flush_spiral(); + loop_path = open_loop(*loops[i], find_spiral_start_corner(outline)); + if (loop_path.size() < 3) + continue; + } + + // Clip the end of the loop to leave room for the run into the next one. The last loop of the + // surface has no successor, so it only gives up half of the gap. + clip_path_end(loop_path, loop_clip_length(loop_path, (i + 1 == loops.size() ? 0.5 : 1.0) * double(distance))); + // Clipping empties the path when the loop is shorter than the clipping length, which happens + // on the degenerate slivers that offsetting leaves behind. Such a loop carries no extrusion. + if (loop_path.size() < 2) + continue; + + append_path(spiral, std::move(loop_path)); + innermost_loop = int(i); + current_pos = spiral.last_point(); + } + + flush_spiral(); + + // An outward fill order runs every spiral from its centre to its outer edge, innermost island first. + if (params.fill_order != SurfaceFillOrder::Inward) { + for (PathType& path : output) + path.reverse(); + std::reverse(output.begin(), output.end()); + } + + return output; +} + +void FillSpiralInset::_fill_surface_single(const FillParams& params, + unsigned int thickness_layers, + const std::pair<float, Point>& direction, + ExPolygon expolygon, + Polylines& polylines_out) +{ + BoundingBox bounding_box = expolygon.contour.bounding_box(); + + coord_t min_spacing = scale_(this->spacing); + coord_t distance = coord_t(min_spacing / params.density); + + if (params.density > 0.9999f && !params.dont_adjust) { + distance = this->_adjust_solid_spacing(bounding_box.size()(0), distance); + this->spacing = unscale<double>(distance); + } + + Polygons loops = to_polygons(expolygon); + + ExPolygons last{std::move(expolygon)}; + while (!last.empty()) { + last = offset2_ex(last, -(distance + min_spacing / 2), +min_spacing / 2); + append(loops, to_polygons(last)); + } + + // Orders the loops outside in, depth first, which is the order the chaining below expects. + loops = union_pt_chained_outside_in(loops); + + std::vector<const Polygon*> loop_refs; + loop_refs.reserve(loops.size()); + for (const Polygon& loop : loops) + loop_refs.emplace_back(&loop); + + Polylines spiral_result = generate_spiral_insets<Polygon, Polyline>(params, loop_refs, loops, distance, expolygon); + + append(polylines_out, spiral_result); +} + +void FillSpiralInset::_fill_surface_single(const FillParams& params, + unsigned int thickness_layers, + const std::pair<float, Point>& direction, + ExPolygon expolygon, + ThickPolylines& thick_polylines_out) +{ + assert(params.use_arachne); + assert(this->print_config != nullptr && this->print_object_config != nullptr); + + // Only a solid surface is worth the variable width walls; a sparse one falls back to plain loops. + if (params.density <= 0.9999f || params.dont_adjust) { + Polylines polylines; + this->_fill_surface_single(params, thickness_layers, direction, expolygon, polylines); + append(thick_polylines_out, to_thick_polylines(std::move(polylines), scaled<coord_t>(this->spacing))); + return; + } + + // no rotation is supported for this infill pattern + Point bbox_size = expolygon.contour.bounding_box().size(); + coord_t min_spacing = scaled<coord_t>(this->spacing); + + coord_t loops_count = std::max(bbox_size.x(), bbox_size.y()) / min_spacing + 1; + Polygons polygons = offset(expolygon, float(min_spacing) / 2.f); + + double min_nozzle_diameter = *std::min_element(print_config->nozzle_diameter.values.begin(), print_config->nozzle_diameter.values.end()); + Arachne::WallToolPathsParams input_params; + input_params.min_bead_width = 0.85 * min_nozzle_diameter; + input_params.min_feature_size = 0.25 * min_nozzle_diameter; + input_params.wall_transition_length = 1.0 * min_nozzle_diameter; + input_params.wall_transition_angle = 10; + input_params.wall_transition_filter_deviation = 0.25 * min_nozzle_diameter; + input_params.wall_distribution_count = 1; + + Arachne::WallToolPaths wallToolPaths(polygons, min_spacing, min_spacing, loops_count, 0, params.layer_height, input_params); + std::vector<Arachne::VariableWidthLines> walls_by_inset = wallToolPaths.getToolPaths(); + + // Open walls are the thin features Arachne fits between the closed ones. They cannot join a + // spiral, so they go out as they are; leaving them behind is what would put the gaps back. + std::vector<const Arachne::ExtrusionLine*> walls; + Polygons wall_outlines; + ThickPolylines open_walls; + for (const Arachne::VariableWidthLines& inset : walls_by_inset) + for (const Arachne::ExtrusionLine& wall : inset) { + if (wall.empty()) + continue; + if (wall.is_closed) { + walls.emplace_back(&wall); + wall_outlines.emplace_back(wall.toPolygon()); + } else { + open_walls.emplace_back(Arachne::to_thick_polyline(wall)); + } + } + + // Arachne hands the walls back grouped by inset, which is not their nesting: around a hole the + // wall of a given inset lies inside the wall of that same inset around the contour. Nest them by + // containment instead, so the spiral follows one island all the way in before starting the next, + // the same order union_pt_chained_outside_in gives the classic path above. + const size_t wall_count = walls.size(); + std::vector<int> nesting_depth(wall_count, 0), parent(wall_count, -1); + std::vector<char> inside(wall_count * wall_count, 0); + for (size_t i = 0; i < wall_count; ++i) + for (size_t j = 0; j < wall_count; ++j) + if (i != j && wall_outlines[j].contains(walls[i]->junctions.front().p)) { + inside[i * wall_count + j] = 1; + ++nesting_depth[i]; + } + // The innermost of the walls containing this one, which is the deepest of them, is its parent. + for (size_t i = 0; i < wall_count; ++i) + for (size_t j = 0; j < wall_count; ++j) + if (inside[i * wall_count + j] && (parent[i] < 0 || nesting_depth[parent[i]] < nesting_depth[j])) + parent[i] = int(j); + + std::vector<const Arachne::ExtrusionLine*> ordered; + Polygons outlines; + ordered.reserve(wall_count); + outlines.reserve(wall_count); + std::function<void(int)> descend = [&](int idx) { + ordered.emplace_back(walls[idx]); + outlines.emplace_back(wall_outlines[idx]); + for (size_t k = 0; k < wall_count; ++k) + if (parent[k] == idx) + descend(int(k)); + }; + for (size_t i = 0; i < wall_count; ++i) + if (parent[i] < 0) + descend(int(i)); + + ThickPolylines spiral_result = + generate_spiral_insets<Arachne::ExtrusionLine, ThickPolyline>(params, ordered, outlines, min_spacing, expolygon); + + append(thick_polylines_out, std::move(spiral_result)); + append(thick_polylines_out, std::move(open_walls)); +} + +} // namespace Slic3r diff --git a/src/libslic3r/Fill/FillSpiralInset.hpp b/src/libslic3r/Fill/FillSpiralInset.hpp new file mode 100644 index 0000000000..eb799ec2f3 --- /dev/null +++ b/src/libslic3r/Fill/FillSpiralInset.hpp @@ -0,0 +1,37 @@ +#ifndef slic3r_FillSpiralInset_hpp_ +#define slic3r_FillSpiralInset_hpp_ + +#include "FillBase.hpp" + +namespace Slic3r { + +class FillSpiralInset : public Fill +{ +public: + ~FillSpiralInset() override = default; + bool is_self_crossing() override { return false; } + +protected: + Fill* clone() const override { return new FillSpiralInset(*this); }; + void _fill_surface_single( + const FillParams ¶ms, + unsigned int thickness_layers, + const std::pair<float, Point> &direction, + ExPolygon expolygon, + Polylines &polylines_out) override; + + // Orca: solid surfaces are filled with Arachne's variable width walls, which widen to take up + // whatever the fixed width loops above would have left over as gaps. + void _fill_surface_single( + const FillParams ¶ms, + unsigned int thickness_layers, + const std::pair<float, Point> &direction, + ExPolygon expolygon, + ThickPolylines &thick_polylines_out) override; + + bool no_sort() const override { return true; } +}; + +} // namespace Slic3r + +#endif // slic3r_FillSpiralInset_hpp_ diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index 9bdbc1737d..635328f5ab 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -40,8 +40,8 @@ static float DeltaHS_BBS(float h1, float s1, float v1, float h2, float s2, float return std::min(1.2f, dxy); } -FlushVolCalculator::FlushVolCalculator(int min, int max, int flush_dataset, float multiplier) - :m_min_flush_vol(min), m_max_flush_vol(max), m_multiplier(multiplier), m_flush_dataset(flush_dataset) +FlushVolCalculator::FlushVolCalculator(int min, int max, int flush_dataset) + :m_min_flush_vol(min), m_max_flush_vol(max), m_flush_dataset(flush_dataset) { } diff --git a/src/libslic3r/FlushVolCalc.hpp b/src/libslic3r/FlushVolCalc.hpp index 46d04d13ff..73baca5a89 100644 --- a/src/libslic3r/FlushVolCalc.hpp +++ b/src/libslic3r/FlushVolCalc.hpp @@ -15,7 +15,7 @@ extern const int g_max_flush_volume; class FlushVolCalculator { public: - FlushVolCalculator(int min, int max, int flush_dataset, float multiplier = 1.0f); + FlushVolCalculator(int min, int max, int flush_dataset); ~FlushVolCalculator() { } @@ -32,7 +32,6 @@ public: private: int m_min_flush_vol; int m_max_flush_vol; - float m_multiplier; int m_flush_dataset; }; diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index e066925a98..10abe8e4de 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -10,6 +10,7 @@ #include <string> #include <boost/log/trivial.hpp> +#include <boost/nowide/fstream.hpp> #ifdef _WIN32 #define DIR_SEPARATOR '\\' diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index b0cbb1fd50..96d98dbe9f 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -102,45 +102,6 @@ struct ZipUnicodePathExtraField } }; -// Validate that a relative file path does not escape the root directory via path traversal. -static bool is_path_within_root(const std::string& file_path, const boost::filesystem::path& root) -{ - if (file_path.empty()) - return false; - - boost::filesystem::path p(file_path); - if (p.is_absolute()) - return false; - - // Reject any path component that is ".." - for (const auto& component : p) { - if (component == "..") - return false; - } - - // Resolve the full path and verify it starts with the canonical root (also catches symlink escapes) - try { - boost::filesystem::path full_path = root / p; - boost::filesystem::path canonical_root = boost::filesystem::weakly_canonical(root); - boost::filesystem::path canonical_full = boost::filesystem::weakly_canonical(full_path); - - auto root_str = canonical_root.string(); - auto full_str = canonical_full.string(); - if (full_str.length() < root_str.length()) - return false; - if (full_str.compare(0, root_str.length(), root_str) != 0) - return false; - // Ensure it's a proper prefix (not just a substring of a longer directory name) - if (full_str.length() > root_str.length() && - full_str[root_str.length()] != boost::filesystem::path::preferred_separator) - return false; - } catch (const boost::filesystem::filesystem_error&) { - return false; - } - - return true; -} - // VERSION NUMBERS // 0 : .3mf, files saved by older slic3r or other applications. No version definition in them. // 1 : Introduction of 3mf versioning. No other change in data saved into 3mf files. @@ -681,6 +642,11 @@ bool bbs_is_valid_object_type(const std::string& type) namespace Slic3r { +bool is_published_3mf_flag(const std::string &value) +{ + return value == "1"; +} + void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (!result) return; @@ -1217,6 +1183,20 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // add backup & restore logic bool _load_model_from_file(std::string filename, Model& model, PlateDataPtrs& plate_data_list, std::vector<Preset*>& project_presets, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, Import3mfProgressFn proFn = nullptr, BBLProject* project = nullptr, int plate_id = 0); + + // A minimal published 3MF carries no slicer tags (any tag would make old receivers show + // a baked-in, wrong "old version" popup on their geometry-only fallback), so it + // classifies as From_Other. It is still a fully structured OrcaSlicer file though: + // identified by its own metadata, it keeps BBS-grade geometry handling (no instance + // splitting, no transform baking, no renaming) in this build. Old receivers without the + // publish feature don't know the metadata and take their third-party geometry path. + // Reads the parse-time metadata: the model XML carries it before its resources, while + // m_model->model_info is only filled in after the whole XML has been parsed. + bool _is_published_3mf() const { + const auto it = this->model_info.metadata_items.find(ORCA_PUBLISHED_TAG); + return it != this->model_info.metadata_items.end() && is_published_3mf_flag(it->second); + } + bool _is_svg_shape_file(const std::string &filename) const; bool _extract_from_archive(mz_zip_archive& archive, std::string const & path, std::function<bool (mz_zip_archive& archive, const mz_zip_archive_file_stat& stat)>, bool restore = false); bool _extract_xml_from_archive(mz_zip_archive& archive, std::string const & path, XML_StartElementHandler start_handler, XML_EndElementHandler end_handler); @@ -2041,7 +2021,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) lock.close(); - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is more than one instance, // split the object in as many objects as instances BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", found 3mf from other vendor, split as instance"); @@ -3605,7 +3585,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_index_paths.insert({ object.first.second, object.first.first}); } - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is only one object, // set the object name to match the filename if (m_model->objects.size() == 1) @@ -5328,7 +5308,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) TriangleMesh triangle_mesh(std::move(its), volume_data.mesh_stats); - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is only one instance, // bake the transformation into the geometry to allow the reload from disk command // to work properly @@ -5974,6 +5954,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool m_save_gcode { false }; // whether to save gcode for normal save bool m_skip_model { false }; // skip model when exporting .gcode.3mf bool m_skip_auxiliary { false }; // skip normal axuiliary files + bool m_minimal_published { false }; // published 3MF: omit the project config, the embedded preset files and the slicer tags bool m_use_loaded_id { false }; // whether to use loaded id for identify_id bool m_share_mesh { false }; // whether to share mesh between objects std::string m_thumbnail_middle = PRINTER_THUMBNAIL_MIDDLE_FILE; @@ -6073,6 +6054,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_skip_auxiliary = store_params.strategy & SaveStrategy::SkipAuxiliary; m_share_mesh = store_params.strategy & SaveStrategy::ShareMesh; m_from_backup_save = store_params.strategy & SaveStrategy::Backup; + m_minimal_published = store_params.strategy & SaveStrategy::MinimalPublished; m_use_loaded_id = store_params.strategy & SaveStrategy::UseLoadedId; @@ -6482,7 +6464,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adds slic3r print config file ("Metadata/Slic3r_PE.config"). // This file contains the content of FullPrintConfig / SLAFullPrintConfig. - if (config != nullptr) { + // Omitted for minimal published 3MF: OrcaSlicer versions without the publish feature + // then fall back to importing the geometry only, and new versions read the published + // payload from the model metadata instead. + if (config != nullptr && !m_minimal_published) { // BBS: change to json format // if (!_add_print_config_file_to_archive(archive, *config)) { if (!_add_project_config_file_to_archive(archive, *config, model)) { return false; } @@ -6495,8 +6480,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (cb_cancel) return false; } - // BBS: add project config - if (project_presets.size() > 0) { + // BBS: add project config (omitted for minimal published 3MF) + if (!m_minimal_published && project_presets.size() > 0) { // BBS: add project embedded preset files _add_project_embedded_presets_to_archive(archive, model, project_presets); @@ -6968,10 +6953,31 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Orca: PRIVACY: do not store creation & modification date in 3mf metadata_item_map[BBL_CREATION_DATE_TAG] = ""; metadata_item_map[BBL_MODIFICATION_TAG] = ""; - // Orca: Write the BambuStudio compatibility version string using SLIC3R_VERSION - metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); + // Orca: Write the BambuStudio compatibility version string using SLIC3R_VERSION. + // A minimal published 3MF writes no slicer tags at all: any tag would route old + // receivers onto a geometry-only fallback whose baked-in popup misreports the + // file ("old OrcaSlicer version" / "BambuStudio"), while tag-less files classify + // as From_Other and import the geometry silently. + if (m_minimal_published) { + // metadata_item_map is seeded from the input file's metadata_items above, so a + // project opened from a regular Orca/BBS 3MF still carries the slicer-identifying + // tags it came with. Erase every one of them - not just the two most common - + // so a published 3MF is fully tag-less: old receivers classify it as From_Other + // and import the geometry silently instead of showing a baked-in "old version" + // popup, and no version marker survives to seed a later re-save. + metadata_item_map.erase(BBL_APPLICATION_TAG); + metadata_item_map.erase(ORCASLICER_TAG); + metadata_item_map.erase(BBS_3MF_VERSION); + metadata_item_map.erase(BBS_3MF_VERSION1); + } else { + metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); + } } - metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); + // The Bambu 3MF version marker is part of the slicer identity: omit it for a minimal + // published file along with the tags erased above (skipping the overwrite alone would + // leave the value the source file seeded into metadata_item_map). + if (!m_minimal_published) + metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); if (!model.mk_name.empty()) { metadata_item_map[BBL_MAKERLAB_TAG] = xml_escape(model.mk_name); @@ -6994,7 +7000,11 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) BOOST_LOG_TRIVIAL(info) << "bbs_3mf: save key= " << item.first << ", value = " << item.second; stream << " <" << METADATA_TAG << " name=\"" << item.first << "\">" << xml_escape(item.second) << "</" << METADATA_TAG << ">\n"; - if (item.first == BBL_APPLICATION_TAG) { + if (item.first == BBL_APPLICATION_TAG && !m_minimal_published) { + // The OrcaSlicer tag is only written for files that carry the Application + // tag, which a minimal published 3MF erases (see the map assignment above): + // the explicit !m_minimal_published guard keeps the tag-less guarantee from + // depending on that erase happening to run first. stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" << xml_escape(SoftFever_VERSION) << "</" << METADATA_TAG << ">\n"; } @@ -9173,6 +9183,126 @@ std::string bbs_3mf_get_thumbnail(const char *path) return data; } +namespace { + +// Parses just the model-file <metadata> elements, mirroring the importer's +// _handle_start_metadata/_handle_end_metadata (attribute-order independent, entity-unescaped, +// whitespace tolerant). Stops the parser as soon as the published flag node is read so the +// geometry/resources that follow are skipped, which keeps the per-file cost small. +struct PublishedXmlProbe +{ + XML_Parser parser{nullptr}; + bool in_metadata{false}; + bool found{false}; + bool published{false}; + std::string curr_name; + std::string curr_value; + + static std::string attribute(const char** attrs, const char* key) + { + if (attrs == nullptr) + return std::string(); + // expat hands the attrs as a NULL-terminated {name, value, ...} array. + for (unsigned int a = 0; attrs[a] != nullptr; a += 2) + if (::strcmp(attrs[a], key) == 0 && attrs[a + 1] != nullptr) + return attrs[a + 1]; + return std::string(); + } + + static void XMLCALL start(void* user_data, const char* name, const char** attrs) + { + auto* self = static_cast<PublishedXmlProbe*>(user_data); + if (::strcmp(name, METADATA_TAG) == 0) { + self->in_metadata = true; + self->curr_name = attribute(attrs, NAME_ATTR); + self->curr_value.clear(); + } else { + self->in_metadata = false; + } + } + + static void XMLCALL characters(void* user_data, const XML_Char* s, int len) + { + auto* self = static_cast<PublishedXmlProbe*>(user_data); + if (self->in_metadata) + self->curr_value.append(s, len); + } + + static void XMLCALL end(void* user_data, const char* name) + { + auto* self = static_cast<PublishedXmlProbe*>(user_data); + if (!self->in_metadata || ::strcmp(name, METADATA_TAG) != 0) + return; + self->in_metadata = false; + if (self->curr_name == ORCA_PUBLISHED_TAG) { + self->published = is_published_3mf_flag(xml_unescape(self->curr_value)); + self->found = true; + if (self->parser != nullptr) + XML_StopParser(self->parser, false); + } + } +}; + +} // namespace + +bool bbs_3mf_is_published(const std::string &path) +{ + mz_zip_archive archive; + mz_zip_zero_struct(&archive); + + struct close_lock + { + mz_zip_archive *archive; + void close() + { + if (archive) { + close_zip_reader(archive); + archive = nullptr; + } + } + ~close_lock() { close(); } + } lock{&archive}; + + if (!open_zip_reader(&archive, path)) + return false; + + // Read just the model XML (the metadata node sits before the resources, so the probe below + // stops early) rather than by a raw substring match; no geometry parsing. + int index = mz_zip_reader_locate_file(&archive, MODEL_FILE.c_str(), nullptr, 0); + if (index < 0) + return false; + mz_zip_archive_file_stat stat; + if (!mz_zip_reader_file_stat(&archive, index, &stat)) + return false; + std::string xml(stat.m_uncomp_size, '\0'); + if (!mz_zip_reader_extract_to_mem(&archive, index, xml.data(), xml.size(), 0)) + return false; + + XML_Parser parser = XML_ParserCreate(nullptr); + if (parser == nullptr) + return false; + + PublishedXmlProbe probe; + probe.parser = parser; + XML_SetUserData(parser, &probe); + XML_SetElementHandler(parser, PublishedXmlProbe::start, PublishedXmlProbe::end); + XML_SetCharacterDataHandler(parser, PublishedXmlProbe::characters); + // Never resolve external entities from a file we are only probing. + XML_SetExternalEntityRefHandler(parser, nullptr); + XML_SetEntityDeclHandler(parser, nullptr); + + const XML_Status status = XML_Parse(parser, xml.data(), static_cast<int>(xml.size()), 1); + // XML_StopParser(parser, false) from the end handler makes XML_Parse return + // XML_STATUS_ERROR with XML_ERROR_ABORTED - treat that as success (we stopped on the flag). + const bool parse_ok = (status == XML_STATUS_OK) || + (XML_GetErrorCode(parser) == XML_ERROR_ABORTED && probe.found); + XML_ParserFree(parser); + + if (!parse_ok) + return false; + return probe.published; +} + bool load_gcode_3mf_from_stream(std::istream &data, DynamicPrintConfig *config, Model *model, PlateDataPtrs *plate_data_list, Semver *file_version) { CNumericLocalesSetter locales_setter; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 7f5bb8c78d..768ae7bcfe 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -159,12 +159,28 @@ enum class SaveStrategy SkipAuxiliary = 1 << 9, UseLoadedId = 1 << 10, ShareMesh = 1 << 11, + // Keep this separate from SplitModel, which uses the 0x1000 bit as part of its + // production-extension value. + MinimalPublished = 1 << 13, SplitModel = 0x1000 | ProductionExt, Encrypted = SecureContentExt | SplitModel, Backup = 0x10000 | WithGcode | Silence | SkipStatic | SplitModel, }; +// Model metadata keys of a "published" 3MF (see MinimalPublished): the flag marks a minimal, +// tag-less publish export, the others carry the author-selected settings payload. Namespaced +// with the "orca_published" prefix because metadata_items round-trips verbatim through other +// slicers, where a bare "published" key could collide. +inline constexpr const char *ORCA_PUBLISHED_TAG = "orca_published"; +inline constexpr const char *ORCA_PUBLISHED_KEYS_TAG = "orca_published_keys"; +inline constexpr const char *ORCA_PUBLISHED_MATERIAL_TAG = "orca_published_material_keys"; +inline constexpr const char *ORCA_PUBLISHED_CONFIG_TAG = "orca_published_config"; + +// Published files are produced with "1". The importer and the GUI loader both gate on this +// exact value, so a "0"/"false"/unknown value is rejected consistently. +bool is_published_3mf_flag(const std::string &value); + inline SaveStrategy operator | (SaveStrategy lhs, SaveStrategy rhs) { using T = std::underlying_type_t <SaveStrategy>; @@ -277,6 +293,9 @@ extern bool load_bbs_3mf(const char* path, DynamicPrintConfig* config, ConfigSub extern std::string bbs_3mf_get_thumbnail(const char * path); +// Lightweight check: does this 3mf carry the "published" (orca_published == "1") marker? Only reads the 3D/3dmodel.model metadata node +extern bool bbs_3mf_is_published(const std::string &path); + extern bool load_gcode_3mf_from_stream(std::istream & data, DynamicPrintConfig* config, Model* model, PlateDataPtrs* plate_data_list, Semver* file_version); diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index e947be47a1..e9cdb620e0 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -8197,9 +8197,10 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return fabs(double(p.speed) - speed) > 1; }); // Ignore small speed variations (under 1mm/sec) - if (!NOZZLE_CONFIG(enable_overhang_speed) && FILAMENT_CONFIG(enable_overhang_bridge_fan) && m_enable_cooling_markers) { - for (ProcessedPoint &point : new_points) - point.speed = speed; + if (FILAMENT_CONFIG(enable_overhang_bridge_fan) && m_enable_cooling_markers) { + if (!NOZZLE_CONFIG(enable_overhang_speed)) + for (ProcessedPoint &point : new_points) + point.speed = speed; variable_speed = new_points.size() > 1; } } diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index 3bca1f8df9..e55b89212e 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -1024,28 +1024,29 @@ std::string CoolingBuffer::apply_layer_cooldown( } if (need_set_fan) { + const auto set_fan = [&](int speed) { + if (m_current_fan_speed != speed) { + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, speed, part_cooling_fan_min_pwm); + m_current_fan_speed = speed; + } + }; if (fan_speed_change_requests[CoolingLine::TYPE_OVERHANG_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, overhang_fan_speed, part_cooling_fan_min_pwm); - m_current_fan_speed = overhang_fan_speed; + set_fan(overhang_fan_speed); } else if (fan_speed_change_requests[CoolingLine::TYPE_INTERNAL_BRIDGE_FAN_START]){ // ORCA: Add support for separate internal bridge fan speed control - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, internal_bridge_fan_speed, part_cooling_fan_min_pwm); - m_current_fan_speed = internal_bridge_fan_speed; + set_fan(internal_bridge_fan_speed); } else if (fan_speed_change_requests[CoolingLine::TYPE_SUPPORT_INTERFACE_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, supp_interface_fan_speed, part_cooling_fan_min_pwm); - m_current_fan_speed = supp_interface_fan_speed; + set_fan(supp_interface_fan_speed); } else if (fan_speed_change_requests[CoolingLine::TYPE_IRONING_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, ironing_fan_speed, part_cooling_fan_min_pwm); - m_current_fan_speed = ironing_fan_speed; + set_fan(ironing_fan_speed); } else if(fan_speed_change_requests[CoolingLine::TYPE_FORCE_RESUME_FAN] && m_current_fan_speed != -1){ new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_current_fan_speed, part_cooling_fan_min_pwm); fan_speed_change_requests[CoolingLine::TYPE_FORCE_RESUME_FAN] = false; } else { - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_fan_speed, part_cooling_fan_min_pwm); - m_current_fan_speed = m_fan_speed; + set_fan(m_fan_speed); } need_set_fan = false; } diff --git a/src/libslic3r/GCode/FanMover.cpp b/src/libslic3r/GCode/FanMover.cpp index 112066bb85..9d77d1d04c 100644 --- a/src/libslic3r/GCode/FanMover.cpp +++ b/src/libslic3r/GCode/FanMover.cpp @@ -170,14 +170,13 @@ void FanMover::_put_in_middle_G1(std::list<BufferData>::iterator item_to_split, void FanMover::_print_in_middle_G1(BufferData& line_to_split, float nb_sec, const std::string &line_to_write) { if (nb_sec < line_to_split.time * 0.1) { - // doesn't really need to be split, print it after - m_process_output += line_to_split.raw + "\n"; + // Doesn't need to be split: the insertion point is at the start. m_process_output += line_to_write + (line_to_write.back() == '\n'?"":"\n"); - } else if (nb_sec > line_to_split.time * 0.9) { - // doesn't really need to be split, print it before - //will also print before if line_to_split.time == 0 - m_process_output += line_to_write + (line_to_write.back() == '\n' ? "" : "\n"); m_process_output += line_to_split.raw + "\n"; + } else if (nb_sec > line_to_split.time * 0.9) { + // Doesn't need to be split: the insertion point is at the end. + m_process_output += line_to_split.raw + "\n"; + m_process_output += line_to_write + (line_to_write.back() == '\n' ? "" : "\n"); }else if(line_to_split.raw.size() > 2 && line_to_split.raw[0] == 'G' && line_to_split.raw[1] == '1' && line_to_split.raw[2] == ' ') { float percent = nb_sec / line_to_split.time; diff --git a/src/libslic3r/GCode/FanMover.hpp b/src/libslic3r/GCode/FanMover.hpp index 3f803fbd23..17addd855c 100644 --- a/src/libslic3r/GCode/FanMover.hpp +++ b/src/libslic3r/GCode/FanMover.hpp @@ -32,7 +32,8 @@ class FanMover private: const std::regex regex_fan_speed; const float nb_seconds_delay; - const bool with_D_option; + // Set from fan_speedup_time at the call site, but nothing here reads it. + [[maybe_unused]] const bool with_D_option; const bool relative_e; const bool only_overhangs; const float kickstart; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 4f3f95f297..e4da19cd73 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -532,7 +532,7 @@ void GCodeProcessor::TimeMachine::calculate_time(GCodeProcessorResult& result, P const float height = interpolate ? lerp(prev_move.height, curr_move.height, t) : curr_move.height; // ORCA: Fix issue with flow rate changes being visualized incorrectly const float mm3_per_mm = curr_move.mm3_per_mm; - const float fan_speed = interpolate ? lerp(prev_move.fan_speed, curr_move.fan_speed, t) : curr_move.fan_speed; + const float fan_speed = curr_move.fan_speed; const float temperature = interpolate ? lerp(prev_move.temperature, curr_move.temperature, t) : curr_move.temperature; actual_speed_moves.push_back({ block.move_id, @@ -563,7 +563,7 @@ void GCodeProcessor::TimeMachine::calculate_time(GCodeProcessorResult& result, P const float height = interpolate ? lerp(prev_move.height, curr_move.height, t) : curr_move.height; // ORCA: Fix issue with flow rate changes being visualized incorrectly const float mm3_per_mm = curr_move.mm3_per_mm; - const float fan_speed = interpolate ? lerp(prev_move.fan_speed, curr_move.fan_speed, t) : curr_move.fan_speed; + const float fan_speed = curr_move.fan_speed; const float temperature = interpolate ? lerp(prev_move.temperature, curr_move.temperature, t) : curr_move.temperature; actual_speed_moves.push_back({ block.move_id, @@ -1273,7 +1273,7 @@ void GCodeProcessor::run_post_process() // add lines M73 to exported gcode auto process_line_move = [ // Lambdas, mostly for string formatting, all with an empty capture block. - time_in_minutes, format_time_float, format_line_M73_main, format_line_M73_stop_int, format_line_M73_stop_float, time_in_last_minute,format_line_exhaust_fan_control, + time_in_minutes, format_time_float, format_line_M73_main, format_line_M73_stop_int, format_line_M73_stop_float, time_in_last_minute, &self = std::as_const(m_time_processor), // Caches, to be modified &g1_times_cache_it, &last_exported_main, &last_exported_stop, @@ -1468,9 +1468,11 @@ void GCodeProcessor::run_post_process() // Append a per-filament usage block at a filament change. auto handle_filament_change = [&](int filament_id, int cur_line_id, int nozzle_id) { - // skip filament changes emitted inside the machine start / end gcode - if (m_machine_start_gcode_end_line_id == (unsigned int) (-1) && (unsigned int) (cur_line_id) < m_machine_start_gcode_end_line_id || - m_machine_end_gcode_start_line_id != (unsigned int) (-1) && (unsigned int) (cur_line_id) > m_machine_end_gcode_start_line_id) + // Skip filament changes emitted inside the machine start / end gcode. One forward pass assigns + // the tag ids and tests them in the same loop, so inside the start gcode the end tag is unseen + // and the id still holds the sentinel. That is why the first clause tests == and the second !=. + if ((m_machine_start_gcode_end_line_id == (unsigned int) (-1) && (unsigned int) (cur_line_id) < m_machine_start_gcode_end_line_id) || + (m_machine_end_gcode_start_line_id != (unsigned int) (-1) && (unsigned int) (cur_line_id) > m_machine_end_gcode_start_line_id)) return; if (!m_filament_blocks.empty()) m_filament_blocks.back().upper_gcode_id = cur_line_id; @@ -2777,7 +2779,7 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int std::map<int, std::map<int, GCodePosInfo>> gcode_path_pos; // object_id, filament_id, pos for (const GCodeProcessorResult::MoveVertex &move : m_result.moves) { // sometimes, the start line extrude was outside the edge of plate a little, this is allowed, so do not include into the gcode_path_pos - if (move.type == EMoveType::Extrude /* && move.extrusion_role != ExtrusionRole::erFlush || move.type == EMoveType::Travel*/) + if (move.type == EMoveType::Extrude /* && move.extrusion_role != ExtrusionRole::erFlush || move.type == EMoveType::Travel*/) { if (move.extrusion_role == ExtrusionRole::erCustom) { /*if (move.is_arc_move_with_interpolation_points()) { for (int i = 0; i < move.interpolation_points.size(); i++) { @@ -2799,6 +2801,7 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int gcode_path_pos[move.object_label_id][int(move.extruder_id)].max_print_z = std::max(gcode_path_pos[move.object_label_id][int(move.extruder_id)].max_print_z, move.print_z); } + } } bool valid = true; @@ -5304,7 +5307,7 @@ void GCodeProcessor::process_VG1(const GCodeReader::GCodeLine& line) float filament_radius = 0.5f * filament_diameter; float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius); - auto absolute_position = [this, area_filament_cross_section](Axis axis, const GCodeReader::GCodeLine& lineG1) { + auto absolute_position = [this](Axis axis, const GCodeReader::GCodeLine& lineG1) { bool is_relative = (m_global_positioning_type == EPositioningType::Relative); if (axis == E) is_relative |= (m_e_local_positioning_type == EPositioningType::Relative); @@ -5755,7 +5758,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc if (travel_length < 0.001) return; - auto adjust_target = [this, area_filament_cross_section](const AxisCoords& target, const AxisCoords& prev_position) { + auto adjust_target = [this](const AxisCoords& target, const AxisCoords& prev_position) { AxisCoords ret = target; if (m_global_positioning_type == EPositioningType::Relative) { for (unsigned char a = X; a <= E; ++a) { @@ -7006,7 +7009,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type, get_acceleration(normal_mode)); const float junction_deviation = get_option_value(m_time_processor.machine_limits.machine_max_junction_deviation, normal_mode_id); const bool use_jd_jerk = (m_flavor == gcfMarlinFirmware && junction_deviation > 0.0f); - const auto axis_jerk_for_preview = [this, normal_mode, use_jd_jerk, move_acceleration](Axis axis) { + const auto axis_jerk_for_preview = [this, use_jd_jerk, move_acceleration](Axis axis) { return use_jd_jerk ? get_axis_max_jerk_with_jd(normal_mode, axis, move_acceleration) : get_axis_max_jerk(normal_mode, axis); }; const float jerk_x = axis_jerk_for_preview(X); diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 0a97e7ac41..c6517c6e65 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -3137,7 +3137,7 @@ void ToolOrdering::assign_custom_gcodes(const Print &print) // Skip all custom G-codes above this layer and skip all extruder switches. for (; custom_gcode_it != custom_gcode_per_print_z.gcodes.rend() && ( (print_z_above > lt.print_z && custom_gcode_it->print_z > 0.5 * (lt.print_z + print_z_above)) - || custom_gcode_it->type == CustomGCode::ToolChange); ++ custom_gcode_it); + || custom_gcode_it->type == CustomGCode::ToolChange); ++ custom_gcode_it) {} print_z_above = lt.print_z; if (custom_gcode_it == custom_gcode_per_print_z.gcodes.rend()) // Custom G-codes were processed. diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 5834937169..589ac14bad 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1630,6 +1630,94 @@ float WipeTower::get_auto_brim_by_height(float max_height) { return 8.f; } +float WipeTower::estimate_brim_real_width(float brim_width, float nozzle_diameter, float first_layer_height, bool type2) +{ + if (brim_width <= 0.f) + return brim_width; + const float spacing = nozzle_diameter * 1.25f - first_layer_height * float(1. - M_PI_4); // Width_To_Nozzle_Ratio + if (spacing <= EPSILON) + return brim_width; + const int loops_num = int((brim_width + spacing / 2.f) / spacing); + return loops_num * spacing + (type2 ? 0.f : spacing / 2.f); +} + +float WipeTower::get_wrapping_detection_depth() +{ + return float(wrapping_wipe_tower_depth); +} + +float WipeTower::nozzle_change_perimeter_width(float nozzle_diameter) +{ + auto it = nozzle_diameter_to_nozzle_change_width.find(nozzle_diameter); + return it != nozzle_diameter_to_nozzle_change_width.end() ? it->second : 2.f * nozzle_diameter * 1.25f; +} + +float WipeTower::estimate_tower_blocks_depth(const std::vector<PurgeEstimate> &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing) +{ + if (purges.empty() || layer_height < EPSILON || nozzle_diameter < EPSILON) + return 0.f; + const float pw = nozzle_diameter * 1.25f; // Width_To_Nozzle_Ratio + const float ncpw = nozzle_change_perimeter_width(nozzle_diameter); + const float line_width = width - 2.f * pw; + if (line_width <= EPSILON) + return 0.f; + // Line cross-section as volume_to_length() sees it; the infill gap stretches the perimeter + // width by the configured ratio and nozzle-change lines keep their own width + // (calc_block_infill_gap). + auto line_area = [layer_height](float w) { return layer_height * (w - layer_height * float(1. - M_PI_4)); }; + const float extra_width = (extra_spacing - 1.f) * pw; + const float gap = pw + extra_width; + const float nc_gap = ncpw + extra_width; + // A layer purges into at most (filaments - 1) targets, so a category holding every filament + // never sees its smallest purge (the layer's first filament) in its worst layer. + struct Block { float depth = 0.f; float min_purge = 0.f; size_t filaments = 0; }; + std::map<int, Block> blocks; + for (const PurgeEstimate &purge : purges) { + Block &block = blocks[purge.category]; + const float purge_depth = std::ceil(purge.prime_volume / line_area(pw) / line_width) * gap; + block.min_purge = block.filaments == 0 ? purge_depth : std::min(block.min_purge, purge_depth); + block.depth += purge_depth; + ++block.filaments; + if (purge.filament_change_length > EPSILON) { + // The leaving filament is rammed over the nozzle-change flow, again in whole lines. + const float filament_area = float(M_PI) * purge.filament_diameter * purge.filament_diameter / 4.f; + const float nc_length = purge.filament_change_length * filament_area / line_area(ncpw); + block.depth += std::ceil(nc_length / (width - ncpw - pw)) * nc_gap; + } + } + float depth = pw; // plan_tower_new starts the first block one perimeter width in + for (const auto &[category, block] : blocks) + depth += block.filaments == purges.size() ? block.depth - block.min_purge : block.depth; + return depth; +} + +float WipeTower::rib_footprint_side(float width, float depth, float rib_width, float extra_rib_length, float max_height) +{ + if (width < EPSILON || depth < EPSILON) + return 0.f; + // Ribs run the diagonal; below the height-based minimum they are extended rather than the + // body, then by the extra length, never ending up shorter than the diagonal. + const float diagonal = std::sqrt(width * width + depth * depth); + float rib_length = diagonal; + if (depth + EPSILON < get_limit_depth_by_height(max_height)) + rib_length = std::max(rib_length, get_limit_depth_by_height(max_height) * float(std::sqrt(2.))); + rib_length = std::max(diagonal, rib_length + extra_rib_length); + // Half the extension at each end of the diagonal plus half the rib width, projected onto the axes. + const float rib_w = std::min(rib_width, std::min(width, depth) / 2.f); + const float per_side = ((rib_length - diagonal) / 2.f + rib_w / 2.f) / float(std::sqrt(2.)); + return std::max(width, depth) + 2.f * per_side; +} + +float WipeTower::estimate_rib_tower_bbox_side(const std::vector<PurgeEstimate> &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing, float rib_width, float extra_rib_length, float max_height) +{ + if (purges.empty() || width < EPSILON || layer_height < EPSILON || nozzle_diameter < EPSILON) + return 0.f; + const float pw = nozzle_diameter * 1.25f; // Width_To_Nozzle_Ratio + const float square = align_ceil(std::sqrt(estimate_tower_blocks_depth(purges, width, layer_height, nozzle_diameter, extra_spacing) * width), pw); + const float depth = estimate_tower_blocks_depth(purges, square, layer_height, nozzle_diameter, extra_spacing); + return rib_footprint_side(square, depth, rib_width, extra_rib_length, max_height); +} + Vec2f WipeTower::move_box_inside_polygon(const BoundingBox &box, const Polygons &polygons, coord_t offset) { if (polygons.empty()) return Vec2f{0.f, 0.f}; @@ -4083,7 +4171,7 @@ void WipeTower::toolchange_wipe_new(WipeTowerWriter &writer, const box_coordinat } return time * 60.f; }; - auto estimate_wipe_time = [&estimate_time_kernel, & cleaning_box, &target_speed, &x_to_wipe, &xr, &xl, &dy, &WipeSpeedMap, &solid_tool_toolchange](int begin_line) -> float { + auto estimate_wipe_time = [&estimate_time_kernel, & cleaning_box, &x_to_wipe, &xr, &xl, &dy, &solid_tool_toolchange](int begin_line) -> float { int n = std::ceil(x_to_wipe / (xr - xl)); if (solid_tool_toolchange) n = (cleaning_box.lu[1] - cleaning_box.ld[1]) / dy; float total_time = estimate_time_kernel(n); @@ -4883,12 +4971,8 @@ void WipeTower::generate_new(std::vector<std::vector<WipeTower::ToolChangeResult } } - if (!has_inserted) { - if (finish_block_tcr.gcode.empty()) - finish_block_tcr = finish_block_tcr; - else - finish_layer_tcr = merge_tcr(finish_layer_tcr, finish_block_tcr); - } + if (!has_inserted && !finish_block_tcr.gcode.empty()) + finish_layer_tcr = merge_tcr(finish_layer_tcr, finish_block_tcr); } } // record the contact layers of different categories @@ -5111,7 +5195,7 @@ Polygon WipeTower::generate_rib_polygon(const box_coordinates &wt_box) Polygon WipeTower::generate_support_wall_new(WipeTowerWriter &writer, const box_coordinates &wt_box, double feedrate, bool first_layer,bool rib_wall, bool extrude_perimeter, bool skip_points) { - auto get_closet_idx = [this, &writer](Polylines &pls) -> std::pair<int,int> { + auto get_closet_idx = [&writer](Polylines &pls) -> std::pair<int,int> { Vec2f anchor{writer.x(), writer.y()}; int closestIndex = -1; int closestPl = -1; diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 045c82cbf3..9303f09691 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -42,9 +42,36 @@ public: static const std::map<float, float> min_depth_per_height; static float get_limit_depth_by_height(float max_height); static float get_auto_brim_by_height(float max_height); + // Both generators lay the brim in whole loops one line spacing apart, so the printed width + // differs from the configured one. WipeTower reports it with half a spacing of line width + // added, WipeTower2 reports the loops alone; an estimate has to round like the generator + // whose G-code it stands in for. + static float estimate_brim_real_width(float brim_width, float nozzle_diameter, float first_layer_height, bool type2); + // Depth a Type1 tower reserves once nothing but wrapping detection asks for one. + static float get_wrapping_detection_depth(); + // Line width of the nozzle-change purge lines at this nozzle diameter. + static float nozzle_change_perimeter_width(float nozzle_diameter); static TriangleMesh its_make_rib_tower(float width, float depth, float height, float rib_length, float rib_width, bool fillet_wall); static TriangleMesh its_make_rib_brim(const Polygon& brim, float layer_height); static Polygon rib_section(float width, float depth, float rib_length, float rib_width, bool fillet_wall); + // One filament's share of a Type1 tower layer, as plan_tower_new() reserves it. + struct PurgeEstimate + { + float prime_volume = 0.f; // mm3 wiped after changing to this filament + int category = 0; // filament_adhesiveness_category; one purge block per category + float filament_change_length = 0.f; // mm of filament rammed when it leaves its nozzle; 0 when no nozzle change is planned + float filament_diameter = 1.75f; + }; + // Depth of the Type1 purge stack at the given width (also the rectangle-wall depth): each + // purge is whole lines at the block infill gap, one block per adhesiveness category sized by + // its worst layer, stacked behind one perimeter width. + static float estimate_tower_blocks_depth(const std::vector<PurgeEstimate> &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing); + // Side of the square bounding a rib-wall tower's first layer, brim excluded: the body plus the + // rib bulge, with the ribs extended to the height-based minimum as both generators do. + static float rib_footprint_side(float width, float depth, float rib_width, float extra_rib_length, float max_height); + // Type1 rib tower: plan_tower_new() squares the tower from the depth at the configured width, + // then re-plans the depth at the squared width. + static float estimate_rib_tower_bbox_side(const std::vector<PurgeEstimate> &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing, float rib_width, float extra_rib_length, float max_height); // Translation that brings a footprint inside the printable outline, padded by offset. The prime // tower is validated against the real outline (see layered_print_cleareance_valid), so clamping // against the bounding box alone would leave it off a delta or hexagonal bed. box and polygons diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index ee0f9c375a..4e752bd772 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -2129,6 +2129,23 @@ std::pair<double, double> WipeTower2::get_wipe_tower_cone_base(double width, dou return std::make_pair(R, support_scale); } +Polygon WipeTower2::cone_base_polygon(double width, double depth, double height, double angle_deg) +{ + Polygon box({Point::new_scale(Vec2d(0., 0.)), Point::new_scale(Vec2d(width, 0.)), + Point::new_scale(Vec2d(width, depth)), Point::new_scale(Vec2d(0., depth))}); + if (angle_deg <= EPSILON || height <= EPSILON || width <= EPSILON || depth <= EPSILON) + return box; + const auto [R, x_scale] = get_wipe_tower_cone_base(width, height, depth, angle_deg); + if (R <= EPSILON) + return box; + const Vec2d center(width / 2., depth / 2.); + Polygon ellipse; + for (double alpha = 0.; alpha < 2. * M_PI; alpha += M_PI / 20.) + ellipse.points.push_back(Point::new_scale(center + R * Vec2d(std::cos(alpha) / x_scale, std::sin(alpha)))); + Polygons u = union_({box, ellipse}); + return u.empty() ? box : u.front(); +} + // Static method to extract wipe_volumes[from][to] from the configuration. // Takes a ConfigBase so the GUI's wipe tower size estimate can pass the plate's // DynamicPrintConfig directly instead of materializing a full PrintConfig per call. diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 5b1a474b5d..232cad1a6b 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -27,6 +27,10 @@ public: // in WipeTowerIntegration::append_tcr2 does not strip it. static const std::string wait_for_temp_tag() { return ";_WAIT_FOR_TEMP_ON_WIPE_TOWER"; } static std::pair<double, double> get_wipe_tower_cone_base(double width, double height, double depth, double angle_deg); + // First-layer outline of a cone-wall tower in tower-local (scaled) coordinates: body box + // unioned with the cone's base ellipse — the model first_layer_wipe_tower_corners uses, + // and generate_support_cone_wall stays within it. Brim not included. + static Polygon cone_base_polygon(double width, double depth, double height, double angle_deg); static std::vector<std::vector<float>> extract_wipe_volumes(const ConfigBase& config); // Estimated total flush volume of a SEMM print with the given number of filaments, // used to reserve wipe tower space before the tower is generated. diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp new file mode 100644 index 0000000000..d8cfe74527 --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -0,0 +1,202 @@ +#include "WipeTowerEstimate.hpp" + +#include "WipeTower.hpp" +#include "WipeTower2.hpp" +#include "../Config.hpp" +#include "../PrintConfig.hpp" +#include "../libslic3r.h" + +#include <algorithm> +#include <cmath> +#include <set> + +namespace Slic3r { + +// Every caller today declares all these keys, but the signature accepts any ConfigBase: fall +// back to the key's declared default, never to a hand-copied constant. +static const ConfigOption *option_of(const ConfigBase &config, const char *key) +{ + if (const ConfigOption *opt = config.option(key); opt != nullptr) + return opt; + if (const ConfigDef *def = config.def(); def != nullptr) + if (const ConfigOptionDef *opt_def = def->get(key); opt_def != nullptr) + return opt_def->default_value.get(); + return nullptr; +} + +WipeTowerType resolve_wipe_tower_type(const ConfigBase &config) +{ + // printer_model is what the CLI keys its Bambu Lab detection on; the GUI's vendor flag + // agrees for every shipped profile. + if (const auto *model = dynamic_cast<const ConfigOptionString *>(config.option("printer_model")); + model != nullptr && model->value.compare(0, 9, "Bambu Lab") == 0) + return WipeTowerType::Type1; + // By value, not by concrete type: a static PrintConfig holds ConfigOptionEnum<T>, a + // DynamicConfig built from presets holds ConfigOptionEnumGeneric, and both answer getInt(). + const ConfigOption *type = option_of(config, "wipe_tower_type"); + return type != nullptr ? WipeTowerType(type->getInt()) : WipeTowerType::Type2; +} + +Polygon estimate_wipe_tower_first_layer_outline(const ConfigBase &config, WipeTowerType tower_type, double width, double depth, double height) +{ + // Type1 ignores the cone option. The wall type is read by value: a preset-shaped config + // holds it as ConfigOptionEnumGeneric, which a cast to ConfigOptionEnum<T> cannot see. + const ConfigOption *wall_type = option_of(config, "wipe_tower_wall_type"); + const ConfigOption *cone_angle = option_of(config, "wipe_tower_cone_angle"); + const bool cone = tower_type == WipeTowerType::Type2 && wall_type != nullptr && + wall_type->getInt() == int(WipeTowerWallType::wtwCone) && cone_angle != nullptr; + return WipeTower2::cone_base_polygon(width, depth, height, cone ? cone_angle->getFloat() : 0.); +} + +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, WipeTowerType tower_type, const std::vector<unsigned int> &filament_ids, double layer_height, double max_object_height) +{ + WipeTowerFootprint footprint; + footprint.height = max_object_height; + const size_t filaments_cnt = filament_ids.size(); + if (filaments_cnt == 0 || layer_height < EPSILON) + return footprint; + + auto opt_float = [&config](const char *key) { + const ConfigOption *opt = option_of(config, key); + return opt != nullptr ? opt->getFloat() : 0.; + }; + auto opt_bool = [&config](const char *key) { + const ConfigOption *opt = option_of(config, key); + return opt != nullptr && opt->getBool(); + }; + auto opt_enum = [&config](const char *key, int fallback) { + const ConfigOption *opt = option_of(config, key); + return opt != nullptr ? opt->getInt() : fallback; + }; + auto floats_of = [&config](const char *key) { return dynamic_cast<const ConfigOptionFloats *>(option_of(config, key)); }; + auto max_of = [&floats_of](const char *key, double fallback) { + const auto *opt = floats_of(key); + return (opt != nullptr && !opt->values.empty()) ? *std::max_element(opt->values.begin(), opt->values.end()) : fallback; + }; + auto float_at = [&floats_of](const char *key, unsigned int id, double fallback) { + const auto *opt = floats_of(key); + return (opt != nullptr && !opt->values.empty()) ? opt->get_at(id) : fallback; + }; + auto int_at = [&config](const char *key, unsigned int id, int fallback) { + const auto *opt = dynamic_cast<const ConfigOptionInts *>(option_of(config, key)); + return (opt != nullptr && !opt->values.empty()) ? opt->get_at(id) : fallback; + }; + + // Both planners size every layer, so the tower has to fit its thinnest one: the first layer + // when it is printed thinner than the rest. + const double first_layer_height = opt_float("initial_layer_print_height"); + if (first_layer_height > EPSILON) + layer_height = std::min(layer_height, first_layer_height); + + const bool type1 = tower_type == WipeTowerType::Type1; + const double width = opt_float("prime_tower_width"); + const double prime_volume = opt_float("prime_volume"); + // Type1 spaces its purge lines by prime_tower_infill_gap, Type2 by wipe_tower_extra_spacing. + // Type2's extra flow cancels out of the depth: the line length is divided by it and the row + // pitch multiplied by it (WipeTower2::get_wipe_depth). + const double extra_spacing = opt_float(type1 ? "prime_tower_infill_gap" : "wipe_tower_extra_spacing") / 100.; + const double rib_width = opt_float("wipe_tower_rib_width"); + const double extra_rib_length = opt_float("wipe_tower_extra_rib_length"); + const auto *nozzle_opt = floats_of("nozzle_diameter"); + const double nozzle_diameter = (nozzle_opt != nullptr && !nozzle_opt->values.empty()) ? nozzle_opt->values.front() : 0.4; + const bool dual_nozzle = nozzle_opt != nullptr && nozzle_opt->values.size() == 2; + const bool rib_wall = opt_enum("wipe_tower_wall_type", int(WipeTowerWallType::wtwRectangle)) == int(WipeTowerWallType::wtwRib); + const bool smooth_timelapse = opt_enum("timelapse_type", int(TimelapseType::tlTraditional)) == int(TimelapseType::tlSmooth); + const bool wrapping = opt_bool("enable_wrapping_detection"); + // Reasons a tower is printed with no tool change to purge for: the ones that stop + // normalize_fdm_2 clearing enable_prime_tower. Its mixed-filament case is not modelled. + const bool need_wipe_tower = smooth_timelapse || wrapping; + + // A tower printed for one of the reasons above has no tool change to purge for; both + // planners give it the idle depth below and nothing more. + const size_t purge_count = filaments_cnt > 1 ? (dual_nozzle ? filaments_cnt : filaments_cnt - 1) : 0; + + // Type2 purges one volume per tool change. Type1 plans per filament below; here the volume + // only decides whether a tower exists. + double volume = prime_volume * double(purge_count); + if (dual_nozzle) { + // Dual-nozzle printers also purge the filament change length on the tower. + const double length = max_of("filament_change_length", 0.); + const double diameter = max_of("filament_diameter", 1.75); + volume += length * PI * diameter * diameter / 4. * double(filaments_cnt / 2); + } + // Single-extruder multi-material purges the flush matrix instead of the prime volume. + const bool semm_flush = opt_bool("purge_in_prime_tower") && opt_bool("single_extruder_multi_material"); + if (semm_flush) + volume = WipeTower2::estimate_semm_flush_volume(config, filaments_cnt); + + // The Type1 planner wipes each filament's own prime volume after changing to it, in a block + // per adhesiveness category. On a two-nozzle printer the leaving filament is also rammed at + // every nozzle change; the tool order groups filaments by nozzle, so a layer crosses + // (nozzles used - 1) times, charged here to the longest ramming. + std::vector<WipeTower::PurgeEstimate> purges; + if (type1 && filaments_cnt > 1) { + const bool saving_mode = opt_enum("prime_volume_mode", int(PrimeVolumeMode::pvmDefault)) == int(PrimeVolumeMode::pvmSaving); + std::set<int> nozzles; + size_t longest_ramming = 0; + for (size_t i = 0; i < filaments_cnt; ++i) { + const unsigned int id = filament_ids[i]; + WipeTower::PurgeEstimate purge; + purge.prime_volume = saving_mode ? 15.f : float(float_at("filament_prime_volume", id, prime_volume)); + purge.category = int_at("filament_adhesiveness_category", id, 0); + purge.filament_diameter = float(float_at("filament_diameter", id, 1.75)); + purges.push_back(purge); + if (dual_nozzle) { + nozzles.insert(int_at("filament_map", id, 1)); + if (float_at("filament_change_length", id, 0.) > float_at("filament_change_length", filament_ids[longest_ramming], 0.)) + longest_ramming = i; + } + } + if (nozzles.size() > 1) + purges[longest_ramming].filament_change_length = float(float_at("filament_change_length", filament_ids[longest_ramming], 0.) * double(nozzles.size() - 1)); + } + + // Both wall types decide this together: over-reserving only wastes bed area, but reporting + // no tower for one that is built collapses the validation hull to a point. + // A tool change is a reason on its own (see the base commit); Type1 already reserves + // per filament, Type2 has only the volume, which can resolve to zero. + const bool has_purge = type1 ? !purges.empty() : volume > EPSILON; + if (!has_purge && filaments_cnt < 2 && !need_wipe_tower) + return footprint; + + const double min_depth = WipeTower::get_limit_depth_by_height(float(max_object_height)); + const float perimeter_width = float(nozzle_diameter) * 1.25f; // Width_To_Nozzle_Ratio + // With nothing to purge, plan_tower_new sizes the tower for wrapping detection or the + // stability minimum; WipeTower2 only knows the latter. + const double idle_depth = (type1 && wrapping && !smooth_timelapse) ? WipeTower::get_wrapping_detection_depth() : min_depth; + if (rib_wall) { + // Both planners square the tower to the purge area and extend the ribs, not the body, + // below the stability minimum. + double side; + if (!purges.empty()) + side = WipeTower::estimate_rib_tower_bbox_side(purges, float(width), float(layer_height), float(nozzle_diameter), float(extra_spacing), float(rib_width), float(extra_rib_length), float(max_object_height)); + else { + const double square = has_purge ? std::sqrt(volume / layer_height * extra_spacing) : idle_depth; + side = WipeTower::rib_footprint_side(float(square), float(square), float(rib_width), float(extra_rib_length), float(max_object_height)); + } + footprint.width = footprint.depth = side; + } else { + double depth; + if (type1) { + // plan_tower_new stretches a short purge stack to the stability minimum behind its + // leading perimeter width. + depth = purges.empty() ? idle_depth : std::max(min_depth + perimeter_width, double(WipeTower::estimate_tower_blocks_depth(purges, float(width), float(layer_height), float(nozzle_diameter), float(extra_spacing)))); + } else { + depth = volume / (layer_height * width); + // The flush volumes already hold the spacing between wipes. + if (!semm_flush) + depth *= extra_spacing; + depth = std::max(min_depth, depth); + } + footprint.width = width; + footprint.depth = depth; + } + + footprint.brim_width = opt_float("prime_tower_brim_width"); + if (footprint.brim_width < 0) + footprint.brim_width = WipeTower::get_auto_brim_by_height(float(max_object_height)); + footprint.brim_width = WipeTower::estimate_brim_real_width(float(footprint.brim_width), float(nozzle_diameter), float(first_layer_height > EPSILON ? first_layer_height : layer_height), !type1); + return footprint; +} + +} // namespace Slic3r diff --git a/src/libslic3r/GCode/WipeTowerEstimate.hpp b/src/libslic3r/GCode/WipeTowerEstimate.hpp new file mode 100644 index 0000000000..387028649b --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerEstimate.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include <vector> + +#include "../Polygon.hpp" + +namespace Slic3r { + +class ConfigBase; +enum class WipeTowerType; + +// Pre-slice footprint of the wipe tower, shared by validation (Print), the GUI's placement +// clamp/preview/arrange and the CLI placement. The arithmetic is shared; the inputs below are +// not, so a change to how one caller derives them has to be mirrored in the others. +struct WipeTowerFootprint +{ + double width = 0.; // effective width: equals depth for a rib wall, which squares the tower + double depth = 0.; // 0 when these inputs imply no tower + double height = 0.; // tallest object; drives the stability floor and the auto brim + double brim_width = 0.; // printed width: auto (-1) resolved by height, laid in whole loops +}; + +// Which planner builds the tower: Bambu Lab printers always get Type1, the rest follow +// wipe_tower_type. The rule Print::wipe_tower_type() and the CLI apply, read off the config so +// the GUI and CLI placement can resolve it without a Print. +WipeTowerType resolve_wipe_tower_type(const ConfigBase &config); + +// First-layer outline of an estimated tower in tower-local scaled coordinates, brim excluded: +// the body box, or for a Type2 cone wall the box unioned with the cone's base. The preview, +// the placement margin and validation all take the outline from here so they cannot disagree +// about whether a cone exists. +Polygon estimate_wipe_tower_first_layer_outline(const ConfigBase &config, WipeTowerType tower_type, double width, double depth, double height); + +// filament_ids: 0-based filaments purged on the plate. The config cannot see custom G-code tool +// changes, so ids derived from the model must include them +// (Print::extruders(true)) or a real tower is sized as if it were never built. +// layer_height: thinnest layer the objects are sliced at. The first layer is folded in here. +// +// A raft is deliberately not a reason: normalize_fdm_2 clears enable_prime_tower for a plate +// purging one filament unless smooth timelapse or wrapping detection is on. +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, + WipeTowerType tower_type, + const std::vector<unsigned int> &filament_ids, + double layer_height, + double max_object_height); + +} // namespace Slic3r diff --git a/src/libslic3r/Int128.hpp b/src/libslic3r/Int128.hpp index f8951f20f9..e55ef64cfb 100644 --- a/src/libslic3r/Int128.hpp +++ b/src/libslic3r/Int128.hpp @@ -57,7 +57,7 @@ #define HAS_INTRINSIC_128_TYPE #endif -#if defined(_MSC_VER) && defined(_WIN64) +#if defined(_MSC_VER) && defined(_M_X64) #include <intrin.h> #pragma intrinsic(_mul128) #endif @@ -125,7 +125,6 @@ public: /******************************************** Splitting the 128bit number into two 64bit words *********************************************/ Int128(int64_t lo = 0) : m_lo((uint64_t)lo), m_hi((lo < 0) ? -1 : 0) {} - Int128(const Int128 &val) : m_lo(val.m_lo), m_hi(val.m_hi) {} Int128(const int64_t& hi, const uint64_t& lo) : m_lo(lo), m_hi(hi) {} Int128& operator = (const int64_t &val) diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 87ad11bcf8..1d6c2b0703 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -419,6 +419,7 @@ coordf_t Layer::get_sparse_infill_max_void_area() double spacing = flow.scaled_spacing() * (100 - density) / density; switch (pattern) { case ipConcentric: + case ipSpiralInset: case ipRectilinear: case ipLine: case ipGyroid: diff --git a/src/libslic3r/Measure.hpp b/src/libslic3r/Measure.hpp index 2f378f5778..0374c5d4aa 100644 --- a/src/libslic3r/Measure.hpp +++ b/src/libslic3r/Measure.hpp @@ -33,15 +33,6 @@ public: SurfaceFeature(const Vec3d& pt) : m_type{SurfaceFeatureType::Point}, m_pt1{pt} {} - SurfaceFeature(const SurfaceFeature& sf){ - this->clone(sf); - volume = sf.volume; - plane_indices = sf.plane_indices; - world_tran = sf.world_tran; - world_plane_features = sf.world_plane_features; - origin_surface_feature = sf.origin_surface_feature; - } - void clone(const SurfaceFeature &sf) { m_type = sf.get_type(); diff --git a/src/libslic3r/MinimumSpanningTree.cpp b/src/libslic3r/MinimumSpanningTree.cpp index ff8fe6e5dd..88555e70ee 100644 --- a/src/libslic3r/MinimumSpanningTree.cpp +++ b/src/libslic3r/MinimumSpanningTree.cpp @@ -60,10 +60,15 @@ auto MinimumSpanningTree::prim(std::vector<Point> vertices) const -> AdjacencyGr //This search is O(V) right now, which can be made down to O(log(V)). This reduces the overall time complexity from O(V*V) to O(V*log(E)). //However that requires an implementation of a heap that supports the decreaseKey operation, which is not in the std library. //TODO: Implement this? + // Break equal-distance ties on coordinates: the map is keyed by address, so its + // iteration order (and therefore the first minimum) would otherwise depend on where + // the vertices were allocated. using MapValue = std::pair<const Point*, coordf_t>; const auto closest = std::min_element(smallest_distance.begin(), smallest_distance.end(), [](const MapValue& a, const MapValue& b) { - return a.second < b.second; + if (a.second != b.second) + return a.second < b.second; + return *a.first < *b.first; }); //Add this point to the graph and remove it from the candidates. diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index bbc3aa80f3..714d45ad9b 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -877,7 +877,7 @@ void Model::convert_multipart_object(unsigned int max_extruders) // Revert the centering operation. trafo_volume.set_offset(trafo_volume.get_offset() - o->origin_translation); int counter = 1; - auto copy_volume = [o, v, max_extruders, &counter, &extruder_counter](ModelVolume *new_v) { + auto copy_volume = [o, v, &counter](ModelVolume *new_v) { assert(new_v != nullptr); new_v->name = (counter > 1) ? o->name + "_" + std::to_string(counter++) : o->name; //BBS: Use extruder priority: volumn > object > default @@ -3598,6 +3598,15 @@ void FacetsAnnotation::shift_states_above(const ModelVolume &mv, EnforcerBlocker this->set(selector); } +void FacetsAnnotation::remap_states(const ModelVolume &mv, const EnforcerBlockerStateMap &state_map) +{ + if (empty()) return; + TriangleSelector selector(mv.mesh()); + selector.deserialize(m_data, false); + selector.remap_triangle_state(state_map); + this->set(selector); +} + void FacetsAnnotation::set_enforcer_block_type_limit(const ModelVolume &mv, EnforcerBlockerType max_type, EnforcerBlockerType to_delete_filament, @@ -3862,6 +3871,43 @@ bool model_has_advanced_features(const Model &model) return false; } +void remap_model_filament_slots(Model &model, const std::map<int, int> &slot_relocations) +{ + if (slot_relocations.empty()) + return; + + // Paint states and the object/volume "extruder" configs store one-based slot numbers + // (see Sidebar::on_action_add_filament's insertion remap for the same encoding). + std::map<int, int> one_based_slots; + for (const auto &[from, to] : slot_relocations) + one_based_slots.emplace(from + 1, to + 1); + + EnforcerBlockerStateMap paint_state_map; + for (size_t state = 0; state < paint_state_map.size(); ++state) + paint_state_map[state] = EnforcerBlockerType(state); + for (const auto &[one_based_from, one_based_to] : one_based_slots) { + assert(one_based_from >= 0 && size_t(one_based_from) < paint_state_map.size()); + assert(one_based_to > 0 && size_t(one_based_to) < paint_state_map.size()); + paint_state_map[size_t(one_based_from)] = EnforcerBlockerType(one_based_to); + } + + auto remap_extruder_config = [&one_based_slots](ModelConfig &config) -> bool { + const auto it = config.has("extruder") ? one_based_slots.find(config.extruder()) : one_based_slots.end(); + if (it == one_based_slots.end()) + return false; + config.set("extruder", it->second); + return true; + }; + + for (ModelObject *object : model.objects) { + remap_extruder_config(object->config); + for (ModelVolume *volume : object->volumes) { + remap_extruder_config(volume->config); + volume->mmu_segmentation_facets.remap_states(*volume, paint_state_map); + } + } +} + #ifndef NDEBUG // Verify whether the IDs of Model / ModelObject / ModelVolume / ModelInstance / ModelMaterial are valid and unique. void check_model_ids_validity(const Model &model) diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 6834c7a59b..8da1340fa9 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -745,6 +745,10 @@ public: // Shift painted filament indices >= threshold by delta. Used when a physical filament is // inserted ahead of existing slots (mixed-color slots are kept at the end of the list). void shift_states_above(const ModelVolume &mv, EnforcerBlockerType threshold, int delta); + // Relabel painted filament indices according to state_map (old state value -> new state + // value; untouched states keep their identity). Used when published-3MF import relocates + // mixed-filament definitions onto new slot numbers. + void remap_states(const ModelVolume &mv, const EnforcerBlockerStateMap &state_map); indexed_triangle_set get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const; bool has_facets(const ModelVolume& mv, EnforcerBlockerType type) const; bool empty() const { return m_data.triangles_to_split.empty(); } @@ -1790,6 +1794,13 @@ bool model_has_multi_part_objects(const Model &model); // If the model has advanced features, then it cannot be processed in simple mode. bool model_has_advanced_features(const Model &model); +// Remap the model's filament-slot references after a published-3MF import relocated +// mixed-filament definitions onto new slot numbers: object/volume "extruder" configs and +// multi-material color-painting states (paint state stores the one-based slot number). +// slot_relocations maps the author's zero-based slot number to its final zero-based slot; +// entries are applied simultaneously (no chained lookups), untouched slots keep everything. +void remap_model_filament_slots(Model &model, const std::map<int, int> &slot_relocations); + #ifndef NDEBUG // Verify whether the IDs of Model / ModelObject / ModelVolume / ModelInstance / ModelMaterial are valid and unique. void check_model_ids_validity(const Model &model); diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index de386b501c..096230d22c 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -24,6 +24,7 @@ public: explicit MultiPoint(const Points &_points) : points(_points) {} MultiPoint& operator=(const MultiPoint &other) { points = other.points; return *this; } MultiPoint& operator=(MultiPoint &&other) { points = std::move(other.points); return *this; } + virtual ~MultiPoint() = default; void scale(double factor); void scale(double factor_x, double factor_y); void translate(double x, double y) { this->translate(Point(coord_t(x), coord_t(y))); } diff --git a/src/libslic3r/ObjectID.hpp b/src/libslic3r/ObjectID.hpp index f2697b74f5..56042bbaa3 100644 --- a/src/libslic3r/ObjectID.hpp +++ b/src/libslic3r/ObjectID.hpp @@ -170,6 +170,10 @@ public: this->m_check_sum = rhs.check_sum(); this->m_connectors_cnt = rhs.connectors_cnt(); } + // A user-declared copy assignment or destructor deprecates the implicitly generated + // copy constructor, and this class has both, so declare it rather than rely on it. + CutObjectBase(const CutObjectBase &) = default; + CutObjectBase &operator=(const CutObjectBase &other) { this->copy(other); diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index ae1954087d..7d54048176 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -39,7 +39,6 @@ namespace orientation { float height_to_bottom_hull_ratio = 0; // affects stability, the lower the better float unprintability = 0; Eigen::VectorXf areas_cooling; - CostItems(CostItems const & other) = default; CostItems() = default; static std::string field_names() { return " overhang, bottom, bothull, contour, A_laf, A_prj, unprintability"; diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 9037118f0c..a6b38889a5 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -2127,7 +2127,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim bridgeable_filtered = union_ex(offset_ex(remaining, perimeter_spacing), bridgeable_filtered); bridgeable_filtered = offset_ex(bridgeable_filtered, -perimeter_spacing); bridgeable_filtered = diff_ex(bridgeable_filtered, remaining, ApplySafetyOffset::Yes); - bridgeable_filtered = opening_ex(bridgeable_filtered, perimeter_spacing); // filter noise from the diff_ex + bridgeable_filtered = opening_ex(bridgeable_filtered, ext_perimeter_width / 2); // filter noise from the diff_ex bridgeable_filtered = offset_ex(bridgeable_filtered, perimeter_spacing); // restore the size to the original bridgeable area // Safety measure: Keep the bridge mask from intruding deeper into the // supported anchor region than the explicit anchor overlap. diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 039f361eaa..21e5355fc5 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -195,7 +195,6 @@ public: Point(int64_t x, int32_t y) : Vec2crd(coord_t(x), coord_t(y)) {} Point(int32_t x, int64_t y) : Vec2crd(coord_t(x), coord_t(y)) {} Point(double x, double y) : Vec2crd(coord_t(std::round(x)), coord_t(std::round(y))) {} - Point(const Point &rhs) { *this = rhs; } explicit Point(const Vec2d& rhs) : Vec2crd(coord_t(std::round(rhs.x())), coord_t(std::round(rhs.y()))) {} // This constructor allows you to construct Point from Eigen expressions // This constructor has to be implicit (non-explicit) to allow implicit conversion from Eigen expressions. @@ -278,7 +277,6 @@ public: Point3(int32_t x, int32_t y, int32_t z = 0) : Vec3crd(coord_t(x), coord_t(y), coord_t(z)) {} Point3(int64_t x, int64_t y, int64_t z = 0) : Vec3crd(coord_t(x), coord_t(y), coord_t(z)) {} Point3(double x, double y, double z = 0.0) : Vec3crd(coord_t(std::round(x)), coord_t(std::round(y)), coord_t(std::round(z))) {} - Point3(const Point3 &rhs) { *this = rhs; } explicit Point3(const Vec2crd& vec2crd, coord_t z = 0) : Vec3crd(vec2crd.x(), vec2crd.y(), z) {} explicit Point3(const Vec3crd &vec3crd) : Vec3crd(vec3crd) {} // This constructor allows you to construct Point from Eigen expressions diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 304c8957d5..3cf85e8054 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -545,7 +545,7 @@ std::string generate_preset_setting_id(const std::string& vendor, const std::str return ""; // Dedicated namespace for preset setting_ids, distinct from the cloud per-user - // namespace (OrcaCloudServiceAgent). Keep in sync with scripts/assign_vendor_setting_ids.py; + // namespace (OrcaCloudServiceAgent). Keep in sync with scripts/orca_id_tool.py; // never change this constant. static const boost::uuids::uuid vendor_namespace = boost::uuids::string_generator()("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f"); @@ -983,15 +983,19 @@ BedType Preset::get_default_bed_type(PresetBundle* preset_bundle) if (config.has("default_bed_type") && !config.opt_string("default_bed_type").empty()) { try { std::string str_bed_type = config.opt_string("default_bed_type"); - - // Try parsing as integer first (legacy format) + BedType bed_type; + if (ConfigOptionEnum<BedType>::from_string(str_bed_type, bed_type) && + bed_type > btDefault && bed_type < btCount) { + return bed_type; + } + + // Try parsing as integer (legacy format) int bed_type_value = atoi(str_bed_type.c_str()); - if (bed_type_value > 0) { + if (bed_type_value > 0 && bed_type_value < BedType::btCount) { return BedType(bed_type_value); } - else { - BOOST_LOG_TRIVIAL(error) << "default_bed_type: invalid bed type: " << str_bed_type; - } + + BOOST_LOG_TRIVIAL(error) << "default_bed_type: invalid bed type: " << str_bed_type; return BedType::btPEI; } catch(...) { @@ -1649,7 +1653,7 @@ std::string PresetCollection::canonical_preset_name(const std::string &name, con void PresetCollection::load_presets( const std::string &dir_path, const std::string &subdir, PresetsConfigSubstitutions& substitutions, ForwardCompatibilitySubstitutionRule substitution_rule, - std::function<void(Preset&)> preset_loaded_fn, const PresetOrigin &load_origin) + std::function<void(Preset&)> preset_loaded_fn, const PresetOrigin &load_origin, bool read_only) { // Don't use boost::filesystem::canonical() on Windows, it is broken in regard to reparse points, // see https://github.com/prusa3d/PrusaSlicer/issues/732 @@ -1658,7 +1662,7 @@ void PresetCollection::load_presets( // Load custom roots first if (fs::exists(dir / "base")) { - load_presets(dir.string(), "base", substitutions, substitution_rule, nullptr, resolved_origin); + load_presets(dir.string(), "base", substitutions, substitution_rule, nullptr, resolved_origin, read_only); } //BBS: add config related logs @@ -1666,7 +1670,8 @@ void PresetCollection::load_presets( //BBS do not parse folder if not exists m_dir_path = dir.string(); if (!fs::exists(dir)) { - fs::create_directory(dir); + if (!read_only) + fs::create_directory(dir); return; } @@ -1716,10 +1721,10 @@ void PresetCollection::load_presets( substitutions.push_back({ preset.name, m_type, PresetConfigSubstitutions::Source::UserFile, preset.file, std::move(config_substitutions) }); if (!reason.empty()) { fs::path file_path(preset.file); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); file_path.replace_extension(".info"); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); BOOST_LOG_TRIVIAL(error) << boost::format("parse config %1% failed")%preset.file; ++m_errors; @@ -1790,7 +1795,8 @@ void PresetCollection::load_presets( size_t at_pos = name.find('@'); if (at_pos != std::string::npos && at_pos + 1 < name.length()) { compatible_printers->values.push_back(name.substr(at_pos + 1)); - preset.save(nullptr); + if (!read_only) + preset.save(nullptr); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " added compatible_printers for preset: " << name; } } @@ -1808,10 +1814,10 @@ void PresetCollection::load_presets( ++m_errors; BOOST_LOG_TRIVIAL(error) << boost::format("The user-config cannot be loaded: %1%. Reason: %2%")%preset.file %err.what(); fs::path file_path(preset.file); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); file_path.replace_extension(".info"); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); //throw Slic3r::RuntimeError(std::string("The selected preset cannot be loaded: ") + preset.file + "\n\tReason: " + err.what()); } catch (const std::runtime_error &err) { @@ -1819,10 +1825,10 @@ void PresetCollection::load_presets( BOOST_LOG_TRIVIAL(error) << boost::format("Failed loading the user-config file: %1%. Reason: %2%")%preset.file %err.what(); //throw Slic3r::RuntimeError(std::string("Failed loading the preset file: ") + preset.file + "\n\tReason: " + err.what()); fs::path file_path(preset.file); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); file_path.replace_extension(".info"); - if (fs::exists(file_path)) + if (!read_only && fs::exists(file_path)) fs::remove(file_path); } @@ -3056,6 +3062,75 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det this->get_selected_preset().save(nullptr); } +// A detached standalone preset for the Full Publish receiver: create a user preset holding +// the full resolved filament config (no inheritance, no vendor/alias links), parentless. +// Note: universal printer compatibility is not enforced here - callers apply +// make_publish_universal() to the config before handing it over when they need it. +// Mirrors save_current_preset(detach=true)'s creation branch but does not force-select or +// diff against a parent; the caller decides whether to select it. +// The published entry's filament_id is forwarded so user bases keep their stable +// material grouping (get_filament_presets() groups user bases by filament_id). +// The copy is a project-embedded preset: it lives inside the loaded project only +// (serialized into the saved .3mf, restored by load_project_embedded_presets) and +// never touches the user's library directory; Preset::save() early-returns for +// embedded presets, so persistence is skipped here too. +// Returns the final (uniquified) name; on collision "<base>" -> "<base> (Published)" -> +// "<base> (Published 2)" ... +std::string PresetCollection::add_detached_preset(const std::string &name_base, DynamicPrintConfig config, + const std::string &filament_id) +{ + if (name_base.empty()) + return std::string(); + Preset stored(m_type, name_base); + stored.config = std::move(config); + stored.filament_id = filament_id; + + // Uniquify verbatim; only on collision append " (Published)" then " (Published 2)". + const std::string base_name = name_base; + std::string final_name = base_name; + auto exists = [this](const std::string &candidate) -> bool { + const auto it = this->find_preset_internal(candidate); + return it != m_presets.end() && it->name == candidate; + }; + if (exists(final_name)) { + final_name = base_name + " (Published)"; + for (int i = 2; exists(final_name); ++i) + final_name = base_name + " (Published " + std::to_string(i) + ")"; + } + + // Creation branch of save_current_preset(detach=true), without its selection side + // effects or project-embedded path. + lock(); + const auto it = this->find_preset_internal(final_name); + if (m_presets.begin() + m_idx_selected >= it) + ++m_idx_selected; + Preset &preset = *m_presets.insert(it, stored); + preset.name = final_name; + preset.vendor = nullptr; + preset.alias.clear(); + preset.renamed_from.clear(); + preset.m_excluded_from.clear(); + preset.setting_id.clear(); + preset.inherits().clear(); + preset.version = Semver::parse(SoftFever_VERSION).value_or(Semver()); + preset.is_default = false; + preset.is_system = false; + preset.is_external = false; + preset.bundle_id.clear(); + preset.file = this->path_for_preset(preset); + preset.is_visible = true; + preset.is_project_embedded = true; + if (m_type == Preset::TYPE_PRINT) + preset.config.option<ConfigOptionString>("print_settings_id", true)->value = final_name; + else if (m_type == Preset::TYPE_FILAMENT) + preset.config.option<ConfigOptionStrings>("filament_settings_id", true)->values[0] = final_name; + else if (m_type == Preset::TYPE_PRINTER) + preset.config.option<ConfigOptionString>("printer_settings_id", true)->value = final_name; + unlock(); + + return final_name; +} + bool PresetCollection::delete_current_preset() { Preset &selected = this->get_selected_preset(); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index c9b3197a6f..2653628ead 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -93,8 +93,8 @@ class PresetBundle; // Deterministic preset setting_id: uuid5(vendor/type/name) -> 16 base62 chars. // Pure function of a system preset's identity, so the value can be assigned by -// scripts/assign_vendor_setting_ids.py and recomputed here when a profile ships -// without it. MUST stay byte-identical to scripts/assign_vendor_setting_ids.py. +// scripts/orca_id_tool.py and recomputed here when a profile ships without it. +// MUST stay byte-identical to scripts/orca_id_tool.py. // This is NOT the per-user cloud-sync setting_id // (OrcaCloudServiceAgent::generate_uuid_for_setting_id) - do not conflate them. std::string generate_preset_setting_id(const std::string& vendor, @@ -558,7 +558,7 @@ public: void add_default_preset(const std::vector<std::string> &keys, const Slic3r::StaticPrintConfig &defaults, const std::string &preset_name); // Load ini files of the particular type from the provided directory path. - void load_presets(const std::string &dir_path, const std::string &subdir, PresetsConfigSubstitutions& substitutions, ForwardCompatibilitySubstitutionRule rule, std::function<void(Preset&)> preset_loaded_fn = nullptr, const PresetOrigin &load_origin = PresetOrigin()); + void load_presets(const std::string &dir_path, const std::string &subdir, PresetsConfigSubstitutions& substitutions, ForwardCompatibilitySubstitutionRule rule, std::function<void(Preset&)> preset_loaded_fn = nullptr, const PresetOrigin &load_origin = PresetOrigin(), bool read_only = false); //BBS: update user presets directory void update_user_presets_directory(const std::string& dir_path, const std::string& type); @@ -631,6 +631,22 @@ public: // All presets are marked as not modified and the new preset is activated. //BBS: add project embedded preset logic void save_current_preset(const std::string &new_name, bool detach = false, bool save_to_project = false, Preset* _curr_preset = nullptr); + // Insert a standalone user preset holding the full resolved config (no inheritance, + // no vendor links): the libslic3r equivalent of "Detach from parent". Takes a + // resolved config, clears parent/vendor/alias metadata, stamps filament_settings_id. + // Unlike save_current_preset it does not force-select or diff against a parent. + // Used by the published-3MF Full Publish path. The optional filament_id seeds the + // preset's stable material grouping (get_filament_presets groups user bases by + // filament_id); the published entry's filament_id is forwarded so the copy keeps + // the author's grouping. + // The copy is a project-embedded preset ("Preset Inside Project"): it lives inside + // the loaded project only, is serialized into the saved .3mf via + // get_current_project_embedded_presets(), and is never written to the user's + // library directory. + // Returns the final (uniquified) name; on collision the suffix rule is: + // "<base>" -> "<base> (Published)" -> "<base> (Published 2)" ... + std::string add_detached_preset(const std::string &name_base, DynamicPrintConfig config, + const std::string &filament_id = std::string()); // Delete the current preset, activate the first visible preset. // returns true if the preset was deleted successfully. @@ -840,13 +856,12 @@ public: protected: PresetCollection() = default; - // Copy constructor and copy operators are not to be used from outside PresetBundle, - // as the Profile::vendor points to an instance of VendorProfile stored at parent PresetBundle! - PresetCollection(const PresetCollection &other) = default; - //BBS: add operator= logic insteadof default + // Deleted by the std::recursive_mutex member. PresetBundle copies by assignment. + PresetCollection(const PresetCollection &other) = delete; + //BBS: hand-written because m_mutex cannot be copy-assigned. PresetCollection& operator=(const PresetCollection &other); - // After copying a collection with the default operators above, call this function - // to adjust Profile::vendor pointers. + // Copying leaves every Preset::vendor pointing into the source bundle's vendor map. + // This re-points them at the matching entries in vendors. void update_vendor_ptrs_after_copy(const VendorMap &vendors); // Select a preset, if it exists. If it does not exist, select an invalid (-1) index. @@ -984,7 +999,8 @@ public: bool only_default_printers() const; private: PrinterPresetCollection() = default; - PrinterPresetCollection(const PrinterPresetCollection &other) = default; + // Deleted along with the base copy constructor. + PrinterPresetCollection(const PrinterPresetCollection &other) = delete; PrinterPresetCollection& operator=(const PrinterPresetCollection &other) = default; friend class PresetBundle; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 53524887a9..c90ebc756b 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -7,16 +7,18 @@ #include "PresetCacheFormat.hpp" #include "PrintConfig.hpp" +#include "PublishSettings.hpp" #include "FilamentMixer.hpp" #include "libslic3r.h" #include "I18N.hpp" #include "Utils.hpp" #include "LocalesUtils.hpp" #include "Model.hpp" +#include "TriangleSelector.hpp" #include "libslic3r_version.h" #include <algorithm> -#include <mutex> +#include <cstdlib> #include <set> #include <fstream> #include <unordered_set> @@ -45,6 +47,10 @@ namespace Slic3r { +// Project-level options imported from a loaded 3MF into project_config. s_project_options_published +// below is the reduced subset that crosses over in "published" 3MF mode; keep both in sync. +// s_project_options_published additionally carries wipe_tower_rotation_angle, which normal +// loads do not import (it is not listed here): published-only plate geometry. static std::vector<std::string> s_project_options { "flush_volumes_vector", "flush_volumes_matrix", @@ -85,6 +91,21 @@ static std::vector<std::string> s_project_options { "filament_mixed_gradient_per_part" }; +// Project options applied when loading a "published" 3MF project: s_project_options minus the +// filament/purge keys, plus wipe_tower_rotation_angle (plate geometry that only published +// loads import today). A published file must not port the author's filament data +// (colors, colour types, filament/map/AMS slot state, purge/prime/flush volumes, nozzle +// volume types, filament switcher state) to the receiver's project_config, which feeds the +// scene colors, AMS slot colors and purge data. Only the plate/bed geometry keys cross over; +// normal (non-published) 3MF loads keep importing the author's flush data via s_project_options. +// +// KEEP IN SYNC with s_project_options above: when a new project option is added there, decide +// here whether it is plate/bed geometry (add it to this list) or filament/purge/mapping/device +// state (it must NOT be added). curr_bed_type is deliberately NOT in this list: the receiver +// keeps its own bed type when loading a published project. The published-mode project_config +// assertions in tests/libslic3r/test_preset_bundle_loading.cpp guard both directions. +static std::vector<std::string> s_project_options_published{"wipe_tower_x", "wipe_tower_y", "wipe_tower_rotation_angle"}; + //Orca: add custom as default const char *PresetBundle::ORCA_DEFAULT_BUNDLE = "Custom"; const char *PresetBundle::ORCA_DEFAULT_PRINTER_MODEL = "MyKlipper 0.4 nozzle"; @@ -453,6 +474,158 @@ PresetBundle::PresetBundle() this->project_config.apply_only(FullPrintConfig::defaults(), s_project_options); } +bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Type type, + const std::string &source_file, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error, bool allow_source_manifest) +{ + if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSystemSilent) + compatibility_rule = ForwardCompatibilitySubstitutionRule::EnableSilent; + else if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSilentDisableSystem) + compatibility_rule = ForwardCompatibilitySubstitutionRule::Disable; + + auto collection_for_type = [](PresetBundle &bundle, Preset::Type preset_type) -> PresetCollection * { + switch (preset_type) { + case Preset::TYPE_PRINT: return &bundle.prints; + case Preset::TYPE_FILAMENT: return &bundle.filaments; + case Preset::TYPE_PRINTER: return &bundle.printers; + default: return nullptr; + } + }; + + PresetCollection *collection = collection_for_type(*this, type); + if (collection == nullptr) { + error = "Unsupported preset type"; + return false; + } + + const boost::filesystem::path source_path = boost::filesystem::absolute(source_file).lexically_normal(); + auto find_loaded = [&](PresetBundle &bundle) -> const Preset * { + PresetCollection *loaded_collection = collection_for_type(bundle, type); + const Preset *resolved = nullptr; + for (const Preset &preset : loaded_collection->get_presets()) { + if (preset.file.empty()) + continue; + + boost::system::error_code ec; + const bool same_file = boost::filesystem::equivalent(source_path, boost::filesystem::path(preset.file), ec); + if (ec || !same_file) + continue; + if (resolved != nullptr) { + error = "Preset identity is ambiguous"; + return nullptr; + } + resolved = &preset; + } + return resolved; + }; + + if (const Preset *resolved = find_loaded(*this)) { + config = resolved->config; + error.clear(); + return true; + } + if (error == "Preset identity is ambiguous") + return false; + if (!allow_source_manifest) { + error = "Preset was not found in the loaded bundle"; + return false; + } + + // A manifest-backed source file can be resolved without requiring the vendor + // to have been copied into data_dir()/system. Find the nearest ancestor whose + // sibling manifest names it, then let the canonical vendor loader flatten the + // complete tree (including nested sub_path entries and library inheritance). + for (boost::filesystem::path vendor_dir = source_path.parent_path(); !vendor_dir.empty(); vendor_dir = vendor_dir.parent_path()) { + const std::string vendor_id = vendor_dir.filename().string(); + if (vendor_id.empty()) + continue; + const boost::filesystem::path root_dir = vendor_dir.parent_path(); + const boost::filesystem::path manifest = root_dir / (vendor_id + ".json"); + if (!boost::filesystem::is_regular_file(manifest)) + continue; + const boost::filesystem::path manifest_relative = source_path.lexically_relative(vendor_dir); + if (manifest_relative.empty() || *manifest_relative.begin() == "..") + continue; + + try { + PresetBundle library_bundle; + const PresetBundle *base_bundle = nullptr; + if (vendor_id != ORCA_FILAMENT_LIBRARY && + boost::filesystem::is_regular_file(root_dir / (std::string(ORCA_FILAMENT_LIBRARY) + ".json"))) { + library_bundle.m_preserve_vendor_source_paths = true; + library_bundle.load_vendor_configs_from_json(root_dir.string(), ORCA_FILAMENT_LIBRARY, LoadSystem, + compatibility_rule, nullptr, false); + if (library_bundle.error_count() != 0) { + error = "OrcaFilamentLibrary contains invalid presets"; + return false; + } + base_bundle = &library_bundle; + } + + PresetBundle source_bundle; + source_bundle.m_preserve_vendor_source_paths = true; + source_bundle.load_vendor_configs_from_json(root_dir.string(), vendor_id, LoadSystem, + compatibility_rule, base_bundle, false); + if (source_bundle.error_count() != 0) { + error = "Vendor bundle contains invalid presets"; + return false; + } + + const Preset *resolved = find_loaded(source_bundle); + if (resolved == nullptr) { + if (error.empty()) + error = "Source file is not an instantiated preset in its vendor manifest"; + return false; + } + config = resolved->config; + error.clear(); + return true; + } catch (const std::exception &ex) { + error = ex.what(); + return false; + } + } + + error = "Preset was not found in the loaded bundle"; + return false; +} + +bool PresetBundle::resolve_preset_config_type(DynamicPrintConfig &config, Preset::Type &type, + const std::string &source_file, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error, bool allow_source_manifest) +{ + std::optional<std::pair<Preset::Type, DynamicPrintConfig>> resolved; + for (Preset::Type candidate_type : types_list(ptFFF)) { + DynamicPrintConfig candidate_config(config); + std::string candidate_error; + if (!resolve_preset_config(candidate_config, candidate_type, source_file, compatibility_rule, + candidate_error, allow_source_manifest)) { + if (candidate_error == "Preset identity is ambiguous") { + error = std::move(candidate_error); + return false; + } + continue; + } + if (resolved) { + error = "Preset type is ambiguous"; + return false; + } + resolved.emplace(candidate_type, std::move(candidate_config)); + } + + if (!resolved) { + error = "Preset type could not be resolved"; + return false; + } + + type = resolved->first; + config = std::move(resolved->second); + error.clear(); + return true; +} + PresetBundle::PresetBundle(const PresetBundle &rhs) { *this = rhs; @@ -574,7 +747,8 @@ void PresetBundle::copy_files(const std::string& from) } PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig &config, ForwardCompatibilitySubstitutionRule substitution_rule, - const PresetPreferences& preferred_selection/* = PresetPreferences()*/) + const PresetPreferences& preferred_selection/* = PresetPreferences()*/, + std::string *errors, bool read_only) { // First load the vendor specific system presets. PresetsConfigSubstitutions substitutions; @@ -585,16 +759,20 @@ PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig &config, Forward const auto startup_t0 = std::chrono::steady_clock::now(); //BBS: change system config to json - std::tie(substitutions, errors_cummulative) = this->load_system_presets_from_json(substitution_rule); + std::tie(substitutions, errors_cummulative) = this->load_system_presets_from_json(substitution_rule, !read_only); + if (errors != nullptr) + *errors = errors_cummulative; // BBS load preset from user's folder, load system default if // BBS: change directories by design std::string dir_user_presets = config.get("preset_folder"); if (dir_user_presets.empty()) { - load_user_presets(DEFAULT_USER_FOLDER_NAME, substitution_rule); + load_user_presets(DEFAULT_USER_FOLDER_NAME, substitution_rule, read_only); } else { - load_user_presets(dir_user_presets, substitution_rule); + load_user_presets(dir_user_presets, substitution_rule, read_only); } + if (errors != nullptr && errors->empty() && m_errors != 0) + *errors = "Preset loading reported " + std::to_string(m_errors) + " error(s)"; // Rewrite renamed compatible_printers / compatible_prints references before selection. Skipped // in validation mode so the profile validator (has_errors -> check_preset_references) sees the @@ -1010,18 +1188,26 @@ std::string PresetBundle::get_hotend_model_for_printer_model(std::string model_n return out; } -PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, ForwardCompatibilitySubstitutionRule substitution_rule) +PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, ForwardCompatibilitySubstitutionRule substitution_rule, bool read_only) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " entry and user is: " << user; PresetsConfigSubstitutions substitutions; std::string errors_cummulative; fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); - if (!fs::exists(user_folder)) fs::create_directory(user_folder); + if (!fs::exists(user_folder)) { + if (read_only) + return substitutions; + fs::create_directory(user_folder); + } std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + user; fs::path folder(user_folder / user); - if (!fs::exists(folder)) fs::create_directory(folder); + if (!fs::exists(folder)) { + if (read_only) + return substitutions; + fs::create_directory(folder); + } bundles.WriteLock(); bundles.m_bundles.clear(); @@ -1049,13 +1235,13 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For this->prints.load_presets(bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.print_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id), read_only); this->filaments.load_presets(bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.filament_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id), read_only); this->printers.load_presets(bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.printer_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id), read_only); metadata.bundle_type = BundleType::Local; metadata.path = metadata_file.string(); @@ -1085,13 +1271,13 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For this->prints.load_presets(bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.print_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id), read_only); this->filaments.load_presets(bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.filament_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id), read_only); this->printers.load_presets(bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, [&](Preset& preset) { metadata.printer_presets.push_back(preset.name); - }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id), read_only); metadata.bundle_type = BundleType::Subscribed; metadata.path = metadata_file.string(); @@ -1110,17 +1296,20 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For const auto json_t0 = std::chrono::steady_clock::now(); try { std::string sel = prints.get_selected_preset().name; - this->prints.load_presets(dir_user_presets, PRESET_PRINT_NAME, substitutions, substitution_rule); + this->prints.load_presets(dir_user_presets, PRESET_PRINT_NAME, substitutions, substitution_rule, + nullptr, PresetOrigin(), read_only); prints.select_preset_by_name(sel, false); } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } try { std::string sel = filaments.get_selected_preset().name; - this->filaments.load_presets(dir_user_presets, PRESET_FILAMENT_NAME, substitutions, substitution_rule); + this->filaments.load_presets(dir_user_presets, PRESET_FILAMENT_NAME, substitutions, substitution_rule, + nullptr, PresetOrigin(), read_only); filaments.select_preset_by_name(sel, false); } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } try { std::string sel = printers.get_selected_preset().name; - this->printers.load_presets(dir_user_presets, PRESET_PRINTER_NAME, substitutions, substitution_rule); + this->printers.load_presets(dir_user_presets, PRESET_PRINTER_NAME, substitutions, substitution_rule, + nullptr, PresetOrigin(), read_only); printers.select_preset_by_name(sel, false); } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } if (!errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative); @@ -1446,6 +1635,12 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector<std::string> metadata.id = to_string(uuid); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " bundle_id was empty, so generating a UUID: " << metadata.id; } + if (has_bundle_structure && !is_path_within_root(metadata.id, user_folder / user_id / PRESET_LOCAL_DIR)) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " bundle id escapes the bundle directory, not importing: " << metadata.id; + fclose(zipFile); + fs::remove_all(temp_folder, ec); + continue; + } // Build bundle directory path based on whether bundle_structure.json was present fs::path bundle_base_dir; @@ -1468,11 +1663,15 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector<std::string> if (status) { std::string file_name = file_stat.m_filename; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " From zip file: " << file << ". Read file name: " << file_stat.m_filename; - size_t index = file_name.find_last_of('/'); + size_t index = file_name.find_last_of("/\\"); if (std::string::npos != index) { file_name = file_name.substr(index + 1); } if (BUNDLE_STRUCTURE_JSON_NAME == file_name) continue; + if (!is_path_within_root(file_name, temp_folder)) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " zip entry escapes the temp directory, skipping: " << file_stat.m_filename; + continue; + } // create target file path std::string target_file_path = boost::filesystem::path(temp_folder / file_name).make_preferred().string(); @@ -1561,6 +1760,10 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions & s BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset type is unknown, not loading: " << name; return false; } + if (!is_path_within_root(name, fs::path(collection->m_dir_path))) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset name escapes the preset directory, not loading: " << name; + return false; + } const PresetOrigin load_origin = detect_origin_from_path(boost::filesystem::path(bundle_dir)); const std::string preset_name = get_preset_canonical_name(name, load_origin); @@ -2157,7 +2360,7 @@ int PresetBundle::validate_presets(const std::string &file_name, DynamicPrintCon void PresetBundle::remove_users_preset(AppConfig &config, std::map<std::string, std::map<std::string, std::string>> *my_presets) { - auto check_removed = [my_presets, this](Preset &preset) -> bool { + auto check_removed = [my_presets](Preset &preset) -> bool { if (my_presets == nullptr) return true; if (my_presets->find(preset.name) != my_presets->end()) return false; if (!preset.sync_info.empty()) return false; // syncing, not remove @@ -2266,7 +2469,8 @@ void PresetBundle::clear_printer_hold_aliases() } //BBS: add json related logic, load system presets from json -std::pair<PresetsConfigSubstitutions, std::string> PresetBundle::load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule) +std::pair<PresetsConfigSubstitutions, std::string> PresetBundle::load_system_presets_from_json( + ForwardCompatibilitySubstitutionRule compatibility_rule, bool allow_cache) { //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%")%compatibility_rule; @@ -2288,7 +2492,7 @@ std::pair<PresetsConfigSubstitutions, std::string> PresetBundle::load_system_pre // The vendors below are loaded whole and against each other — the filament // library first, then every other vendor with it as the base — so each parse // is complete enough to be worth caching. - m_generate_vendor_caches = m_generate_vendor_caches || ! validation_mode; + m_generate_vendor_caches = allow_cache && (m_generate_vendor_caches || !validation_mode); PresetsConfigSubstitutions substitutions; std::string errors_cummulative; @@ -2318,7 +2522,8 @@ std::pair<PresetsConfigSubstitutions, std::string> PresetBundle::load_system_pre // state into this load. this->clear_printer_hold_aliases(); this->m_errors = 0; - append(substitutions, this->load_vendor_configs_from_json(dir.string(), orca_lib_vendor, PresetBundle::LoadSystem, compatibility_rule).first); + append(substitutions, this->load_vendor_configs_from_json( + dir.string(), orca_lib_vendor, PresetBundle::LoadSystem, compatibility_rule, nullptr, allow_cache).first); first = false; } catch (const std::runtime_error &err) { if (validation_mode) @@ -2343,7 +2548,7 @@ std::pair<PresetsConfigSubstitutions, std::string> PresetBundle::load_system_pre bundle->set_generate_vendor_caches(m_generate_vendor_caches); try { auto result = bundle->load_vendor_configs_from_json( - dir.string(), other_vendors[i], PresetBundle::LoadSystem, compatibility_rule, this); + dir.string(), other_vendors[i], PresetBundle::LoadSystem, compatibility_rule, this, allow_cache); parallel_substitutions[i] = std::move(result.first); parallel_bundles[i] = std::move(bundle); } catch (const std::runtime_error &err) { @@ -2920,6 +3125,16 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p // If executed due to a Config Wizard update, preferred_printer contains the first newly installed printer, otherwise nullptr. const Preset *preferred_printer = printers.find_system_preset_by_model_and_variant(preferred_selection.printer_model_id, preferred_selection.printer_variant); printers.select_preset_by_name(preferred_printer ? preferred_printer->name : initial_printer_profile_name, true); + Preset &selected_printer = printers.get_edited_preset(); + if (selected_printer.printer_technology() == ptFFF) { + BedType bed_type = selected_printer.get_default_bed_type(this); + const std::string saved_bed_type = config.get_printer_setting(selected_printer.name, "curr_bed_type"); + const int saved_bed_type_value = atoi(saved_bed_type.c_str()); + if (saved_bed_type_value > btDefault && saved_bed_type_value < btCount) + bed_type = static_cast<BedType>(saved_bed_type_value); + project_config.set_key_value("curr_bed_type", new ConfigOptionEnum<BedType>(bed_type)); + config.set("curr_bed_type", std::to_string(static_cast<int>(bed_type))); + } CNumericLocalesSetter locales_setter; // Orca: load from orca_presets @@ -3373,6 +3588,24 @@ std::vector<size_t> PresetBundle::physical_filament_config_indices() const } +// Orca: the AMS lookups below resolve a tray's filament_id to the FIRST compatible base +// preset. When several presets match the same id for the selected printer the pick is +// arbitrary (a profile bug - see the validator's check_duplicate_filament_subtypes), so +// scan past a successful match and warn about the runners-up. Behavior is unchanged. +static void warn_ambiguous_filament_id_match(const PresetCollection &filaments, PresetCollection::ConstIterator match, const std::string &filament_id) +{ + if (match == filaments.end()) + return; + std::string others; + for (auto it = std::next(match); it != filaments.end(); ++it) + if (it->is_compatible && filaments.get_preset_base(*it) == &*it && it->filament_id == filament_id) + others += (others.empty() ? "\"" : ", \"") + it->name + "\""; + if (!others.empty()) + BOOST_LOG_TRIVIAL(warning) << "Ambiguous AMS filament match: filament_id \"" << filament_id + << "\" matches multiple presets compatible with the selected printer; picked \"" << match->name + << "\", also matches " << others; +} + void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) { combox_info.clear(); @@ -3395,6 +3628,7 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) } auto iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id](auto &f) { return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; }); + warn_ambiguous_filament_id_match(filaments, iter, filament_id); if (iter == filaments.end()) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id; auto filament_type = ams.opt_string("filament_type", 0u); @@ -3412,7 +3646,7 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) combox_info.ams_names.push_back(ams_name); continue; } - iter = std::find_if(filaments.begin(), filaments.end(), [&filament_type](auto &f) { return f.is_compatible && f.is_system; }); + iter = std::find_if(filaments.begin(), filaments.end(), [](auto &f) { return f.is_compatible && f.is_system; }); if (iter == filaments.end()) continue; } @@ -3497,6 +3731,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi auto iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id, &has_type, filament_type](auto &f) { has_type |= f.config.opt_string("filament_type", 0u) == filament_type; return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; }); + warn_ambiguous_filament_id_match(filaments, iter, filament_id); if (iter == filaments.end()) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id; if (!filament_type.empty()) { @@ -4009,6 +4244,9 @@ std::vector<std::vector<DynamicPrintConfig>> PresetBundle::get_extruder_filament return filament_infos; } +// ORCA TODO: currently, this function assumes the printer name follows the pattern of "<printer_model> <nozzle_diameter>", e.g. +// printer_type: "Bambu Lab X2D", nozzle_diameter_str: "0.4 nozzle" => printer_name: "Bambu Lab X2D 0.4 nozzle". If the printer name does +// not follow this pattern, the function may not work correctly. std::set<std::string> PresetBundle::get_printer_names_by_printer_type_and_nozzle(const std::string &printer_type, std::string nozzle_diameter_str, bool system_only) { std::set<std::string> printer_names; @@ -4039,6 +4277,40 @@ std::set<std::string> PresetBundle::get_printer_names_by_printer_type_and_nozzle return printer_names; } +std::vector<Preset *> PresetBundle::get_filament_presets_for_machine(const std::string &printer_type, + const std::string &nozzle_diameter_str, + bool include_user_presets) +{ + // Printer model plus nozzle diameter is expected to resolve to a single system printer preset; + // get_printer_names_by_printer_type_and_nozzle asserts as much in debug builds. + const std::set<std::string> printer_names = get_printer_names_by_printer_type_and_nozzle(printer_type, nozzle_diameter_str); + const Preset *printer = printer_names.empty() ? nullptr : printers.find_preset(*printer_names.begin()); + if (printer == nullptr) + return {}; + + // Preset::is_visible is deliberately not consulted: it tracks what the Configuration Wizard + // installed, while the caller identifies a physically connected machine the user may never + // have installed - gating on it would empty the list for exactly those machines. + const PresetWithVendorProfile active_printer = printers.get_preset_with_vendor_profile(*printer); + // Loop invariant - the two argument is_compatible_with_printer() would rebuild it per preset. + DynamicPrintConfig printer_config; + printer_config.set_key_value("printer_preset", new ConfigOptionString(printer->name)); + if (const ConfigOption *opt = printer->config.option("nozzle_diameter")) + printer_config.set_key_value("num_extruders", new ConfigOptionInt((int) static_cast<const ConfigOptionFloats *>(opt)->values.size())); + + std::vector<Preset *> compatible; + for (Preset &preset : filaments) { + /* The situation where the preset is not offered is as follows: + 1. Not a root preset + 2. Not a system preset and the printer firmware does not support user presets */ + if (filaments.get_preset_base(preset) != &preset || (!preset.is_system && !include_user_presets)) + continue; + if (is_compatible_with_printer(filaments.get_preset_with_vendor_profile(preset), active_printer, &printer_config)) + compatible.push_back(&preset); + } + return compatible; +} + bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray( const std::string &printer_type, std::string& nozzle_diameter_str, std::string &setting_id, std::string &tag_uid, std::string &nozzle_temp_min, std::string &nozzle_temp_max, std::string& preset_setting_id) { @@ -4047,7 +4319,11 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m std::map<std::string, std::vector<Preset const *>> filament_list = filaments.get_filament_presets(); std::set<std::string> printer_names = get_printer_names_by_printer_type_and_nozzle(printer_type, nozzle_diameter_str); - for (const Preset *preset : filament_list.find(setting_id)->second) { + auto filament_iter = filament_list.find(setting_id); + if (filament_iter == filament_list.end()) + return is_equation; + + for (const Preset *preset : filament_iter->second) { if (tag_uid == "0" || (tag_uid.size() == 16 && tag_uid.substr(12, 2) == "01")) continue; if (preset && !preset->is_user()) continue; ConfigOption * printer_opt = const_cast<Preset *>(preset)->config.option("compatible_printers"); @@ -4685,6 +4961,142 @@ static std::map<std::string, std::map<std::string, std::string>> filament_preset {"Bambu ASA @BBL H2D 0.6 nozzle", "Bambu ASA @BBL H2D 0.8 nozzle"}}} }; +// Relocate the per-slot cells of one mixed-filament project vector inside the imported +// config, applying every authored-slot -> destination move at once. Each move reads its +// source cell from a frozen snapshot of the config's current cells, so relocations never +// cross-contaminate when an earlier destination overlaps a later source (adjacent published +// tail mixes relocate onto consecutive slots). Cells the snapshot lacks degrade to +// empty/false defaults - the missing-data handling in the material pass reports them +// downstream. Left-behind source cells stay as-is: nothing else consumes the imported config +// at those indices in published mode. +static void apply_mixed_config_relocations(DynamicPrintConfig& config, + const std::string& key, + const std::vector<std::pair<size_t, size_t>>& moves) +{ + ConfigOption* opt = config.optptr(key); + if (opt == nullptr || moves.empty()) + return; + std::unique_ptr<ConfigOption> snapshot(opt->clone()); + switch (opt->type()) { + case coBools: { + auto* live = static_cast<ConfigOptionBools*>(opt); + const auto* frozen = static_cast<const ConfigOptionBools*>(snapshot.get()); + for (const auto [from, to] : moves) { + const unsigned char cell = from < frozen->values.size() ? frozen->values[from] : 0; + if (live->values.size() <= to) + live->values.resize(to + 1, 0); + live->values[to] = cell; + } + break; + } + case coStrings: { + auto* live = static_cast<ConfigOptionStrings*>(opt); + const auto* frozen = static_cast<const ConfigOptionStrings*>(snapshot.get()); + for (const auto [from, to] : moves) { + const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); + if (live->values.size() <= to) + live->values.resize(to + 1, std::string{}); + live->values[to] = cell; + } + break; + } + default: break; + } +} + +// Relocate the per-slot cells of the receiver's OWN mixed-filament definitions (the ones that +// pre-existed in project_config) onto fresh tail slots, clearing each vacated source cell so an +// incoming published real filament can claim it. Unlike apply_mixed_config_relocations - which +// moves the incoming file's config and leaves sources alone - a displaced receiver mix must not +// keep its mixed flag in the physical region: the source slot becomes a physical slot, so its +// mixed flag and definition are reset, while its swatch colour and mapping travel with the +// definition to the tail slot. Reads come from a frozen snapshot so an earlier move's +// destination never overwrites a later move's still-unread source (sources sit in the physical +// region and destinations past it, so they cannot overlap, but the snapshot keeps the helper +// safe for any future reordering). +static void apply_receiver_mix_relocations(DynamicPrintConfig& config, + std::vector<std::vector<std::string>>& ams_multi_color_filment, + const std::vector<std::pair<size_t, size_t>>& moves) +{ + if (moves.empty()) + return; + + auto move_bools = [&](const char* key, bool clear_source) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast<ConfigOptionBools*>(opt); + std::unique_ptr<ConfigOption> snapshot(opt->clone()); + const auto* frozen = static_cast<const ConfigOptionBools*>(snapshot.get()); + for (const auto [from, to] : moves) { + const bool cell = from < frozen->values.size() ? frozen->values[from] : false; + if (live->values.size() <= to) + live->values.resize(to + 1, false); + live->values[to] = cell; + if (clear_source && from < live->values.size()) + live->values[from] = false; + } + }; + auto move_strings = [&](const char* key, bool clear_source) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast<ConfigOptionStrings*>(opt); + std::unique_ptr<ConfigOption> snapshot(opt->clone()); + const auto* frozen = static_cast<const ConfigOptionStrings*>(snapshot.get()); + for (const auto [from, to] : moves) { + const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); + if (live->values.size() <= to) + live->values.resize(to + 1, std::string{}); + live->values[to] = cell; + if (clear_source && from < live->values.size()) + live->values[from] = std::string{}; + } + }; + auto move_ints = [&](const char* key) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast<ConfigOptionInts*>(opt); + std::unique_ptr<ConfigOption> snapshot(opt->clone()); + const auto* frozen = static_cast<const ConfigOptionInts*>(snapshot.get()); + for (const auto [from, to] : moves) { + const int cell = from < frozen->values.size() ? frozen->values[from] : 0; + if (live->values.size() <= to) + live->values.resize(to + 1, 0); + live->values[to] = cell; + } + }; + + // Mixed-definition cells: move to the tail and clear the source - the vacated physical slot + // no longer holds a mix. + move_bools("filament_is_mixed", true); + move_strings("filament_mixed_components", true); + move_strings("filament_mixed_sublayer_ratios", true); + move_bools("filament_mixed_gradient", true); + move_strings("filament_mixed_gradient_range", true); + move_strings("filament_mixed_gradient_curve", true); + move_bools("filament_mixed_gradient_per_part", true); + // Swatch colour and mapping travel with the definition; the source colour is left for the + // incoming real's publish_color (or the slot's resolved preset) to fill in. + move_strings("filament_colour", false); + move_strings("filament_multi_colour", false); + move_strings("filament_colour_type", false); + move_ints("filament_map"); + move_ints("filament_nozzle_map"); + move_ints("filament_volume_map"); + { + const std::vector<std::vector<std::string>> frozen = ams_multi_color_filment; + for (const auto [from, to] : moves) { + const std::vector<std::string> cell = from < frozen.size() ? frozen[from] : std::vector<std::string>(); + if (ams_multi_color_filment.size() <= to) + ams_multi_color_filment.resize(to + 1, std::vector<std::string>{}); + ams_multi_color_filment[to] = cell; + } + } +} + + //convert the old filament preset to new one after split static void convert_filament_preset_name(std::string& machine_name, std::string& filament_name) { @@ -4701,10 +5113,14 @@ static void convert_filament_preset_name(std::string& machine_name, std::string& } // Load a config file from a boost property_tree. This is a private method called from load_config_file. // is_external == false on if called from ConfigWizard -void PresetBundle::load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version, bool selected) +void PresetBundle::load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version, bool selected, PublishedConfig *published_config) { PrinterTechnology printer_technology = Preset::printer_technology(config); + // A "published" 3MF project keeps the user's currently-selected presets and overlays only + // the author-selected published keys onto the edited presets. + const bool is_published = published_config != nullptr && published_config->published; + auto clear_compatible_printers = [](DynamicPrintConfig& config){ ConfigOption *opt_compatible = config.optptr("compatible_printers"); if (opt_compatible != nullptr) { @@ -4845,127 +5261,60 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool switch (Preset::printer_technology(config)) { case ptFFF: { - //BBS: add different settings logic - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load print preset from print_settings_id"); - std::vector<std::string> print_different_keys_vector; - std::string print_different_settings = different_values[0]; - Slic3r::unescape_strings_cstyle(print_different_settings, print_different_keys_vector); - std::set<std::string> print_different_keys_set(print_different_keys_vector.begin(), print_different_keys_vector.end()); - //if (!has_different_settings_to_system) { - // print_different_keys_set.clear(); - //} - //else - print_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); - if (!print_compatible_printers.empty()) { - ConfigOptionStrings* compatible_printers = config.option<ConfigOptionStrings>("compatible_printers", true); - compatible_printers->values = print_compatible_printers; - } - - load_preset(this->prints, 0, "print_settings_id", print_different_keys_set, std::string()); - - //clear compatible printers - clear_compatible_printers(config); - - std::vector<std::string> printer_different_keys_vector; - std::string printer_different_settings = different_values[num_filaments + 1]; - Slic3r::unescape_strings_cstyle(printer_different_settings, printer_different_keys_vector); - std::set<std::string> printer_different_keys_set(printer_different_keys_vector.begin(), printer_different_keys_vector.end()); - //if (!has_different_settings_to_system) { - // printer_different_keys_set.clear(); - //} - //else - printer_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load printer preset from printer_settings_id"); - load_preset(this->printers, num_filaments + 1, "printer_settings_id", printer_different_keys_set, std::string()); - - // 3) Now load the filaments. If there are multiple filament presets, split them and load them. - auto old_filament_profile_names = config.option<ConfigOptionStrings>("filament_settings_id", true); - old_filament_profile_names->values.resize(num_filaments, std::string()); - - auto old_machine_profile_name = config.option<ConfigOptionString>("printer_settings_id", true); - - if (num_filaments <= 1) { - // Split the "compatible_printers_condition" and "inherits" values from the cummulative vectors to separate filament presets. - inherits = inherits_values[1]; - compatible_printers_condition = compatible_printers_condition_values[1]; - compatible_prints_condition = compatible_prints_condition_values.front(); - Preset *loaded = nullptr; - + // A "published" 3MF project keeps the user's currently-selected presets, so the + // print / printer / filament presets are NOT loaded from the file. Only the + // project config values and the published keys are applied below. + if (!is_published) { //BBS: add different settings logic - std::vector<std::string> filament_different_keys_vector; - std::string filament_different_settings = different_values[1]; - Slic3r::unescape_strings_cstyle(filament_different_settings, filament_different_keys_vector); - std::set<std::string> filament_different_keys_set(filament_different_keys_vector.begin(), filament_different_keys_vector.end()); + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load print preset from print_settings_id"); + std::vector<std::string> print_different_keys_vector; + std::string print_different_settings = different_values[0]; + Slic3r::unescape_strings_cstyle(print_different_settings, print_different_keys_vector); + std::set<std::string> print_different_keys_set(print_different_keys_vector.begin(), print_different_keys_vector.end()); //if (!has_different_settings_to_system) { - // filament_different_keys_set.clear(); + // print_different_keys_set.clear(); //} //else - filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + print_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + if (!print_compatible_printers.empty()) { + ConfigOptionStrings* compatible_printers = config.option<ConfigOptionStrings>("compatible_printers", true); + compatible_printers->values = print_compatible_printers; + } - std::string filament_id = filament_ids[0]; + load_preset(this->prints, 0, "print_settings_id", print_different_keys_set, std::string()); + + //clear compatible printers + clear_compatible_printers(config); + + std::vector<std::string> printer_different_keys_vector; + std::string printer_different_settings = different_values[num_filaments + 1]; + Slic3r::unescape_strings_cstyle(printer_different_settings, printer_different_keys_vector); + std::set<std::string> printer_different_keys_set(printer_different_keys_vector.begin(), printer_different_keys_vector.end()); + //if (!has_different_settings_to_system) { + // printer_different_keys_set.clear(); + //} + //else + printer_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load single filament preset from filament_settings_id"); - if (is_external) { - if (inherits.empty()) - convert_filament_preset_name(old_machine_profile_name->value, old_filament_profile_names->values.front()); - else - convert_filament_preset_name(old_machine_profile_name->value, inherits); - loaded = this->filaments.load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config, filament_different_keys_set, PresetCollection::LoadAndSelect::Always, file_version, filament_id).first; - } - else { - // called from Config Wizard. - loaded= &this->filaments.load_preset(this->filaments.path_from_name(name, inherits.empty()), name, config, true, file_version); - loaded->save(nullptr); - } - this->filament_presets.clear(); - this->filament_presets.emplace_back(loaded->name); - } else { - assert(is_external); - // Split the filament presets, load each of them separately. - std::vector<DynamicPrintConfig> configs(num_filaments, this->filaments.default_preset().config); - // loop through options and scatter them into configs. - for (const t_config_option_key &key : this->filaments.default_preset().config.keys()) { - ConfigOption *other_opt = config.option(key); - if (other_opt == nullptr) - continue; - if (other_opt->is_scalar()) { - for (size_t i = 0; i < configs.size(); ++ i) - configs[i].option(key, false)->set(other_opt); - } - else if (key != "compatible_printers" && key != "compatible_prints") { - for (size_t i = 0; i < configs.size(); ++i) { - if (process_multi_extruder && (filament_options_with_variant.find(key) != filament_options_with_variant.end())) { - ConfigOptionVectorBase* other_opt_vec = static_cast<ConfigOptionVectorBase*>(other_opt); - if (other_opt_vec->size() != extruder_variant_count) { - other_opt_vec->resize(extruder_variant_count); - } - size_t next_index = (i < (configs.size() - 1)) ? filament_variant_index[i + 1] : extruder_variant_count; - static_cast<ConfigOptionVectorBase*>(configs[i].option(key, false))->set(other_opt, filament_variant_index[i], next_index - filament_variant_index[i]); - } - else - static_cast<ConfigOptionVectorBase*>(configs[i].option(key, false))->set_at(other_opt, 0, i); - } - } - } - // Load the configs into this->filaments and make them active. - this->filament_presets = std::vector<std::string>(configs.size()); - // To avoid incorrect selection of the first filament preset (means a value of Preset->m_idx_selected) - // in a case when next added preset take a place of previosly selected preset, - // we should add presets from last to first - bool any_modified = false; - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load multiple filament preset from filament_settings_id"); - for (int i = (int)configs.size()-1; i >= 0; i--) { - DynamicPrintConfig &cfg = configs[i]; - // Split the "compatible_printers_condition" and "inherits" from the cummulative vectors to separate filament presets. - cfg.opt_string("compatible_printers_condition", true) = compatible_printers_condition_values[i + 1]; - cfg.opt_string("compatible_prints_condition", true) = compatible_prints_condition_values[i]; - cfg.opt_string("inherits", true) = inherits_values[i + 1]; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load printer preset from printer_settings_id"); + load_preset(this->printers, num_filaments + 1, "printer_settings_id", printer_different_keys_set, std::string()); + + // 3) Now load the filaments. If there are multiple filament presets, split them and load them. + auto old_filament_profile_names = config.option<ConfigOptionStrings>("filament_settings_id", true); + old_filament_profile_names->values.resize(num_filaments, std::string()); + + auto old_machine_profile_name = config.option<ConfigOptionString>("printer_settings_id", true); + + if (num_filaments <= 1) { + // Split the "compatible_printers_condition" and "inherits" values from the cummulative vectors to separate filament presets. + inherits = inherits_values[1]; + compatible_printers_condition = compatible_printers_condition_values[1]; + compatible_prints_condition = compatible_prints_condition_values.front(); + Preset *loaded = nullptr; //BBS: add different settings logic std::vector<std::string> filament_different_keys_vector; - std::string filament_different_settings = different_values[i+1]; + std::string filament_different_settings = different_values[1]; Slic3r::unescape_strings_cstyle(filament_different_settings, filament_different_keys_vector); std::set<std::string> filament_different_keys_set(filament_different_keys_vector.begin(), filament_different_keys_vector.end()); //if (!has_different_settings_to_system) { @@ -4974,32 +5323,105 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool //else filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); - std::string filament_id = filament_ids[i]; + std::string filament_id = filament_ids[0]; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load single filament preset from filament_settings_id"); + if (is_external) { + if (inherits.empty()) + convert_filament_preset_name(old_machine_profile_name->value, old_filament_profile_names->values.front()); + else + convert_filament_preset_name(old_machine_profile_name->value, inherits); + loaded = this->filaments.load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config, filament_different_keys_set, PresetCollection::LoadAndSelect::Always, file_version, filament_id).first; + } + else { + // called from Config Wizard. + loaded= &this->filaments.load_preset(this->filaments.path_from_name(name, inherits.empty()), name, config, true, file_version); + loaded->save(nullptr); + } + this->filament_presets.clear(); + this->filament_presets.emplace_back(loaded->name); + } else { + assert(is_external); + // Split the filament presets, load each of them separately. + std::vector<DynamicPrintConfig> configs(num_filaments, this->filaments.default_preset().config); + // loop through options and scatter them into configs. + for (const t_config_option_key &key : this->filaments.default_preset().config.keys()) { + ConfigOption *other_opt = config.option(key); + if (other_opt == nullptr) + continue; + if (other_opt->is_scalar()) { + for (size_t i = 0; i < configs.size(); ++ i) + configs[i].option(key, false)->set(other_opt); + } + else if (key != "compatible_printers" && key != "compatible_prints") { + for (size_t i = 0; i < configs.size(); ++i) { + if (process_multi_extruder && (filament_options_with_variant.find(key) != filament_options_with_variant.end())) { + ConfigOptionVectorBase* other_opt_vec = static_cast<ConfigOptionVectorBase*>(other_opt); + if (other_opt_vec->size() != extruder_variant_count) { + other_opt_vec->resize(extruder_variant_count); + } + size_t next_index = (i < (configs.size() - 1)) ? filament_variant_index[i + 1] : extruder_variant_count; + static_cast<ConfigOptionVectorBase*>(configs[i].option(key, false))->set(other_opt, filament_variant_index[i], next_index - filament_variant_index[i]); + } + else + static_cast<ConfigOptionVectorBase*>(configs[i].option(key, false))->set_at(other_opt, 0, i); + } + } + } + // Load the configs into this->filaments and make them active. + this->filament_presets = std::vector<std::string>(configs.size()); + // To avoid incorrect selection of the first filament preset (means a value of Preset->m_idx_selected) + // in a case when next added preset take a place of previosly selected preset, + // we should add presets from last to first + bool any_modified = false; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load multiple filament preset from filament_settings_id"); + for (int i = (int)configs.size()-1; i >= 0; i--) { + DynamicPrintConfig &cfg = configs[i]; + // Split the "compatible_printers_condition" and "inherits" from the cummulative vectors to separate filament presets. + cfg.opt_string("compatible_printers_condition", true) = compatible_printers_condition_values[i + 1]; + cfg.opt_string("compatible_prints_condition", true) = compatible_prints_condition_values[i]; + cfg.opt_string("inherits", true) = inherits_values[i + 1]; - // Load all filament presets, but only select the first one in the preset dialog. - std::string& filament_inherit = cfg.opt_string("inherits", true); - if (filament_inherit.empty() && (i < int(old_filament_profile_names->values.size()))) - convert_filament_preset_name(old_machine_profile_name->value, old_filament_profile_names->values[i]); - else - convert_filament_preset_name(old_machine_profile_name->value, filament_inherit); - auto [loaded, modified] = this->filaments.load_external_preset(name_or_path, name, - (i < int(old_filament_profile_names->values.size())) ? old_filament_profile_names->values[i] : "", - std::move(cfg), - filament_different_keys_set, - i == 0 ? - PresetCollection::LoadAndSelect::Always : - any_modified ? - PresetCollection::LoadAndSelect::Never : - PresetCollection::LoadAndSelect::OnlyIfModified, - file_version, - filament_id); - any_modified |= modified; - this->filament_presets[i] = loaded->name; + //BBS: add different settings logic + std::vector<std::string> filament_different_keys_vector; + std::string filament_different_settings = different_values[i+1]; + Slic3r::unescape_strings_cstyle(filament_different_settings, filament_different_keys_vector); + std::set<std::string> filament_different_keys_set(filament_different_keys_vector.begin(), filament_different_keys_vector.end()); + //if (!has_different_settings_to_system) { + // filament_different_keys_set.clear(); + //} + //else + filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + + std::string filament_id = filament_ids[i]; + + // Load all filament presets, but only select the first one in the preset dialog. + std::string& filament_inherit = cfg.opt_string("inherits", true); + if (filament_inherit.empty() && (i < int(old_filament_profile_names->values.size()))) + convert_filament_preset_name(old_machine_profile_name->value, old_filament_profile_names->values[i]); + else + convert_filament_preset_name(old_machine_profile_name->value, filament_inherit); + auto [loaded, modified] = this->filaments.load_external_preset(name_or_path, name, + (i < int(old_filament_profile_names->values.size())) ? old_filament_profile_names->values[i] : "", + std::move(cfg), + filament_different_keys_set, + i == 0 ? + PresetCollection::LoadAndSelect::Always : + any_modified ? + PresetCollection::LoadAndSelect::Never : + PresetCollection::LoadAndSelect::OnlyIfModified, + file_version, + filament_id); + any_modified |= modified; + this->filament_presets[i] = loaded->name; + } } - } + } // !is_published - // 4) Load the project config values (the per extruder wipe matrix etc). - this->project_config.apply_only(config, s_project_options); + // Load the project config values. In published mode only the plate/bed geometry keys + // cross over (the receiver must not inherit the author's filament/purge data). + this->project_config.apply_only(config, is_published ? s_project_options_published : s_project_options); break; } @@ -5018,18 +5440,1143 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool this->update_compatible(PresetSelectCompatibleType::Never); this->update_multi_material_filament_presets(); + // A "published" 3MF project overlays the author-selected published keys onto the user's + // currently-selected (edited) process preset. Keys that cannot be applied are collected for + // notification; filament-class keys in published_keys (which only the material pass knows + // how to apply) fall through into skipped_keys. + if (is_published) { + std::vector<std::string> skipped_keys; + std::set<std::string> applied_keys; + // Only re-select the edited filament preset when the material overlay changed + // something: re-selecting unconditionally would discard the user's unsaved in-memory + // filament edits when the published file touches nothing. + bool material_applied = false; + // Structural keys are never applied (they would rewrite the user's preset + // inheritance/structure). Defense-in-depth: a hand-crafted 3MF could list them despite + // the dialog, so skip them here too. + const std::set<std::string>& structural_keys = publish_structural_keys(); + // The printer overlay is restricted to the publishable retraction/z-hop allowlist; + // printer-class keys outside it are contract-excluded (never applied, never reported). + const std::set<std::string>& printer_allowlist = publishable_printer_keys(); + const std::vector<std::string>& printer_options = Preset::printer_options(); + const std::set<std::string> printer_option_set(printer_options.begin(), printer_options.end()); + std::set<std::string> contract_excluded_keys; + auto apply_published = [&](DynamicPrintConfig& target, const std::set<std::string>* allowlist) { + // Single-extruder receivers collapse a base key's per-extruder "#N" variants onto + // their single slot: only the first serialized variant of a base key is applied + // (the author's "left or right" whichever came first), the rest are reported as + // skipped. Per-target, so the process and printer passes each track their own bases. + std::set<std::string> collapsed_bases; + for (const std::string& key : published_config->published_keys) { + if (applied_keys.count(key) != 0) + continue; // already applied + // A '#' suffix denotes a variant key; resolve the base key. + const std::string base_key = publish_base_key(key); + // Structural keys are never applied (not "skipped due to mismatch"), so bail + // out before the applied/skipped bookkeeping. + if (structural_keys.count(base_key) != 0) + continue; + if (allowlist != nullptr && printer_option_set.count(base_key) != 0 && allowlist->count(base_key) == 0) { + // Printer-class key outside the publishable allowlist: contract-excluded. + contract_excluded_keys.insert(base_key); + continue; + } + const ConfigOption* src_opt = config.option(base_key); + if (src_opt == nullptr) + continue; // key not present in the loaded config; record later + if (src_opt->is_vector()) { + ConfigOption* dst_opt = target.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector()) + continue; // cannot apply; will be reported as skipped + // Type mismatch: ConfigOptionVector::set() throws ConfigurationError on a + // mismatch, which would abort the whole project load; report the key as + // skipped instead (the material pass guards the same way). Note that the + // nullable variants report the same type() as their non-nullable base, so + // this catches genuinely different option kinds (e.g. a string where a float + // vector is expected), not nullable-ness. + if (dst_opt->type() != src_opt->type()) + continue; + // A '#N' variant key (e.g. per-extruder retraction_length#2) applies one + // element, so the index only needs to be in range on the author's side - the + // receiver may have a different extruder count than the author. Out-of-range + // indices are skipped (set_at would otherwise resize the receiver's vector). + if (key.size() > base_key.size()) { + // Strict numeric suffix parse: a malformed variant ("#abc", "#1x") + // must be reported as skipped, not silently applied as element 0. + const std::string suffix = key.substr(base_key.size() + 1); + size_t idx = 0; + bool valid = !suffix.empty(); + for (const char c : suffix) { + if (c < '0' || c > '9') { + valid = false; + break; + } + idx = idx * 10 + size_t(c - '0'); + if (idx > 1000000) { // overflow guard; real vector sizes are tiny + valid = false; + break; + } + } + const size_t src_size = static_cast<const ConfigOptionVectorBase*>(src_opt)->size(); + if (!valid || idx >= src_size) + continue; // malformed or out-of-range on the author's side: cannot apply; reported as skipped + const size_t dst_size = static_cast<const ConfigOptionVectorBase*>(dst_opt)->size(); + if (dst_size == 1) { + // Single-extruder receiver: collapse the author's per-extruder slots + // onto the receiver's single slot. Only the first serialized variant + // of a base key is applied (the author's "left or right" whichever was + // published first); later variants of the same base are reported as + // skipped, mirroring the receiver's single extruder. + if (collapsed_bases.count(base_key) != 0) + continue; + collapsed_bases.insert(base_key); + static_cast<ConfigOptionVectorBase*>(dst_opt)->set_at(src_opt, 0, idx); + } else { + if (idx >= dst_size) + continue; // out-of-range variant: cannot apply; reported as skipped + target.apply_only(config, {key}, true); + } + } else if (static_cast<const ConfigOptionVectorBase*>(src_opt)->size() != + static_cast<const ConfigOptionVectorBase*>(dst_opt)->size()) { + // Whole-vector base key: the receiver must have a matching vector size, + // otherwise applying would overwrite a different number of elements. + continue; // cannot apply; will be reported as skipped + } else { + target.apply_only(config, {key}, true); + } + applied_keys.insert(key); + } else { + // A scalar key cannot carry a '#N' suffix; a hand-crafted file listing one + // is reported as skipped instead of being silently marked applied. + if (key.find('#') != std::string::npos) + continue; + // Scalar key: apply only if present on the user's machine. + const ConfigOption* dst_opt = target.option(base_key); + if (dst_opt == nullptr) + continue; // not present on the edited preset; will be reported as skipped + // Type mismatch: skipped, never thrown (see the vector branch above). + if (dst_opt->type() != src_opt->type()) + continue; + target.apply_only(config, {key}, true); + applied_keys.insert(key); + } + } + }; + apply_published(this->prints.get_edited_preset().config, nullptr); + apply_published(this->printers.get_edited_preset().config, &printer_allowlist); + + // Material pass: positional per-slot entries. The author published, per slot, either the + // entire filament (full) or specific keys plus optionally a curated type and/or colour. + // - full: lands on a freshly created standalone detached copy (no library preset used + // or mutated); + // - partial: a type requirement gates application; on mismatch the slot is replaced + // with the best visible candidate by published identity (exact name, setting_id, + // filament_id, vendor+type, type); with no replacement the receiver's material is + // kept and the keys are reported as skipped; + // - colour: applied regardless of the type gate. + // - capacity: past the printer's physical nozzles the entry becomes an empty + // mixed-filament placeholder; on a single-physical-slot receiver it is dropped. + // Applied partial values land on the collection's edited layer when the slot references + // it and that layer survives the load, otherwise on the stored preset in place. Slots + // aliasing a shared preset are re-pointed at distinct presets before the values apply. + { + // Grow the receiver's slots only as far as the highest published slot (never + // shrink, never pull filler materials for unpublished slots). + bool has_published_entries = false; + // Physical filament capacity of the receiver's printer: a non-SEMM tool-changer + // feeds filament N from nozzle N, so the nozzle count is the hard limit; a SEMM + // printer (single_extruder_multi_material) sizes its slot list by hand, so only + // the global slot limit applies (same condition as GUI_App::load_current_presets). + // Published entries that would need a NEW physical slot past this capacity are + // appended as empty mixed-filament placeholders instead of growing the list. + size_t physical_capacity = size_t(EnforcerBlockerType::ExtruderMax); + { + const Preset& receiver_printer = this->printers.get_edited_preset(); + if (receiver_printer.printer_technology() == ptFFF && + !receiver_printer.config.opt_bool("single_extruder_multi_material")) { + if (const auto* nozzle_diameter = receiver_printer.config.option<ConfigOptionFloats>("nozzle_diameter"); + nozzle_diameter != nullptr && !nozzle_diameter->values.empty()) + physical_capacity = nozzle_diameter->values.size(); + } + } + const std::set<std::string>& mixed_definitions = publish_mixed_keys(); + auto is_mixed_definition = [&mixed_definitions](const PublishedMaterialEntry& entry) { + return std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { + return mixed_definitions.count(publish_base_key(key)) != 0; + }); + }; + size_t grow_target = 0; + for (const PublishedMaterialEntry& entry : published_config->material_keys) { + has_published_entries = true; + if (entry.slot < 0) + continue; + // A physical entry past the capacity becomes a tail placeholder below; its + // growth is covered by the append counter, not the positional target. + if (!is_mixed_definition(entry) && size_t(entry.slot) >= physical_capacity) + continue; + grow_target = std::max(grow_target, size_t(entry.slot) + 1); + } + // Mixed-filament definitions live in project-level virtual slots, so applying one + // positionally onto a receiver slot holding a real filament would convert hardware + // state into a virtual mix. Compute each entry's destination before anything + // consumes entry.slot: a definition on a slot that already holds a mixed definition + // keeps its place (like-for-like); everything else follows one monotone append + // counter preserving author order (dest = max(authored, next_free)). Appends past + // the extruder limit are dropped and reported. Physical entries past capacity join + // the same counter as mixed_placeholder empties the GUI flags for assignment. + // + // The finished project keeps the physical-first invariant (see the sidebar's + // add_custom_filament: mixed slots always sit at the tail, physical slots packed + // first). That invariant must survive an import, so every receiver mixed slot that + // would end up inside (or ahead of) the incoming physical region is displaced to a + // fresh tail slot, and the tail allocator starts at the physical boundary rather + // than the receiver's slot count - otherwise a relocated mix can collide with a + // keep-placed new real slot. + size_t physical_boundary = this->num_physical_filaments(); + for (const PublishedMaterialEntry& entry : published_config->material_keys) + // Mirror the payload-real keep-place decision below: a real keeps its authored + // slot when that slot already exists on the receiver, or lies within the + // printer's physical capacity. Both end up as physical slots at index + // entry.slot, so they bound the physical region even past the capacity. + if (entry.slot >= 0 && !is_mixed_definition(entry) && + (size_t(entry.slot) < this->filament_presets.size() || size_t(entry.slot) < physical_capacity)) + physical_boundary = std::max(physical_boundary, size_t(entry.slot) + 1); + size_t next_free_slot = std::max(physical_boundary, this->filament_presets.size()); + bool any_mixed_relocated = false; + // All authored-slot -> destination moves decided by this pass, applied to the + // incoming config in one batched snapshot step below (an earlier move's + // destination can overlap a later move's source: adjacent tail mixes relocate + // onto consecutive slots, so incremental in-place shifts would overwrite a + // definition that has not been moved yet). + std::vector<std::pair<size_t, size_t>> mixed_moves; + // Receiver-mix relocations land in project_config, not the incoming config, so they + // get their own move list, applied below after the arrays grow. The swept set lets + // the payload loop below treat a displaced receiver mix as the physical slot it will + // become (a payload mix like-for-like overriding such a slot must itself relocate). + std::vector<std::pair<size_t, size_t>> receiver_mix_moves; + std::set<size_t> swept_mix_slots; + for (size_t slot = 0; slot < this->filament_presets.size(); ++slot) { + if (!this->is_mixed_filament(slot)) + continue; + // Slot 0 is the receiver's base filament and is never a virtual mix; the + // sidebar's physical-first layout guarantees it, so never displace it. + if (slot == 0) + continue; + if (slot >= physical_boundary) + continue; // already lives in the tail region + const size_t dest = next_free_slot++; + swept_mix_slots.insert(slot); + receiver_mix_moves.emplace_back(slot, dest); + any_mixed_relocated = true; + // A payload mix authored at the same slot (a mix inside the physical region) is + // processed after this sweep and overrides its own destination below. + published_config->mixed_slot_relocations.insert_or_assign(int(slot), int(dest)); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + " -> slot " + + std::to_string(dest) + ": mixed filament"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated receiver mixed filament slot " << slot + << " -> " << dest << " (physical-first rebalance)"; + } + for (auto entry_it = published_config->material_keys.begin(); entry_it != published_config->material_keys.end();) { + PublishedMaterialEntry& entry = *entry_it; + if (entry.slot < 0) { + ++entry_it; + continue; + } + const bool is_payload_mix = is_mixed_definition(entry); + // Does this entry need a tail slot at all? A payload mixed definition does, + // except when it like-for-like overrides a receiver slot that is already a + // mix (bounds-checked). A physical entry only becomes a placeholder when it + // would need a NEW physical slot: an authored position the receiver's list + // already covers is applied positionally as before, even when that list sits + // above the printer's capacity (pre-existing state is never shrunk). + bool keep_place = false; + if (is_payload_mix) + keep_place = this->is_mixed_filament(size_t(entry.slot)) && swept_mix_slots.count(size_t(entry.slot)) == 0; + else + keep_place = size_t(entry.slot) < this->filament_presets.size() || + size_t(entry.slot) < physical_capacity; + if (keep_place) { + ++entry_it; + continue; + } + const std::string material_label = !entry.filament_id.empty() ? entry.filament_id : + !entry.publish_type_value.empty() ? entry.publish_type_value : + entry.filament_type; + if (std::max(size_t(entry.slot), next_free_slot) >= size_t(EnforcerBlockerType::ExtruderMax)) { + // No free virtual slot left: report instead of destroying a real filament. + // The local skipped_keys is published wholesale at the end of the pass; + // writing published_config->skipped_keys here would be clobbered by it. + skipped_keys.emplace_back("material:" + material_label + (is_payload_mix ? + " (mixed filament definition: filament slot limit reached)" : + " (filament slot limit reached)")); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF " << (is_payload_mix ? "mixed filament definition" : "material") + << " from slot " << entry.slot << " could not be placed: all " << next_free_slot + << " slots exhausted"; + entry_it = published_config->material_keys.erase(entry_it); + continue; + } + if (!is_payload_mix && physical_capacity < 2) { + // A single physical slot can never host a mixed-filament editor (the + // sidebar's mixed section needs two physical filaments to mix), so a + // placeholder would be invisible and unfixable: drop the entry and + // report it like any other unappliable input. + skipped_keys.emplace_back("material:" + material_label + " (printer supports only " + + std::to_string(physical_capacity) + " filament)"); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF material from slot " << entry.slot + << " dropped: printer supports only " << physical_capacity << " filament"; + entry_it = published_config->material_keys.erase(entry_it); + continue; + } + const int authored_slot = entry.slot; + const int dest_slot = is_payload_mix ? int(std::max(size_t(authored_slot), next_free_slot)) : int(next_free_slot); + next_free_slot = size_t(dest_slot) + 1; + if (is_payload_mix) { + if (dest_slot == authored_slot) + // Uncontended fresh tail slot: the definition is already readable there. + ++entry_it; + else { + entry.slot = dest_slot; + any_mixed_relocated = true; + mixed_moves.emplace_back(size_t(authored_slot), size_t(entry.slot)); + published_config->mixed_slot_relocations.insert_or_assign(authored_slot, entry.slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(authored_slot) + " -> slot " + + std::to_string(entry.slot) + ": mixed filament"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated mixed filament slot " << authored_slot + << " -> " << entry.slot; + ++entry_it; + } + } else { + // Surplus published material beyond the printer's capacity: become an + // empty mixed-filament placeholder at the next free tail slot. The flag + // routes the entry to the placeholder finalize below; the slot's + // definition stays empty until the user assigns components. + entry.mixed_placeholder = true; + any_mixed_relocated = true; + if (dest_slot != authored_slot) { + entry.slot = dest_slot; + mixed_moves.emplace_back(size_t(authored_slot), size_t(dest_slot)); + published_config->mixed_slot_relocations.insert_or_assign(authored_slot, dest_slot); + } + published_config->material_replacements.emplace_back( + (dest_slot != authored_slot ? + "slot " + std::to_string(authored_slot) + " -> slot " + std::to_string(dest_slot) : + "slot " + std::to_string(dest_slot)) + + ": unassigned mixed filament (printer supports only " + std::to_string(physical_capacity) + " filaments)"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF material from slot " << authored_slot + << " placed as an unassigned mixed filament at slot " << dest_slot + << " (printer supports only " << physical_capacity << " filaments)"; + ++entry_it; + } + } + if (!mixed_moves.empty()) + for (const std::string& mixed_key : mixed_definitions) + apply_mixed_config_relocations(config, mixed_key, mixed_moves); + if (has_published_entries) { + // Defensive cap: growth never exceeds the file's own filament count. The + // receiver's current slot count is a floor: neither the preset list nor the + // project vectors are ever shrunk, even when the file carries fewer filaments + // than the receiver has slots. Relocated mixed entries and capacity + // placeholders legitimately land past the file's own slot count (virtual + // slots consume no nozzle or tray), so their append destinations lift the + // ceiling explicitly. + const size_t target_slots = std::max({this->filament_presets.size(), std::min(grow_target, num_filaments), + any_mixed_relocated ? next_free_slot : size_t(0)}); + // Slots carrying published content, steering the initial preset selection of + // newly grown slots. + std::set<int> published_slots; + for (const PublishedMaterialEntry& entry : published_config->material_keys) + if (entry.slot >= 0) + published_slots.insert(entry.slot); + // Grown slots the receiver creates that carry no published content of their own + // (e.g. an unpublished mixed slot left as a gap by a published mix's authored + // position) at or beyond the receiver's physical capacity. They must not become + // physical filaments (that would overflow the nozzle count): finalized as empty + // mixed placeholders below, like the surplus-material placeholders. + std::set<int> virtual_gap_slots; + // Exact-name resolution of each published slot's preset through the collection's + // own name machinery: find_preset2 follows renamed_from (vendor profile renames) + // and canonical bundle names, and auto-matches removed vendor-generic profiles + // to the Orca Filament Library. First entry per slot wins (mirrors the loops' + // break-on-first behavior); an empty value means "no resolution" and the string + // tiers (raw name / trimmed bare name / alias) below take over. + std::map<int, std::string> exact_name_by_slot; + for (const PublishedMaterialEntry& entry : published_config->material_keys) + if (entry.slot >= 0 && !entry.preset_name.empty() && exact_name_by_slot.count(entry.slot) == 0) + if (const Preset* resolved = this->filaments.find_preset2(entry.preset_name, true)) + exact_name_by_slot.emplace(entry.slot, resolved->name); + auto resolved_name_for = [&exact_name_by_slot](int slot) -> std::string { + const auto it = exact_name_by_slot.find(slot); + return it == exact_name_by_slot.end() ? std::string() : it->second; + }; + // Mirror first_visible_idx()'s start index so suppressed default presets are + // never picked as a slot material. + const size_t first_candidate = this->filaments.is_default_suppressed() ? this->filaments.num_default_presets() : 0; + // Candidate preference for a published entry: exact preset name (raw author and + // collection-resolved), then trimmed bare form / alias, then exact setting_id + // (variant-level), then exact filament_id, then vendor+type, then type only. + auto candidate_score = [](const Preset& candidate, const PublishedMaterialEntry& entry, + const std::string& resolved_name) -> int { + // Exact preset name: raw and collection-resolved forms both outrank the + // fuzzy bare/alias tier by tier value, so a receiver preset literally named + // "Generic PLA" (tier 4) can never beat the author's exact + // "Generic PLA @Vendor" (tier 5). Within one tier the strict ">" + // comparison keeps the first candidate in collection order. + if (!entry.preset_name.empty() && candidate.name == entry.preset_name) + return 5; + if (!resolved_name.empty() && candidate.name == resolved_name) + return 5; + if (!entry.preset_name.empty()) { + std::string bare_name = entry.preset_name.substr(0, entry.preset_name.find('@')); + boost::trim_right(bare_name); + if (!bare_name.empty() && + (candidate.alias == entry.preset_name || candidate.name == bare_name || candidate.alias == bare_name)) + return 4; + } + if (!entry.setting_id.empty() && candidate.setting_id == entry.setting_id) + return 3; + const ConfigOptionStrings* types = candidate.config.opt<ConfigOptionStrings>("filament_type"); + const ConfigOptionStrings* vendors = candidate.config.opt<ConfigOptionStrings>("filament_vendor"); + const std::string type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : std::string(); + const std::string vendor = (vendors != nullptr && !vendors->values.empty()) ? vendors->get_at(0) : std::string(); + if (!entry.filament_id.empty() && candidate.filament_id == entry.filament_id) + return 2; + // Tier 0/1 family gate: the explicit type requirement when published as + // such, otherwise the entry's own material family - so identity scoring + // also applies to entries published without a checked Type row. + const std::string required_type = !entry.publish_type_value.empty() ? entry.publish_type_value : + normalize_filament_type(entry.filament_type); + if (!required_type.empty() && normalize_filament_type(type) == required_type) { + if (!entry.filament_vendor.empty() && vendor == entry.filament_vendor) + return 1; + return 0; + } + return -1; + }; + while (this->filament_presets.size() < target_slots) { + const size_t new_slot_idx = this->filament_presets.size(); + std::string initial_preset; + if (new_slot_idx >= physical_capacity && published_slots.count(static_cast<int>(new_slot_idx)) == 0) + // An unpublished grown slot past the printer's physical capacity cannot + // host a real filament: finalize it as a virtual placeholder below. + virtual_gap_slots.insert(static_cast<int>(new_slot_idx)); + if (published_slots.count(static_cast<int>(new_slot_idx)) != 0) { + // Grow the slot the way the sidebar "add filament" does: seed it with + // the receiver's last preset. + if (!this->filament_presets.empty()) + initial_preset = this->filament_presets.back(); + } + if (initial_preset.empty()) + // Unpublished filler slot, or every visible preset is already used: + // repeat the receiver's last preset ("Add one filament" behaviour). + initial_preset = this->filament_presets.empty() ? this->filaments.first_visible().name : + this->filament_presets.back(); + this->filament_presets.emplace_back(initial_preset); + } + // Published slots that alias another slot (multi-extruder with one filament) + // get re-pointed at distinct presets: the overlay writes onto the slot's + // effective preset in place, so a shared preset would leak one slot's published + // values into every aliased slot. Slot 0 (the receiver's own material) is never + // re-assigned; when no unused candidate exists the aliasing stays (unavoidable). + auto referenced_elsewhere = [&](const std::string& preset_name, size_t except_slot) { + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (s != except_slot && this->filament_presets[s] == preset_name) + return true; + return false; + }; + for (size_t slot = 1; slot < this->filament_presets.size(); ++slot) { + if (published_slots.count(static_cast<int>(slot)) == 0 || !referenced_elsewhere(this->filament_presets[slot], slot)) + continue; + // A slot whose published entry writes nothing into a shared preset in place + // keeps its own preset: de-aliasing would needlessly swap the material. Only + // keys routed to the slot's preset can leak across an aliased slot (colour is + // slot-scoped via project_config; a type requirement is handled by the + // type-gate below; full detaches separately). Mixed-definition keys go to the + // per-slot project arrays, never the preset. + bool writes_preset_keys = false; + for (const PublishedMaterialEntry& entry : published_config->material_keys) { + if (entry.slot != static_cast<int>(slot)) + continue; + for (const std::string& key : entry.keys) + if (mixed_definitions.count(publish_base_key(key)) == 0) { + writes_preset_keys = true; + break; + } + if (writes_preset_keys) + break; + } + if (!writes_preset_keys) + continue; + // Prefer the best distinct candidate for the slot's published material + // (exact id, then vendor+type, then type only), compatible presets first... + std::string replacement; + int best_score = -1; + for (const PublishedMaterialEntry& entry : published_config->material_keys) { + // Scored for every entry with an identity, not only when a Type + // requirement was checked (same as the growth seeding above). + if (entry.slot != static_cast<int>(slot)) + continue; + const std::string resolved_name = resolved_name_for(entry.slot); + auto scan = [&](bool compatible_only) -> std::pair<int, std::string> { + int best_score = -1; + std::string best_name; + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset& candidate = this->filaments.preset(i); + if (compatible_only && !candidate.is_compatible) + continue; + const int score = candidate_score(candidate, entry, resolved_name); + // Exact identity tiers (name / setting_id) may use a hidden preset; + // the referenced check stays: re-pointing exists to de-alias. + if (score < 3 && !candidate.is_visible) + continue; + if (referenced_elsewhere(candidate.name, size_t(-1))) + continue; + if (score > best_score) { + best_score = score; + best_name = candidate.name; + } + } + return {best_score, best_name}; + }; + const auto [compat_score, compat_name] = scan(true); + const auto [any_score, any_name] = scan(false); + if (compat_score >= 0) { + best_score = compat_score; + replacement = compat_name; + } else if (any_score >= 0) { + best_score = any_score; + replacement = any_name; + } + if (best_score >= 0) + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF re-pointed slot " << slot << " to " << replacement + << " (score " << best_score << ", preset_name \"" << entry.preset_name << "\", type \"" + << entry.publish_type_value << "\")"; + break; + } + // ...otherwise any distinct visible preset not referenced by another slot, + // preferring the published material's own family when it is known. + if (replacement.empty()) { + std::string slot_family; + for (const PublishedMaterialEntry& entry : published_config->material_keys) + if (entry.slot == static_cast<int>(slot)) { + slot_family = !entry.publish_type_value.empty() ? entry.publish_type_value : + normalize_filament_type(entry.filament_type); + break; + } + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset& candidate = this->filaments.preset(i); + if (!candidate.is_visible || referenced_elsewhere(candidate.name, size_t(-1))) + continue; + if (!slot_family.empty()) { + const ConfigOptionStrings* types = candidate.config.opt<ConfigOptionStrings>("filament_type"); + const std::string cand_type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : + std::string(); + if (normalize_filament_type(cand_type) != slot_family) + continue; + } + replacement = candidate.name; + break; + } + } + if (replacement.empty()) + continue; // every visible preset is referenced: aliasing is unavoidable + const std::string aliased_name = this->filament_presets[slot]; + this->filament_presets[slot] = replacement; + material_applied = true; + // The re-point used to be silent; surface it like the other slot changes. + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + ": " + aliased_name + " -> " + + replacement); + } + // Grow the per-slot colour/type/map project vectors to the new slot count and + // seed the new entries so the slots render with colours instead of blank chips + // (mirrors set_num_filaments; existing values are left untouched). + ConfigOptionStrings* proj_colour = this->project_config.opt<ConfigOptionStrings>("filament_colour"); + ConfigOptionStrings* proj_multi_colour = this->project_config.opt<ConfigOptionStrings>("filament_multi_colour"); + ConfigOptionStrings* proj_colour_type = this->project_config.opt<ConfigOptionStrings>("filament_colour_type"); + ConfigOptionInts* proj_map = this->project_config.opt<ConfigOptionInts>("filament_map"); + ConfigOptionInts* proj_nozzle_map = this->project_config.opt<ConfigOptionInts>("filament_nozzle_map"); + ConfigOptionInts* proj_volume_map = this->project_config.opt<ConfigOptionInts>("filament_volume_map"); + const size_t old_colour_count = (proj_colour != nullptr) ? proj_colour->values.size() : 0; + // Grow-only: an already-larger project vector is left untouched (the receiver's + // slot count never shrinks below its own setup). + if (proj_colour && proj_colour->values.size() < target_slots) + proj_colour->resize(target_slots); + if (proj_multi_colour && proj_multi_colour->values.size() < target_slots) + proj_multi_colour->values.resize(target_slots); + if (proj_colour_type && proj_colour_type->values.size() < target_slots) + proj_colour_type->values.resize(target_slots); + if (proj_map && proj_map->values.size() < target_slots) + proj_map->values.resize(target_slots, 1); + if (proj_nozzle_map && proj_nozzle_map->values.size() < target_slots) + proj_nozzle_map->values.resize(target_slots, 0); + if (proj_volume_map && proj_volume_map->values.size() < target_slots) + proj_volume_map->values.resize(target_slots, static_cast<int>(NozzleVolumeType::nvtStandard)); + // The mixed-color project arrays are parallel per-slot like filament_colour; + // grow them in lockstep so a published mix slot has room for its definition. + // Defaults mirror set_num_filaments (false / empty string). + if (auto* opt = this->project_config.opt<ConfigOptionBools>("filament_is_mixed")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); + if (auto* opt = this->project_config.opt<ConfigOptionStrings>("filament_mixed_components")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt<ConfigOptionBools>("filament_mixed_gradient")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); + if (auto* opt = this->project_config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); + if (this->ams_multi_color_filment.size() < target_slots) + this->ams_multi_color_filment.resize(target_slots); + for (size_t slot = old_colour_count; slot < target_slots; ++slot) { + std::string seed; + for (const PublishedMaterialEntry& entry : published_config->material_keys) + if (entry.slot == static_cast<int>(slot) && entry.publish_color && !entry.color.empty()) { + seed = entry.color; + break; + } + if (seed.empty()) { + if (const Preset* preset = this->filaments.find_preset(this->filament_presets[slot], false)) { + const ConfigOptionStrings* colours = preset->config.opt<ConfigOptionStrings>("filament_colour"); + if (colours != nullptr && !colours->values.empty()) + seed = colours->values.front(); + } + if (seed.empty()) { + // Fall back to the option's registered default instead of a + // duplicated literal; if the lookup fails the chip stays blank. + if (const ConfigOptionDef* colour_def = print_config_def.get("filament_colour")) + if (const auto* default_colours = dynamic_cast<const ConfigOptionStrings*>(colour_def->default_value.get())) + if (!default_colours->values.empty()) + seed = default_colours->values.front(); + } + } + if (proj_colour && slot < proj_colour->values.size()) + proj_colour->values[slot] = seed; + if (proj_multi_colour && slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = seed; + if (proj_colour_type && slot < proj_colour_type->values.size()) + proj_colour_type->values[slot] = "1"; // default colour type + } + // Rebuild the flush volumes for the grown slot count (as set_num_filaments does). + this->update_multi_material_filament_presets(); + + auto apply_slot_keys = [&](DynamicPrintConfig& preset_config, const std::vector<std::string>& slot_keys, int author_slot, + const std::string& material_label) { + for (const std::string& key : slot_keys) { + const std::string base_key = publish_base_key(key); + if (structural_keys.count(base_key) != 0) + continue; + const ConfigOption* src_opt = config.option(base_key); + if (src_opt == nullptr || !src_opt->is_vector() || author_slot < 0 || + author_slot >= static_cast<int>(static_cast<const ConfigOptionVectorBase*>(src_opt)->size())) { + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + ConfigOption* dst_opt = preset_config.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector() || static_cast<const ConfigOptionVectorBase*>(dst_opt)->empty() || + dst_opt->type() != src_opt->type()) { + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + // Per-slot scalar copy: the receiver preset holds one value per key + // (vector of size 1), the file holds the per-slot vector. + static_cast<ConfigOptionVectorBase*>(dst_opt)->set_at(src_opt, 0, author_slot); + material_applied = true; + } + }; + + // The slot's values are applied onto the slot's effective preset (the + // collection's edited layer when the slot references it, otherwise the stored + // preset in place); the per-entry type gate below may re-point the slot first. + // + // The edited layer only survives the load when the final re-select below stays + // off, i.e. slot 0's preset still matches the edited preset. Otherwise the + // re-select re-snapshots the edited layer from a stored preset and silently + // discards everything written there: route the overlay to the stored presets + // instead so the values survive. (Residual edge: a slot-0 type replacement + // re-pointing slot 0 mid-loop can still invalidate the layer after earlier + // slots wrote to it; that compound case is not chased.) + const bool edited_survives_load = this->filament_presets.empty() || + this->filament_presets.front() == this->filaments.get_edited_preset().name; + // Displaced receiver mixes (see the physical-first rebalance above): move their + // per-slot cells onto the grown tail slots and reset the vacated physical slots, + // so the incoming real filaments can claim them. Runs before mixed_final_slots is + // built, so the rebalanced layout is what the mix validation sees. + apply_receiver_mix_relocations(this->project_config, this->ams_multi_color_filment, receiver_mix_moves); + // Final layout for mix-definition validation: every slot that will hold a + // mixed definition once this load completes - the receiver's own virtual + // slots, each published mixed entry's final (possibly relocated) slot, and + // each capacity placeholder (they become mixes in the finalize below, before + // this loop's is_mixed_filament scan would see them). Mix components are + // 1-based slot numbers, so a component is valid only when the slot it names + // exists and does not itself hold a mixed filament. + std::set<int> mixed_final_slots; + for (const PublishedMaterialEntry& mix_entry : published_config->material_keys) + if (mix_entry.slot >= 0 && (is_mixed_definition(mix_entry) || mix_entry.mixed_placeholder)) + mixed_final_slots.insert(mix_entry.slot); + for (size_t i = 0; i < this->filament_presets.size(); ++i) + if (this->is_mixed_filament(i)) + mixed_final_slots.insert(int(i)); + // Unpublished gap slots past the capacity are virtual too: count them in the + // final layout so a published mix whose components collide with one is caught. + for (int gap_slot : virtual_gap_slots) + mixed_final_slots.insert(gap_slot); + const size_t mixed_final_slot_count = this->filament_presets.size(); + // Finalize a slot as an empty mixed-filament placeholder: mark it virtual with + // an intentionally empty definition, and add it to the final-layout set so a + // later entry's components validate against the new state. Used by the capacity + // placeholders and by any mixed definition that has to be rejected after its + // slot was already grown and seeded - without it such a slot would keep the + // seeded preset and masquerade as a real filament. No definition is written: + // the placeholder carries no material of its own (the GUI flags the empty mix + // via check_mixed_filament_integrity and blocks slicing until components are + // assigned). The slot's colour was already seeded by the growth pass above. + auto finalize_mixed_placeholder = [&](size_t slot_idx) { + if (ConfigOptionBools* is_mixed_opt = this->project_config.opt<ConfigOptionBools>("filament_is_mixed"); + is_mixed_opt != nullptr && slot_idx < is_mixed_opt->values.size()) + is_mixed_opt->values[slot_idx] = true; + mixed_final_slots.insert(int(slot_idx)); + material_applied = true; + }; + // Full Publish within-load dedup: identical Full materials (same setting_id + // + preset_name identity) share one created instance, so an author who + // pointed two slots at one preset yields one standalone copy here. + std::map<std::string, std::string> published_full_dedup; + for (const PublishedMaterialEntry& entry : published_config->material_keys) { + if (entry.slot < 0 || size_t(entry.slot) >= this->filament_presets.size()) + continue; // out of range: nothing to do for this slot + const size_t slot = size_t(entry.slot); + + // Surplus published material beyond the printer's capacity: finalize the + // tail placeholder - mark the slot virtual with an intentionally empty + // definition. The GUI flags the empty mix (check_mixed_filament_integrity) + // and blocks slicing until the user assigns components from their own + // filaments. The entry's keys are deliberately not applied and no preset + // is detached: the placeholder carries no material of its own. The colour + // was already seeded into the project arrays by the growth pass above. + if (entry.mixed_placeholder) { + finalize_mixed_placeholder(slot); + continue; + } + + // Resolve the stored preset itself (real=true), never the edited snapshot: + // find_preset would return &m_edited_preset for the selected slot. The + // overlay target below decides between the edited layer and this preset. + Preset* recv = this->filaments.find_preset(this->filament_presets[slot], false, true); + if (recv == nullptr) { + // Defensive: the slot exists (grown and seeded above) but its preset + // could not be resolved. A mixed definition left unapplied on such a + // slot would keep the seeded preset and look like a real filament: + // finalize it as an empty placeholder instead, like a rejected + // definition below. + if (is_mixed_definition(entry) && !this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported"); + } + continue; + } + + const std::string material_label = entry.filament_id.empty() ? + (entry.publish_type_value.empty() ? entry.filament_type : + entry.publish_type_value) : + entry.filament_id; + + // Import-side validation of a mixed-filament definition: the publish + // dialog cannot produce a definition whose components reference slots + // that do not exist or hold other mixed filaments, so a broken one here + // means the payload itself is broken (hand-crafted or corrupt file). + // Report it through the same channel as every other rejected input and + // skip the entry, instead of shipping a mix the GUI integrity check + // (check_mixed_filament_integrity) would only flag later. A payload + // that omits the mixed arrays entirely is not an error here: the key + // routing below reports those per key as usual. + if (is_mixed_definition(entry)) { + std::string mix_error; + if (const ConfigOptionStrings* comp_opt = config.opt<ConfigOptionStrings>("filament_mixed_components"); + comp_opt != nullptr && entry.slot < static_cast<int>(comp_opt->values.size())) { + const std::vector<unsigned int> comps = parse_mixed_components(comp_opt->values[entry.slot]); + if (comps.size() < 2) + // An empty definition cell counts as broken too: applying it + // would ship a mix the sidebar would only flag later. + mix_error = "needs at least two components"; + else + for (unsigned int comp : comps) + if (comp < 1 || size_t(comp) > mixed_final_slot_count || + mixed_final_slots.count(int(comp) - 1) != 0) { + mix_error = "components reference missing slots"; + break; + } + } + if (!mix_error.empty()) { + skipped_keys.emplace_back("material:" + material_label + " (mixed filament definition: " + mix_error + ")"); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot + << " rejected: " << mix_error; + // Degradation, not silent corruption: the slot was already grown and + // seeded by the pass above, so skipping the definition alone would + // leave it holding the seeded preset and looking like a real + // filament that carries the mix identity but no mix. + // - a slot that was NOT already a receiver mix is finalized as an + // empty mixed placeholder (consistent with the capacity + // placeholders; the user assigns components there); + // - a like-for-like override of the receiver's own mix leaves that + // valid definition untouched: nothing was applied, so the + // receiver's cells are intact and only the author's definition + // is reported as skipped above. + if (!this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported (" + + mix_error + ")"); + } + continue; + } + } + + // Full Publish: always create a standalone detached copy (even on exact + // identity match) as a "Preset Inside Project" (project-embedded: lives + // in this project only, never written to the library), universally + // compatible, named after the author's preset with its variant tail + // stripped ("(Published)" uniquification on collision). No existing + // preset is ever mutated. + if (entry.full) { + std::string dedup_key = entry.setting_id + std::string("\x1f") + entry.preset_name; + // Identity-less hand-crafted files (empty setting_id+name) must not + // collide: fall back to slot-scoped key so each slot gets its own copy + // unless the dedup above is meaningful. + if (dedup_key == std::string("\x1f")) + dedup_key = dedup_key + std::to_string(slot); + else if (!entry.filament_id.empty()) + dedup_key += std::string("\x1f") + entry.filament_id; + std::string new_name; + const auto dedup_it = published_full_dedup.find(dedup_key); + if (dedup_it != published_full_dedup.end()) { + new_name = dedup_it->second; + } else { + // Baseline: clone the receiver slot's stored preset config (schema- + // complete across versions), then overlay the published full_keys. + DynamicPrintConfig new_cfg = recv != nullptr ? recv->config : this->filaments.default_preset().config; + for (const std::string& key : entry.full_keys) { + const std::string base_key = publish_base_key(key); + if (structural_keys.count(base_key) != 0) + continue; + const ConfigOption* src_opt = config.option(base_key); + if (src_opt == nullptr || !src_opt->is_vector() || entry.slot < 0 || + entry.slot >= static_cast<int>(static_cast<const ConfigOptionVectorBase*>(src_opt)->size())) + continue; + ConfigOption* dst_opt = new_cfg.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector() || + static_cast<const ConfigOptionVectorBase*>(dst_opt)->empty() || dst_opt->type() != src_opt->type()) + continue; + static_cast<ConfigOptionVectorBase*>(dst_opt)->set_at(src_opt, 0, entry.slot); + } + // The published colour is authoritative even for Full (the payload's + // filament_colour plus the explicit publish_color field). + if (entry.publish_color && !entry.color.empty()) { + if (ConfigOptionStrings* col = new_cfg.opt<ConfigOptionStrings>("filament_colour", true)) { + if (col->values.empty()) + col->values.emplace_back(); + col->values[0] = entry.color; + } + } + make_publish_universal(new_cfg); + // Naming: stripped variant tail ("Generic PLA @System" -> "Generic + // PLA"), then identity fallbacks; collisions uniquify with + // "(Published)" / "(Published N)" inside add_detached_preset. + std::string base_name = entry.preset_name.empty() ? std::string() : + publish_material_base_name(entry.preset_name); + if (base_name.empty()) { + base_name = !entry.filament_id.empty() ? + entry.filament_id : + (!entry.publish_type_value.empty() ? entry.publish_type_value : entry.filament_type); + if (base_name.empty()) + base_name = "Published Filament"; + } + new_name = this->filaments.add_detached_preset(base_name, std::move(new_cfg), entry.filament_id); + published_full_dedup.emplace(dedup_key, new_name); + } + const std::string old_name = this->filament_presets[slot]; + this->filament_presets[slot] = new_name; + material_applied = true; + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + ": " + old_name + " -> " + + new_name); + // Colour is slot-scoped and project-visible: sync into project_config + // (the copy already baked it, this makes the chips render). + if (entry.publish_color && !entry.color.empty()) { + if (ConfigOptionStrings* proj_colour = this->project_config.opt<ConfigOptionStrings>("filament_colour")) { + if (slot < proj_colour->values.size()) + proj_colour->values[slot] = entry.color; + } + if (ConfigOptionStrings* proj_multi_colour = this->project_config.opt<ConfigOptionStrings>( + "filament_multi_colour")) { + if (slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = entry.color; + } + } else if (proj_colour && new_name != old_name) { + // Fall back to the copy's colour so the chip is never blank: try + // the newly created preset's filament_colour, then the option default. + std::string seed; + if (const Preset* created = this->filaments.find_preset(new_name, false, true)) { + if (const ConfigOptionStrings* cols = created->config.opt<ConfigOptionStrings>("filament_colour")) + if (!cols->values.empty()) + seed = cols->values.front(); + } + if (seed.empty()) { + if (const ConfigOptionDef* colour_def = print_config_def.get("filament_colour")) + if (const auto* defaults = dynamic_cast<const ConfigOptionStrings*>(colour_def->default_value.get())) + if (!defaults->values.empty()) + seed = defaults->values.front(); + } + if (!seed.empty()) { + if (proj_colour && slot < proj_colour->values.size()) + proj_colour->values[slot] = seed; + if (proj_multi_colour && slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = seed; + } + } + if (proj_colour_type && slot < proj_colour_type->values.size()) + proj_colour_type->values[slot] = "1"; + continue; + } + + bool apply_slot = true; + // The gate compares against the slot's effective material type: the edited + // layer when the slot references the collection's edited preset and that + // layer will survive the load (see edited_survives_load below), the stored + // preset otherwise. + const DynamicPrintConfig& effective_config = (edited_survives_load && + recv->name == this->filaments.get_edited_preset().name) ? + this->filaments.get_edited_preset().config : + recv->config; + if (entry.publish_type && !entry.publish_type_value.empty()) { + // Null-guard: a malformed receiver preset may lack filament_type. + const ConfigOptionStrings* recv_types = effective_config.opt<ConfigOptionStrings>("filament_type"); + const std::string recv_type = (recv_types != nullptr && !recv_types->values.empty()) ? recv_types->get_at(0) : + std::string(); + if (normalize_filament_type(recv_type) != entry.publish_type_value) { + // Type mismatch: replace the slot with the best matching preset, + // scored by the published identity (exact preset name, then exact + // setting_id, exact filament_id, then vendor+type, then type only). + // A preset no other slot references wins on equal scores; a shared + // exact-material preset is taken even though mutating it also + // affects the other slot. Compatible presets are searched first: an + // incompatible preset is only picked when no compatible candidate + // exists at all. + auto find_best = [&](bool compatible_only) -> std::pair<int, std::string> { + auto scan = [&](bool unreferenced_only) -> std::pair<int, std::string> { + int best_score = -1; + std::string best_name; + const std::string resolved_name = resolved_name_for(entry.slot); + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset& candidate = this->filaments.preset(i); + if (compatible_only && !candidate.is_compatible) + continue; + const int score = candidate_score(candidate, entry, resolved_name); + if (score <= best_score) + continue; + // Lower tiers (vendor+type, type only) need a visible preset; + // an exact identity match (name / setting_id) wins even when + // the preset is hidden in the library. + if (score < 3 && !candidate.is_visible) + continue; + if (unreferenced_only) { + bool used = false; + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (s != slot && this->filament_presets[s] == candidate.name) { + used = true; + break; + } + if (used) + continue; + } + best_score = score; + best_name = candidate.name; + } + return {best_score, best_name}; + }; + const auto [strict_score, strict_name] = scan(true); + const auto [relaxed_score, relaxed_name] = scan(false); + if (relaxed_score > strict_score) + return {relaxed_score, relaxed_name}; + return {strict_score, strict_name}; + }; + const auto [compat_score, compat_name] = find_best(true); + const auto [any_score, any_name] = find_best(false); + int score = any_score; + std::string replacement = any_name; + if (compat_score >= 0) { + score = compat_score; + replacement = compat_name; + } + if (!replacement.empty()) { + const std::string old_name = recv->name; + this->filament_presets[slot] = replacement; + recv = this->filaments.find_preset(replacement, false, true); + material_applied = true; + BOOST_LOG_TRIVIAL(info) + << __FUNCTION__ << ": published 3MF slot " << slot << " material " << old_name << " -> " << replacement + << " (score " << score << ", preset_name \"" << entry.preset_name << "\", filament_id \"" + << entry.filament_id << "\", setting_id \"" << entry.setting_id << "\", type \"" + << entry.publish_type_value << "\")"; + std::string replacement_line = "slot " + std::to_string(slot) + ": " + old_name + " -> " + replacement; + // A pick that is not the exact published material is a substitute; + // an entry without identity fields cannot be judged, so it stays plain. + if (score < 2 && (!entry.filament_id.empty() || !entry.filament_vendor.empty())) + replacement_line += " (substitute)"; + published_config->material_replacements.emplace_back(std::move(replacement_line)); + } else { + // Partial publish with no replacement: keep the receiver's + // material and report the slot's keys as skipped. (Full entries + // never reach this gate: they detach above.) + for (const std::string& key : entry.keys) + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + apply_slot = false; + // A mixed definition left unapplied here would keep the grown + // slot's seeded preset and masquerade as a real filament: + // finalize it as an empty placeholder like a rejected + // definition (a like-for-like override of the receiver's own + // mix is left untouched). + if (is_mixed_definition(entry) && !this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported"); + } + } + } + } + + // The values below are applied onto the slot's effective preset: the edited + // layer when the slot references the collection's edited preset and that + // layer will survive the load (visible as a modification and revertible, + // preserving the user's unsaved edits), otherwise the stored preset it ended + // up on (original or partial type replacement), in place. Full entries never + // get here - they detach above. + DynamicPrintConfig& write_config = (edited_survives_load && recv->name == this->filaments.get_edited_preset().name) ? + this->filaments.get_edited_preset().config : + recv->config; + + // Colour is slot-scoped and independent of the type gate; it is also synced + // into project_config for GUI rendering. + if (entry.publish_color && !entry.color.empty()) { + // A mixed-definition entry carries the mix's blended colour for the + // swatch only: never write it into the slot's (possibly shared) preset + // config, only into the project-level colour arrays. + const bool is_mixed_entry = is_mixed_definition(entry); + if (!is_mixed_entry && recv != nullptr) { + // Create the key when the target preset lacks it: the colour is a + // requirement, not an override. + if (ConfigOptionStrings* colour = write_config.opt<ConfigOptionStrings>("filament_colour", true)) { + if (colour->values.empty()) + colour->values.emplace_back(); + colour->values[0] = entry.color; + material_applied = true; + } + } + if (ConfigOptionStrings* proj_colour = this->project_config.opt<ConfigOptionStrings>("filament_colour")) { + if (slot < proj_colour->values.size()) + proj_colour->values[slot] = entry.color; + } + if (ConfigOptionStrings* proj_multi_colour = this->project_config.opt<ConfigOptionStrings>( + "filament_multi_colour")) { + if (slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = entry.color; + } + } + + if (apply_slot && recv != nullptr) { + // Mixed-color definition keys live in project_config (parallel per-slot + // arrays), not in a filament preset; route them there. Normal keys keep + // the per-slot preset path below. + const std::set<std::string>& mixed_keys = publish_mixed_keys(); + std::vector<std::string> preset_keys; + for (const std::string& key : entry.keys) { + const std::string base_key = publish_base_key(key); + if (mixed_keys.count(base_key) != 0) { + const ConfigOption* src_opt = config.option(base_key); + if (src_opt != nullptr && src_opt->is_vector() && entry.slot >= 0 && + entry.slot < static_cast<int>(static_cast<const ConfigOptionVectorBase*>(src_opt)->size())) { + if (ConfigOption* dst_opt = this->project_config.option(base_key)) { + if (dst_opt->is_vector() && dst_opt->type() == src_opt->type() && + slot < static_cast<const ConfigOptionVectorBase*>(dst_opt)->size()) { + static_cast<ConfigOptionVectorBase*>(dst_opt)->set_at(src_opt, slot, entry.slot); + material_applied = true; + continue; + } + } + } + // The slot (or its arrays) could not be written: report rather + // than drop the mix silently. + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + preset_keys.emplace_back(key); + } + apply_slot_keys(write_config, preset_keys, entry.slot, material_label); + } + } + // Unpublished gap slots past the printer's physical capacity: the receiver grew + // them only to reach a published definition, so they must not become physical + // filaments (that would overflow the nozzle count). Finalize each as an empty + // mixed placeholder, exactly like the surplus-material placeholders above. + for (int gap_slot : virtual_gap_slots) + if (!this->is_mixed_filament(size_t(gap_slot))) { + finalize_mixed_placeholder(size_t(gap_slot)); + published_config->material_replacements.emplace_back( + "slot " + std::to_string(gap_slot) + + ": unassigned mixed filament (printer supports only " + std::to_string(physical_capacity) + " filaments)"); + } + } + } + + for (const std::string& key : published_config->published_keys) { + if (applied_keys.count(key) != 0) + continue; + const std::string base_key = publish_base_key(key); + // Structural keys are silently ignored, never reported as skipped: a hand-crafted + // 3MF must not trigger the "could not be applied" warning for them. + if (structural_keys.count(base_key) != 0) + continue; + // Printer-class keys outside the publishable allowlist are contract-excluded too. + if (contract_excluded_keys.count(base_key) != 0) + continue; + skipped_keys.emplace_back(key); + } + published_config->skipped_keys = std::move(skipped_keys); + + // The overlay lands on the edited layer only when it survives the load (slot 0's preset + // still matches the edited preset; see edited_survives_load) and on the stored presets + // otherwise. The edited preset is a snapshot taken when the preset was last selected, so + // a slot-0 preset change (type replacement) still needs a re-select to surface; when + // slot 0 is unchanged the edited layer already carries the overlay, and re-selecting + // would discard both it and the user's unsaved edits. + if (material_applied && !this->filament_presets.empty() && + this->filament_presets.front() != this->filaments.get_edited_preset().name) + this->filaments.select_preset_by_name(this->filament_presets.front(), false); + } + + //BBS //const std::string &physical_printer = config.option<ConfigOptionString>("physical_printer_settings_id", true)->value; const std::string physical_printer; - if (this->printers.get_edited_preset().is_external || physical_printer.empty()) { - this->physical_printers.unselect_printer(); - } else { - // Activate the physical printer profile if possible. - PhysicalPrinter *pp = this->physical_printers.find_printer(physical_printer, true); - if (pp != nullptr && std::find(pp->preset_names.begin(), pp->preset_names.end(), this->printers.get_edited_preset().name) != pp->preset_names.end()) - this->physical_printers.select_printer(pp->name, this->printers.get_edited_preset().name); - else + if (!is_published) { + if (this->printers.get_edited_preset().is_external || physical_printer.empty()) { this->physical_printers.unselect_printer(); + } else { + // Activate the physical printer profile if possible. + PhysicalPrinter *pp = this->physical_printers.find_printer(physical_printer, true); + if (pp != nullptr && std::find(pp->preset_names.begin(), pp->preset_names.end(), this->printers.get_edited_preset().name) != pp->preset_names.end()) + this->physical_printers.select_printer(pp->name, this->printers.get_edited_preset().name); + else + this->physical_printers.unselect_printer(); + } } //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": finished"); @@ -5209,9 +6756,11 @@ std::string PresetBundle::load_vendor_preset( return reason; } - auto file_path = (boost::filesystem::path(data_dir()) /PRESET_SYSTEM_DIR/ vendor_name / entry.sub_path).make_preferred(); - if(validation_mode) + auto file_path = (boost::filesystem::path(data_dir()) / PRESET_SYSTEM_DIR / vendor_name / entry.sub_path).make_preferred(); + if (validation_mode) file_path = (boost::filesystem::path(data_dir()) / vendor_name / entry.sub_path).make_preferred(); + if (m_preserve_vendor_source_paths) + file_path = (boost::filesystem::path(path) / vendor_name / entry.sub_path).make_preferred(); // Load the preset into the list of presets, save it to disk. Preset &loaded = presets_collection->load_preset(file_path.string(), preset_name, std::move(config), false); @@ -5222,8 +6771,8 @@ std::string PresetBundle::load_vendor_preset( loaded.description = entry.description; loaded.setting_id = entry.setting_id; // Derive the preset setting_id on the fly when a profile ships without one, - // matching scripts/assign_vendor_setting_ids.py. Only instantiated presets - // carry an id; non-instantiated base profiles return earlier above. This never + // matching scripts/orca_id_tool.py. Only instantiated presets carry an id; + // non-instantiated base profiles return earlier above. This never // touches the per-user cloud-sync setting_id written into user .info files. if (loaded.setting_id.empty() && entry.instantiation == "true") loaded.setting_id = generate_preset_setting_id( @@ -5277,7 +6826,8 @@ std::string PresetBundle::load_vendor_preset( //BBS: Load a config bundle file from json std::pair<PresetsConfigSubstitutions, size_t> PresetBundle::load_vendor_configs_from_json( - const std::string &dir, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle) + const std::string &dir, const std::string &vendor_name, LoadConfigBundleAttributes flags, + ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle, bool allow_cache) { // Enable substitutions for user config bundle, throw an exception when loading a system profile. ConfigSubstitutionContext substitution_context { compatibility_rule }; @@ -5295,7 +6845,7 @@ std::pair<PresetsConfigSubstitutions, size_t> PresetBundle::load_vendor_configs_ // Orca: only a whole-vendor load has a cache — the vendor-only and filament-only // scans want a slice of one. Validation reads the JSONs whatever is cached. const boost::filesystem::path dir_path(dir); - const bool cacheable = flags.has(LoadConfigBundleAttribute::LoadSystem) && ! flags.has(LoadConfigBundleAttribute::LoadFilamentOnly); + const bool cacheable = allow_cache && flags.has(LoadConfigBundleAttribute::LoadSystem) && ! flags.has(LoadConfigBundleAttribute::LoadFilamentOnly); if (cacheable && ! validation_mode && this->load_vendor_cache(dir_path, vendor_name, base_bundle)) { size_t presets_loaded = 0; for (const PresetCollection* coll : std::initializer_list<const PresetCollection*>{ @@ -6160,7 +7710,11 @@ bool PresetBundle::check_duplicate_filament_subtypes() const // inherited from its @base at load time), grouped by vendor so we only test a // printer against its own vendor's filaments. A vendor's compatible_printers // only names that vendor's printers, so same-vendor scoping is correctness - // preserving and avoids an O(all printers x all filaments) sweep. + // preserving and avoids an O(all printers x all filaments) sweep. The one + // exception is the Orca Filament Library: its presets have empty + // compatible_printers (= compatible with every printer, minus the alias-shadowing + // exclusions that is_compatible_with_printer checks via m_excluded_from), so they + // are tested against every vendor's printers as well. std::map<std::string, std::vector<const Preset *>> filaments_by_vendor; for (const auto &preset : filaments) { if (!preset.is_system || preset.filament_id.empty() || preset.vendor == nullptr) @@ -6168,20 +7722,29 @@ bool PresetBundle::check_duplicate_filament_subtypes() const filaments_by_vendor[preset.vendor->name].push_back(&preset); } + const std::vector<const Preset *> no_filaments; + const auto library_it = filaments_by_vendor.find(ORCA_FILAMENT_LIBRARY); + const std::vector<const Preset *> &library_filaments = library_it == filaments_by_vendor.end() ? no_filaments : library_it->second; + bool found_duplicates = false; for (const auto &printer : printers) { if (!printer.is_system || printer.vendor == nullptr) continue; auto vendor_it = filaments_by_vendor.find(printer.vendor->name); - if (vendor_it == filaments_by_vendor.end()) + const std::vector<const Preset *> &vendor_filaments = vendor_it == filaments_by_vendor.end() ? no_filaments : vendor_it->second; + if (vendor_filaments.empty() && library_filaments.empty()) continue; const PresetWithVendorProfile active_printer = printers.get_preset_with_vendor_profile(printer); // std::map keeps the reported errors in a deterministic (sorted) order. std::map<std::string, std::vector<const Preset *>> by_filament_id; - for (const Preset *fil : vendor_it->second) + for (const Preset *fil : vendor_filaments) if (is_compatible_with_printer(filaments.get_preset_with_vendor_profile(*fil), active_printer)) by_filament_id[fil->filament_id].push_back(fil); + if (&vendor_filaments != &library_filaments) + for (const Preset *fil : library_filaments) + if (is_compatible_with_printer(filaments.get_preset_with_vendor_profile(*fil), active_printer)) + by_filament_id[fil->filament_id].push_back(fil); for (const auto &entry : by_filament_id) { if (entry.second.size() < 2) @@ -6189,9 +7752,15 @@ bool PresetBundle::check_duplicate_filament_subtypes() const found_duplicates = true; // List each conflicting preset with a clickable file:// URI on its own // line, so the profile author can jump straight to the files to fix. + // A preset from another bundle (the Orca Filament Library) is tagged with + // its vendor so the source bundle is obvious. std::string presets; - for (const Preset *p : entry.second) - presets += "\n - " + p->name + "\n " + preset_file_uri(p->file); + for (const Preset *p : entry.second) { + presets += "\n - " + p->name; + if (p->vendor != nullptr && p->vendor->name != printer.vendor->name) + presets += " [" + p->vendor->name + "]"; + presets += "\n " + preset_file_uri(p->file); + } BOOST_LOG_TRIVIAL(error) << "Ambiguous AMS filament match: " << entry.second.size() << " filament presets share filament_id \"" << entry.first diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 6e7e07b26e..353b6dc07d 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -4,9 +4,11 @@ #include "Preset.hpp" #include "PresetCacheFormat.hpp" #include "AppConfig.hpp" +#include "PublishSettings.hpp" #include "enum_bitmask.hpp" #include <memory> +#include <map> #include <set> #include <shared_mutex> #include <unordered_map> @@ -168,6 +170,30 @@ struct PresetBundleMetadata } }; +// A "published" 3MF project: keeps the user's currently-selected presets and overlays only the +// author-selected published keys onto the edited presets. +struct PublishedConfig +{ + bool published = false; + std::vector<std::string> published_keys; + // Per-slot published material keys, applied positionally (author slot N -> receiver slot N). + // Partial entries are gated by the author's optional type requirement and written onto the + // slot's stored preset in place; full entries instead detach (see PublishedMaterialEntry in + // PublishSettings.hpp). + std::vector<PublishedMaterialEntry> material_keys; + // Keys that could not be applied (missing on the user's machine or vector size mismatch), + // filled in by load_config_file_config for notification purposes. + std::vector<std::string> skipped_keys; + // Human-readable notices of the slot material replacements performed while loading a + // published project, for the load notification. + std::vector<std::string> material_replacements; + // Mixed-filament entries that had to be moved off their authored slot on load (a real, + // physical filament occupied it): maps the author's zero-based slot number to its final + // zero-based slot. Consumers (e.g. model extruder/color-painting remapping) use this to + // keep geometry references pointing at the relocated definitions. + std::map<int, int> mixed_slot_relocations; +}; + // Bundle of Print + Filament + Printer presets. class PresetBundle { @@ -230,7 +256,22 @@ public: // Load selections (current print, current filaments, current printer) from config.ini // select preferred presets, if any exist PresetsConfigSubstitutions load_presets(AppConfig &config, ForwardCompatibilitySubstitutionRule rule, - const PresetPreferences& preferred_selection = PresetPreferences()); + const PresetPreferences& preferred_selection = PresetPreferences(), + std::string *errors = nullptr, bool read_only = false); + + // Resolve an explicitly named source file through a canonical flattened + // preset. Exact loaded-file identity is preferred; otherwise a manifest- + // backed vendor tree is loaded from that source root without using caches. + bool resolve_preset_config(DynamicPrintConfig &config, Preset::Type type, + const std::string &source_file, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error, bool allow_source_manifest = true); + // Resolve a source file whose JSON omits `type`. Succeeds only when exactly + // one FFF preset collection owns the file and returns that collection's type. + bool resolve_preset_config_type(DynamicPrintConfig &config, Preset::Type &type, + const std::string &source_file, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error, bool allow_source_manifest = true); // Load selections (current print, current filaments, current printer) from config.ini // This is done just once on application start up. @@ -238,7 +279,7 @@ public: void load_selections(AppConfig &config, const PresetPreferences& preferred_selection = PresetPreferences()); // BBS Load user presets - PresetsConfigSubstitutions load_user_presets(std::string user, ForwardCompatibilitySubstitutionRule rule); + PresetsConfigSubstitutions load_user_presets(std::string user, ForwardCompatibilitySubstitutionRule rule, bool read_only = false); PresetsConfigSubstitutions load_user_presets(AppConfig &config, std::map<std::string, std::map<std::string, std::string>>& my_presets, ForwardCompatibilitySubstitutionRule rule); // Orca: Import subscribed bundle presets (load and save to disk in one operation), handles one bundle at a time PresetsConfigSubstitutions update_subscribed_presets(AppConfig& config, @@ -350,6 +391,13 @@ public: std::vector<std::vector<DynamicPrintConfig>> get_extruder_filament_info() const; std::set<std::string> get_printer_names_by_printer_type_and_nozzle(const std::string &printer_type, std::string nozzle_diameter_str, bool system_only = true); + // Orca: the root filament presets a connected machine can use, resolved with the rule the rest + // of the app applies (is_compatible_with_printer): an empty compatible_printers means every + // printer, minus the alias shadowing exclusions the Orca Filament Library records in + // Preset::m_excluded_from. + std::vector<Preset *> get_filament_presets_for_machine(const std::string &printer_type, + const std::string &nozzle_diameter_str, + bool include_user_presets); bool check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray(const std::string &printer_type, std::string & nozzle_diameter_str, std::string & setting_id, @@ -442,8 +490,8 @@ public: // Load configuration that comes from a model file containing configuration, such as 3MF et al. // This method is called by the Plater. - void load_config_model(const std::string &name, DynamicPrintConfig config, Semver file_version = Semver()) - { this->load_config_file_config(name, true, std::move(config), file_version); } + void load_config_model(const std::string &name, DynamicPrintConfig config, Semver file_version = Semver(), PublishedConfig *published_config = nullptr) + { this->load_config_file_config(name, true, std::move(config), file_version, false, published_config); } // Load an external config file containing the print, filament and printer presets. // Instead of a config file, a G-code may be loaded containing the full set of parameters. @@ -474,10 +522,13 @@ public: //Orca: load config bundle from json, pass the base bundle to support cross vendor inheritance // Orca: `dir` is where the vendor is looked for — its own directory, whether or // not the profile JSONs are still there. A whole-vendor load comes from the - // vendor's preset cache whenever one covers the profile on disk, and is parsed - // from the JSONs in `dir` only when none does. Nothing here reads resources. + // vendor's preset cache whenever one covers the profile on disk and allow_cache + // is true, and is parsed from the JSONs in `dir` otherwise. Nothing here reads + // resources implicitly. std::pair<PresetsConfigSubstitutions, size_t> load_vendor_configs_from_json( - const std::string &dir, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle = nullptr); + const std::string &dir, const std::string &vendor_name, LoadConfigBundleAttributes flags, + ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle = nullptr, + bool allow_cache = true); // Export a config bundle file containing all the presets and the names of the active presets. //void export_configbundle(const std::string &path, bool export_system_settings = false, bool export_physical_printers = false); @@ -599,6 +650,7 @@ private: // Whether to (re)write a per-vendor cache after a JSON parse. bool m_generate_vendor_caches { false }; + bool m_preserve_vendor_source_paths { false }; // Orca: validation only - flag any printer with two or more compatible // filament presets sharing one filament_id (ambiguous AMS subtype match). @@ -606,7 +658,7 @@ private: //std::pair<PresetsConfigSubstitutions, std::string> load_system_presets(ForwardCompatibilitySubstitutionRule compatibility_rule); //BBS: add json related logic - std::pair<PresetsConfigSubstitutions, std::string> load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule); + std::pair<PresetsConfigSubstitutions, std::string> load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule, bool allow_cache = true); // Update the multicolor information for filaments. void update_filament_multi_color(); // Update renamed_from and alias maps of system profiles. @@ -620,7 +672,7 @@ private: // Load print, filament & printer presets from a config. If it is an external config, then the name is extracted from the external path. // and the external config is just referenced, not stored into user profile directory. // If it is not an external config, then the config will be stored into the user profile directory. - void load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version = Semver(), bool selected = false); + void load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version = Semver(), bool selected = false, PublishedConfig *published_config = nullptr); /*ConfigSubstitutions load_config_file_config_bundle( const std::string &path, const boost::property_tree::ptree &tree, ForwardCompatibilitySubstitutionRule compatibility_rule);*/ diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 40764342fb..60f747ce04 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1,3 +1,8 @@ +#ifdef _WIN32 +// Keep this first. A header below reaches boost/regex, whose w32_regex_traits +// needs the Win32 types declared already. +#include <Windows.h> +#endif #include "Config.hpp" #include "Exception.hpp" #include "Print.hpp" @@ -15,6 +20,7 @@ #include "GCode.hpp" #include "GCode/WipeTower.hpp" #include "GCode/WipeTower2.hpp" +#include "GCode/WipeTowerEstimate.hpp" #include "Utils.hpp" #include "PrintConfig.hpp" #include "MaterialType.hpp" @@ -1026,20 +1032,21 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, //BBS: add the wipe tower check logic const PrintConfig & config = print.config(); - int filaments_count = print.extruders().size(); + // Custom G-code tool changes (MultiAsSingle) build a real tower on a plate whose objects + // all use one filament, so they have to be counted or the hull below collapses to a point. + int filaments_count = print.extruders(true).size(); int plate_index = print.get_plate_index(); const Vec3d plate_origin = print.get_plate_origin(); float x = config.wipe_tower_x.get_at(plate_index) + plate_origin(0); float y = config.wipe_tower_y.get_at(plate_index) + plate_origin(1); - float width = config.prime_tower_width.value; float a = config.wipe_tower_rotation_angle.value; //float v = config.wiping_volume.value; - float depth = print.wipe_tower_data(filaments_count).depth; - //float brim_width = print.wipe_tower_data(filaments_count).brim_width; - - if (config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib) - width = depth; + // The estimate resolves the effective width (a rib wall squares the tower). + const WipeTowerData &wipe_tower_estimate = print.wipe_tower_data(filaments_count); + float width = wipe_tower_estimate.width; + float depth = wipe_tower_estimate.depth; + float brim_width = wipe_tower_estimate.brim_width; Polygons convex_hulls_temp; if (print.has_wipe_tower()) { @@ -1061,36 +1068,54 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, convex_hulls_temp.push_back(wipe_tower_polygon); } } + // Post-generation the mesh bottom already carries the brim. Pre-generation the body grows + // by the brim only when its width is explicit; the auto brim and a Type2 cone base depend on + // the tower height, exact only once generated, so they only warn here - the exact footprint + // is re-checked in _make_wipe_tower. + const bool exact_footprint = print.is_step_done(psWipeTower); + Polygons tower_polys_checked = (!exact_footprint && config.prime_tower_brim_width.value >= 0) ? + offset(convex_hulls_temp, float(scale_(brim_width))) : + convex_hulls_temp; + Polygons tower_polys_estimated; + if (!exact_footprint && !convex_hulls_temp.empty()) { + double max_height = 0.; + for (const PrintObject *object : print.objects()) + max_height = std::max(max_height, unscale_(object->size().z())); + Polygon base = estimate_wipe_tower_first_layer_outline(config, print.wipe_tower_type(), width, depth, max_height); + base.rotate(Geometry::deg2rad(a)); + base.translate(Point(scale_(x), scale_(y))); + tower_polys_estimated = offset(base, float(scale_(brim_width))); + } + // Object proximity stays a body-only warning: brim near-misses would newly warn on + // many setups that print fine. if (!intersection(convex_hulls_other, convex_hulls_temp).empty()) { if (warning) { warning->string += L("Prime Tower") + L(" is too close to others, and collisions may be caused.\n"); } } - if (!intersection(exclude_polys, convex_hulls_temp).empty()) { - /*if (warning) { - warning->string += L("Prime Tower is too close to exclusion area, there may be collisions when printing.\n"); - }*/ + if (!intersection(exclude_polys, tower_polys_checked).empty()) { return {L("Prime Tower") + L(" is too close to an exclusion area, and collisions will be caused.\n")}; } - if (print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, convex_hulls_temp).empty()) { + if (print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, tower_polys_checked).empty()) { return {L("Prime Tower") + L(" is too close to clumping detection area, and collisions will be caused.\n")}; } - // Skip the containment check for towers that will never be printed (single-filament - // prints without smooth timelapse keep the config's tower position but emit nothing). - // Pre-generation only the body square is tested — the auto-brim estimate can overshoot - // the generated brim by several mm and must not hard-fail a print that physically fits. - // Post-generation the mesh bottom already includes the real brim, so the exact - // footprint is tested. - if (filaments_count > 1 || print.enable_timelapse_print()) { - // The shared printable polygon is plate-local, while the tower polygons above are - // already shifted by the plate origin. - Polygons printable_polys = print.get_extruder_shared_printable_polygon(); - const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); - for (Polygon &p : printable_polys) - p.translate(plate_shift); - if (!diff(convex_hulls_temp, printable_polys).empty()) - return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; + if (warning && !intersection(exclude_polys, tower_polys_estimated).empty()) { + warning->string += L("Prime Tower") + L(" is too close to exclusion area, there may be collisions when printing.") + "\n"; } + if (warning && print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, tower_polys_estimated).empty()) { + warning->string += L("Prime Tower") + L(" is too close to clumping detection area, there may be collisions when printing.") + "\n"; + } + // No gate on "is there a tower": one that is not printed estimates to zero, so the hulls + // are degenerate and every check passes. Re-deriving it here missed the wrapping-detection + // tower on a single-filament plate. + Polygons printable_polys = print.get_extruder_shared_printable_polygon(); + const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); + for (Polygon &p : printable_polys) + p.translate(plate_shift); + if (!diff(tower_polys_checked, printable_polys).empty()) + return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; + if (warning && !diff(tower_polys_estimated, printable_polys).empty()) + warning->string += L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n"); return {}; } @@ -2288,7 +2313,7 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) obj->clear_shared_object(); //add the print_object share check logic - auto is_print_object_the_same = [this](const PrintObject* object1, const PrintObject* object2) -> bool{ + auto is_print_object_the_same = [](const PrintObject* object1, const PrintObject* object2) -> bool{ if (object1->trafo().matrix() != object2->trafo().matrix()) return false; const ModelObject* model_obj1 = object1->model_object(); @@ -3992,74 +4017,25 @@ bool Print::has_wipe_tower() const const WipeTowerData &Print::wipe_tower_data(size_t filaments_cnt) const { - // If the wipe tower wasn't created yet, make sure the depth and brim_width members are set to default. - double max_height = 0; - for (size_t obj_idx = 0; obj_idx < m_objects.size(); obj_idx++) { - double object_z = (double) m_objects[obj_idx]->size().z(); - max_height = std::max(unscale_(object_z), max_height); + // Until the tower is generated, size it with the estimate the GUI/CLI placement uses, so + // validation cannot reject a position the clamp just accepted. + if (is_step_done(psWipeTower) || filaments_cnt == 0) + return m_wipe_tower_data; + + double max_height = 0.; + double layer_height = std::numeric_limits<double>::max(); + for (const PrintObject *object : m_objects) { + max_height = std::max(max_height, unscale_(double(object->size().z()))); + layer_height = std::min(layer_height, object->config().layer_height.value); } - if (max_height < EPSILON) return m_wipe_tower_data; + if (max_height < EPSILON) + return m_wipe_tower_data; - double layer_height = 0.08f; // hard code layer height - layer_height = m_objects.front()->config().layer_height.value; - - auto timelapse_type = config().option<ConfigOptionEnum<TimelapseType>>("timelapse_type"); - bool need_wipe_tower = (timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false) | (m_config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib); - double extra_spacing = config().option("prime_tower_infill_gap")->getFloat() / 100.; - double rib_width = config().option("wipe_tower_rib_width")->getFloat(); - - double filament_change_volume = 0.; - { - std::vector<double> filament_change_lengths; - auto filament_change_lengths_opt = config().option<ConfigOptionFloats>("filament_change_length"); - if (filament_change_lengths_opt) filament_change_lengths = filament_change_lengths_opt->values; - double length = filament_change_lengths.empty() ? 0 : *std::max_element(filament_change_lengths.begin(), filament_change_lengths.end()); - double diameter = 1.75; - std::vector<double> diameters; - auto filament_diameter_opt = config().option<ConfigOptionFloats>("filament_diameter"); - if (filament_diameter_opt) diameters = filament_diameter_opt->values; - diameter = diameters.empty() ? diameter : *std::max_element(diameters.begin(), diameters.end()); - filament_change_volume = length * PI * diameter * diameter / 4.; - } - - - if (! is_step_done(psWipeTower) && filaments_cnt !=0) { - double wipe_volume = m_config.prime_volume; - int filament_depth_count = m_config.nozzle_diameter.values.size() == 2 ? filaments_cnt : filaments_cnt - 1; - if (filaments_cnt == 1 && enable_timelapse_print()) filament_depth_count = 1; - double volume = wipe_volume * filament_depth_count; - if (m_config.nozzle_diameter.values.size() == 2) volume += filament_change_volume * (int) (filaments_cnt / 2); - - // Sizing should take into account currently set wiping volumes. - // For a long time, the initial preview would just use 900/width per toolchange (15mm on a 60mm wide tower) - // and it worked well enough. Let's try to do slightly better by accounting for the purging volumes. - const bool semm_flush = m_config.purge_in_prime_tower && m_config.single_extruder_multi_material; - if (semm_flush) volume = WipeTower2::estimate_semm_flush_volume(m_config, filaments_cnt); - - if (m_config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib) { - double depth = std::sqrt(volume / layer_height * extra_spacing); - if (need_wipe_tower || filaments_cnt > 1) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double) min_wipe_tower_depth, depth); - depth += rib_width / std::sqrt(2) + config().wipe_tower_extra_rib_length.value; - const_cast<Print *>(this)->m_wipe_tower_data.depth = depth; - const_cast<Print *>(this)->m_wipe_tower_data.brim_width = m_config.prime_tower_brim_width; - } - } - else { - double width = m_config.prime_tower_width; - double depth = volume / (layer_height * width); - // The flush volumes already hold the spacing between wipes. - if (!semm_flush) depth *= extra_spacing; - if (need_wipe_tower || depth > EPSILON) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double) min_wipe_tower_depth, depth); - } - const_cast<Print *>(this)->m_wipe_tower_data.depth = depth; - const_cast<Print *>(this)->m_wipe_tower_data.brim_width = m_config.prime_tower_brim_width; - } - if (m_config.prime_tower_brim_width < 0) const_cast<Print *>(this)->m_wipe_tower_data.brim_width = WipeTower::get_auto_brim_by_height(max_height); - } + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, this->wipe_tower_type(), this->extruders(true), layer_height, max_height); + WipeTowerData &data = const_cast<Print *>(this)->m_wipe_tower_data; + data.depth = float(footprint.depth); + data.width = float(footprint.width); + data.brim_width = float(footprint.brim_width); return m_wipe_tower_data; } @@ -4285,6 +4261,7 @@ void Print::_make_wipe_tower() m_wipe_tower_data.tool_changes.reserve(m_wipe_tower_data.tool_ordering.layer_tools().size()); wipe_tower.generate_new(m_wipe_tower_data.tool_changes); m_wipe_tower_data.depth = wipe_tower.get_depth(); + m_wipe_tower_data.width = wipe_tower.width(); m_wipe_tower_data.brim_width = wipe_tower.get_brim_width(); m_wipe_tower_data.bbx = wipe_tower.get_bbx(); m_wipe_tower_data.rib_offset = wipe_tower.get_rib_offset(); @@ -4398,6 +4375,7 @@ void Print::_make_wipe_tower() m_wipe_tower_data.tool_changes.reserve(m_wipe_tower_data.tool_ordering.layer_tools().size()); wipe_tower.generate(m_wipe_tower_data.tool_changes); m_wipe_tower_data.depth = wipe_tower.get_depth(); + m_wipe_tower_data.width = wipe_tower.width(); m_wipe_tower_data.z_and_depth_pairs = wipe_tower.get_z_and_depth_pairs(); m_wipe_tower_data.brim_width = wipe_tower.get_brim_width(); m_wipe_tower_data.height = wipe_tower.get_wipe_tower_height(); @@ -4433,7 +4411,9 @@ void Print::_make_wipe_tower() wipe_tower.get_wipe_tower_height(), wipe_tower.get_brim_width(), config().wipe_tower_wall_type.value == WipeTowerWallType::wtwRib, wipe_tower.get_rib_width(), wipe_tower.get_rib_length(), - config().wipe_tower_fillet_wall.value); + config().wipe_tower_fillet_wall.value, + config().wipe_tower_wall_type.value == WipeTowerWallType::wtwCone ? + (float) config().wipe_tower_cone_angle.value : 0.f); const Vec3d origin = Vec3d::Zero(); // FakeWipeTower::pos is a bed-frame translation applied after rotation // (getFakeExtrusionPathsFromWipeTower2 rotates about the local origin), so the @@ -4446,6 +4426,28 @@ void Print::_make_wipe_tower() config().wipe_tower_rotation_angle, config().wipe_tower_cone_angle, {scale_(origin.x()), scale_(origin.y())}); } + + // The clamps and checks above work from estimates; re-test the exact generated footprint + // so an off-plate tower fails with a clear error instead of exporting unprintable G-code + // (validate() only sees the mesh on its next run). + if (m_wipe_tower_data.wipe_tower_mesh_data) { + Polygon footprint = m_wipe_tower_data.wipe_tower_mesh_data->bottom; // includes brim and rib offset + footprint.rotate(Geometry::deg2rad(m_config.wipe_tower_rotation_angle.value)); + footprint.translate(Point(scale_(m_config.wipe_tower_x.get_at(m_plate_index)), + scale_(m_config.wipe_tower_y.get_at(m_plate_index)))); + const Polygons printable_polys = this->get_extruder_shared_printable_polygon(); + if (!printable_polys.empty() && !diff(Polygons{footprint}, printable_polys).empty()) { + const BoundingBox fp = get_extents(footprint); + const BoundingBox pr = get_extents(printable_polys); + BOOST_LOG_TRIVIAL(error) << boost::format("wipe tower footprint [%1%,%2%]-[%3%,%4%] leaves printable [%5%,%6%]-[%7%,%8%]") % + unscaled(fp.min.x()) % unscaled(fp.min.y()) % unscaled(fp.max.x()) % unscaled(fp.max.y()) % + unscaled(pr.min.x()) % unscaled(pr.min.y()) % unscaled(pr.max.x()) % unscaled(pr.max.y()); + throw Slic3r::SlicingError(L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")); + } + // The cutter/purge corner is a physical obstacle — the brim must stay out like the body. + if (!intersection(get_bed_excluded_area(m_config), Polygons{footprint}).empty()) + throw Slic3r::SlicingError(L("Prime Tower") + L(" is too close to an exclusion area, and collisions will be caused.\n")); + } } // Generate a recommended G-code output file name based on the format template, default extension, and template parameters @@ -5699,7 +5701,7 @@ int Print::load_cached_data(const std::string& directory) return CLI_IMPORT_CACHE_NOT_FOUND; } - auto find_region = [this](PrintObject* object, size_t config_hash) -> const PrintRegion* { + auto find_region = [](PrintObject* object, size_t config_hash) -> const PrintRegion* { int regions_count = object->num_printing_regions(); for (int index = 0; index < regions_count; index++ ) { @@ -5994,17 +5996,26 @@ ExtrusionLayers FakeWipeTower::getTrueExtrusionLayersFromWipeTower() const } return wtels; } -void WipeTowerData::construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length,bool fillet_wall) +void WipeTowerData::construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length,bool fillet_wall, float cone_angle) { wipe_tower_mesh_data = WipeTowerMeshData{}; float first_layer_height=0.08; //brim height if (width < EPSILON || depth < EPSILON || height < EPSILON) return; - if (!is_rib_wipe_tower || rib_length < EPSILON) { + if (cone_angle > EPSILON && (!is_rib_wipe_tower || rib_length < EPSILON)) { + // Cone tower: the base bulges past the body box; this bottom polygon feeds the + // containment checks, so it must carry the bulge and the brim (cone not lofted). + wipe_tower_mesh_data->real_wipe_tower_mesh = make_cube(width, depth, height); + wipe_tower_mesh_data->bottom = WipeTower2::cone_base_polygon(width, depth, height, cone_angle); + auto brim_bottom = offset(wipe_tower_mesh_data->bottom, scaled(brim_width)); + if (!brim_bottom.empty()) + wipe_tower_mesh_data->bottom = brim_bottom.front(); + wipe_tower_mesh_data->real_brim_mesh = WipeTower::its_make_rib_brim(wipe_tower_mesh_data->bottom, first_layer_height); + } else if (!is_rib_wipe_tower || rib_length < EPSILON) { wipe_tower_mesh_data->real_wipe_tower_mesh = make_cube(width, depth, height); wipe_tower_mesh_data->real_brim_mesh = make_cube(width + 2 * brim_width, depth + 2 * brim_width, first_layer_height); wipe_tower_mesh_data->real_brim_mesh.translate({-brim_width, -brim_width, 0}); - wipe_tower_mesh_data->bottom = {scaled(Vec2f{-brim_width, -brim_width}), scaled(Vec2f{width + brim_width, 0}), scaled(Vec2f{width + brim_width, depth + brim_width}), - scaled(Vec2f{0, depth})}; + wipe_tower_mesh_data->bottom = {scaled(Vec2f{-brim_width, -brim_width}), scaled(Vec2f{width + brim_width, -brim_width}), + scaled(Vec2f{width + brim_width, depth + brim_width}), scaled(Vec2f{-brim_width, depth + brim_width})}; } else { wipe_tower_mesh_data->real_wipe_tower_mesh = WipeTower::its_make_rib_tower(width, depth, height, rib_length, rib_width, fillet_wall); wipe_tower_mesh_data->bottom = WipeTower::rib_section(width, depth, rib_length, rib_width, fillet_wall); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 9e20061501..9822c5520c 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -782,6 +782,9 @@ struct WipeTowerData // Depth of the wipe tower to pass to GLCanvas3D for exact bounding box: float depth; + // Effective width (a rib wall squares the tower): the estimate until generation, then the + // generated width, so it never disagrees with depth. + float width; std::vector<std::pair<float, float>> z_and_depth_pairs; float brim_width; float height; @@ -795,12 +798,13 @@ struct WipeTowerData used_filament.clear(); number_of_toolchanges = -1; depth = 0.f; + width = 0.f; brim_width = 0.f; height = 0.f; rib_offset = Vec2f::Zero(); wipe_tower_mesh_data = std::nullopt; } - void construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length, bool fillet_wall); + void construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length, bool fillet_wall, float cone_angle = 0.f); private: // Only allow the WipeTowerData to be instantiated internally by Print, diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index f03271bf73..90d60b5917 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -560,9 +560,11 @@ static inline bool model_volume_solid_or_modifier(const ModelVolume &mv) static inline Transform3f trafo_for_bbox(const Transform3d &object_trafo, const Transform3d &volume_trafo) { - Transform3d m = object_trafo * volume_trafo; - m.translation().x() = 0.; - m.translation().y() = 0.; + // Orca: Keep the volume's local XY offset for multipart overlap checks, but remove the object's bed placement. + Transform3d object_trafo_local = object_trafo; + object_trafo_local.translation().x() = 0.; + object_trafo_local.translation().y() = 0.; + Transform3d m = object_trafo_local * volume_trafo; return m.cast<float>(); } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2a4eb8d7a7..1db476eede 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -275,6 +275,7 @@ static t_config_enum_values s_keys_map_InfillPattern { { "tpmsfk", ipTpmsFK }, { "gyroid", ipGyroid }, { "concentric", ipConcentric }, + { "spiralinset", ipSpiralInset }, { "hilbertcurve", ipHilbertCurve }, { "archimedeanchords", ipArchimedeanChords }, { "octagramspiral", ipOctagramSpiral } @@ -371,6 +372,7 @@ static t_config_enum_values s_keys_map_SupportMaterialInterfacePattern { { "auto", smipAuto }, { "rectilinear", smipRectilinear }, { "concentric", smipConcentric }, + { "spiralinset", smipSpiralInset }, { "rectilinear_interlaced", smipRectilinearInterlaced}, { "grid", smipGrid } }; @@ -1130,8 +1132,7 @@ void PrintConfigDef::init_fff_params() // BBS def = this->add("supertack_plate_temp", coInts); def->label = L("Other layers"); - def->tooltip = L("Bed temperature for layers except the initial one. " - "A value of 0 means the filament does not support printing on the Cool Plate SuperTack."); + def->tooltip = L("This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."); def->sidetext = L(u8"\u2103" /* °C */); // degrees Celsius, CIS languages need translation def->full_label = L("Bed temperature"); def->min = 0; @@ -2293,6 +2294,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("rectilinear"); def->enum_values.push_back("alignedrectilinear"); def->enum_values.push_back("concentric"); + def->enum_values.push_back("spiralinset"); def->enum_values.push_back("hilbertcurve"); def->enum_values.push_back("archimedeanchords"); def->enum_values.push_back("octagramspiral"); @@ -2301,6 +2303,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Rectilinear")); def->enum_labels.push_back(L("Aligned Rectilinear")); def->enum_labels.push_back(L("Concentric")); + def->enum_labels.push_back(L("Spiral Inset")); def->enum_labels.push_back(L("Hilbert Curve")); def->enum_labels.push_back(L("Archimedean Chords")); def->enum_labels.push_back(L("Octagram Spiral")); @@ -2383,7 +2386,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Top surface fill order"); def->category = L("Strength"); def->tooltip = L("Direction in which top surfaces are filled when using a center-based pattern " - "(Concentric, Archimedean Chords, Octagram Spiral).\n" + "(Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed " "towards the edge where it is least visible. Inward starts at the edge and ends " "with the tight curves at the center.\n" @@ -2402,7 +2405,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Bottom surface fill order"); def->category = L("Strength"); def->tooltip = L("Direction in which bottom surfaces are filled when using a center-based pattern " - "(Concentric, Archimedean Chords, Octagram Spiral).\n" + "(Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer " "adhesion on build plates where the tight curves at the center may not stick. " "Outward starts at the center, pushing any excess material towards the edge.\n" @@ -2770,7 +2773,7 @@ void PrintConfigDef::init_fff_params() def = this->add("fan_cooling_layer_time", coFloats); def->label = L("Layer time"); def->tooltip = L("The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->max = 1000; def->mode = comSimple; @@ -2923,7 +2926,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Filament load time"); def->tooltip = L("Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. " "For tool changers or multi-tool machines, it's typically 0. For statistics only."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.0)); @@ -2932,7 +2935,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Filament unload time"); def->tooltip = L("Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. " "For tool changers or multi-tool machines, it's typically 0. For statistics only."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.0)); @@ -2941,7 +2944,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Tool change time"); def->tooltip = L("Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. " "For single-extruder multi-material machines, it's typically 0. For statistics only."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat { 0. }); @@ -3087,7 +3090,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Time to wait after the filament is unloaded. " "May help to get reliable tool changes with flexible materials " "that may need more time to shrink to original dimensions."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 0. }); @@ -4206,7 +4209,7 @@ void PrintConfigDef::init_fff_params() "\nIt won't move fan commands from custom G-code (they act as a sort of 'barrier')." "\nIt won't move fan commands into the start G-code if the 'only custom start G-code' is activated." "\nUse 0 to deactivate."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); @@ -4222,7 +4225,7 @@ void PrintConfigDef::init_fff_params() "\nThis is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to " "get the fan up to speed faster." "\nSet to 0 to deactivate."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); @@ -4866,7 +4869,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Ironing expansion"); def->category = L("Quality"); def->tooltip = L("Expand or contract the ironing area."); - def->sidetext = L("mm"); + def->sidetext = L("mm"); // millimeters, CIS languages need translation def->min = -100; def->max = 100; def->mode = comExpert; @@ -4903,7 +4906,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Quality"); def->tooltip = L("Minimum Z-layer height.\n" "Also controls the slicing plane."); - def->sidetext = L("mm"); + def->sidetext = L("mm"); // millimeters, CIS languages need translation def->min = 0; def->max = 100; def->mode = comExpert; @@ -5102,7 +5105,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Machine limits"); def->readonly = false; def->tooltip = L("The allowed maximum output force of Y axis"); - def->sidetext = L("N"); + def->sidetext = L_CONTEXT("N", "Newton"); // Newtons, CIS languages need translation def->min = 0; def->mode = comDevelop; def->set_default_value(new ConfigOptionFloat(0)); @@ -5112,7 +5115,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Machine limits"); def->readonly = false; def->tooltip = L("The machine bed mass load of Y axis"); - def->sidetext = L("g"); + def->sidetext = L_CONTEXT("g", "gram"); // grams, CIS languages need translation def->min = 0; def->mode = comDevelop; def->set_default_value(new ConfigOptionFloat(0)); @@ -5122,7 +5125,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Machine limits"); def->readonly = false; def->tooltip = L("The allowed max printed mass on a plate"); - def->sidetext = L("g"); + def->sidetext = L_CONTEXT("g", "gram"); // grams, CIS languages need translation def->min = 0; def->mode = comDevelop; def->set_default_value(new ConfigOptionFloat(0)); @@ -5481,7 +5484,7 @@ void PrintConfigDef::init_fff_params() def = this->add("reduce_infill_retraction", coBool); def->label = L("Reduce infill retraction"); - def->tooltip = L("Don\'t retract when the travel is entirely within an infill area. That means the oozing can\'t been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."); + def->tooltip = L("Don\'t retract when the travel is entirely within an infill area. That means the oozing can\'t been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); @@ -5736,7 +5739,7 @@ void PrintConfigDef::init_fff_params() def = this->add("retract_after_wipe", coPercents); def->label = L("Retract amount after wipe"); // xgettext:no-c-format, no-boost-format - def->tooltip = L("The length of fast retraction after wipe, relative to retraction length.\n" + def->tooltip = L("This is the length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value."); def->sidetext = "%"; def->mode = comExpert; @@ -5802,7 +5805,7 @@ void PrintConfigDef::init_fff_params() def = this->add("z_hop", coFloats); def->label = L("Z-hop height"); - def->tooltip = L("Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."); + def->tooltip = L("Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."); def->sidetext = L("mm"); // millimeters, CIS languages need translation def->mode = comSimple; def->min = 0; @@ -6380,7 +6383,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Layer time"); def->tooltip = L("The printing speed in exported G-code will be slowed down when the estimated layer time is " "shorter than this value in order to get better cooling for these layers."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->max = 1000; def->mode = comSimple; @@ -6533,7 +6536,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Preheat time"); def->tooltip = L("To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. " "This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance."); - def->sidetext = L("s"); // seconds, CIS languages need translation + def->sidetext = L_CONTEXT("s", "second"); // seconds, CIS languages need translation def->min = 0; def->max = 120; def->mode = comAdvanced; @@ -6964,11 +6967,13 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("auto"); def->enum_values.push_back("rectilinear"); def->enum_values.push_back("concentric"); + def->enum_values.push_back("spiralinset"); def->enum_values.push_back("rectilinear_interlaced"); def->enum_values.push_back("grid"); def->enum_labels.push_back(L("Default")); def->enum_labels.push_back(L("Rectilinear")); def->enum_labels.push_back(L("Concentric")); + def->enum_labels.push_back(L("Spiral Inset")); def->enum_labels.push_back(L("Rectilinear Interlaced")); def->enum_labels.push_back(L("Grid")); def->mode = comAdvanced; @@ -8025,7 +8030,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_hotend_change_time", coFloat); def->label = L("Hotend change time"); def->tooltip = L("Time to change hotend."); - def->sidetext = L("s"); + def->sidetext = L_CONTEXT("s", "second"); def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.0)); @@ -9866,7 +9871,15 @@ std::string DynamicPrintConfig::get_filament_type(std::string &displayed_filamen auto* filament_type = dynamic_cast<const ConfigOptionStrings*>(this->option("filament_type")); auto* filament_is_support = dynamic_cast<const ConfigOptionBools*>(this->option("filament_is_support")); - if (!filament_type) + // get_at() on an empty vector option is undefined behavior (.front() of an empty vector), + // and e.g. filament_id is never populated on a CLI from-scratch slice - treat an empty + // option the same as a missing one. + if (filament_id && filament_id->values.empty()) + filament_id = nullptr; + if (filament_is_support && filament_is_support->values.empty()) + filament_is_support = nullptr; + + if (!filament_type || filament_type->values.empty()) return ""; if (!filament_is_support) { @@ -10091,6 +10104,10 @@ int DynamicPrintConfig::update_values_from_single_to_multi(DynamicPrintConfig& m for (int index = 0; index < variant_count; index++) { + //variant_count is the variant column width, src_opt the value array; + //they disagree when the source was authored at a different width + if (index >= (int)src_opt->values.size()) + break; if (opt->values[index] > src_opt->values[index]) opt->values[index] = src_opt->values[index]; } @@ -10108,6 +10125,8 @@ int DynamicPrintConfig::update_values_from_single_to_multi(DynamicPrintConfig& m for (int index = 0; index < variant_count; index++) { + if (index >= (int)src_opt->values.size()) + break; if (opt->values[index].value > src_opt->values[index].value) opt->values[index] = src_opt->values[index]; } @@ -10302,6 +10321,10 @@ int DynamicPrintConfig::update_values_from_multi_to_multi(DynamicPrintConfig& ne for(auto idx : variant_indices){ assert(idx < old_count); + //the counts come from the variant columns, the arrays from the options; + //they disagree when a config was authored at a different variant width + if (idx >= old_count || new_variant_index >= (int)opt->values.size()) + continue; if (old_values[idx] < opt->values[new_variant_index]) opt->values[new_variant_index] = old_values[idx]; } @@ -10332,6 +10355,10 @@ int DynamicPrintConfig::update_values_from_multi_to_multi(DynamicPrintConfig& ne for(auto idx : variant_indices){ assert(idx < old_count); + //the counts come from the variant columns, the arrays from the options; + //they disagree when a config was authored at a different variant width + if (idx >= old_count || new_variant_index >= (int)opt->values.size()) + continue; if (old_values[idx] < opt->values[new_variant_index]) opt->values[new_variant_index] = old_values[idx]; } @@ -10362,6 +10389,8 @@ int DynamicPrintConfig::update_values_from_multi_to_multi(DynamicPrintConfig& ne for(auto idx : variant_indices){ assert(idx < old_count); + if (idx >= old_count || new_variant_index >= (int)opt->values.size()) + continue; if (old_values[idx]) //enabled opt->values[new_variant_index] = old_values[idx]; } @@ -10402,6 +10431,15 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st same_variant_indices.emplace_back(indices); } + //dst_values below is the destination PRINT preset's per-variant row, sized to its own + //print_extruder_variant; dst_extruder_variants is the PRINTER's list. They disagree until + //the print preset is re-selected, so size the row to the variant count before indexing it. + const size_t dst_variant_count = dst_extruder_variants.size(); + if (dst_variant_count == 0) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(", Line %1%: empty destination variant list")%__LINE__; + return -1; + } + t_config_option_keys keys = this->keys(); for(auto& key : keys){ if(key_sets.find(key) == key_sets.end()) @@ -10417,7 +10455,13 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st { ConfigOptionFloatsNullable* opt = this->option<ConfigOptionFloatsNullable>(key); auto src_values = opt->values; - auto dst_values = dst_config.option<ConfigOptionFloatsNullable>(key) ->values; + const auto* dst_opt = dst_config.option<ConfigOptionFloatsNullable>(key); + if(!dst_opt){ + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: %2% missing from destination config")%__LINE__%key; + break; + } + auto dst_values = dst_opt->values; + dst_values.resize(dst_variant_count, ConfigOptionFloatsNullable::nil_value()); for(size_t dst_idx =0; dst_idx < same_variant_indices.size(); ++dst_idx){ auto& indices = same_variant_indices[dst_idx]; if(indices.empty()) @@ -10425,7 +10469,7 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st bool has_value = false; double target_value = std::numeric_limits<double>::max(); for(auto idx : indices){ - if(opt && idx < opt->values.size() && !opt->is_nil(idx)){ + if(idx < (int)opt->values.size() && !opt->is_nil(idx)){ has_value = true; target_value = std::min(target_value, src_values[idx]); } @@ -10441,7 +10485,13 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st { ConfigOptionFloatsOrPercentsNullable* opt = this->option<ConfigOptionFloatsOrPercentsNullable>(key); auto src_values = opt->values; - auto dst_values = dst_config.option<ConfigOptionFloatsOrPercentsNullable>(key) ->values; + const auto* dst_opt = dst_config.option<ConfigOptionFloatsOrPercentsNullable>(key); + if(!dst_opt){ + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: %2% missing from destination config")%__LINE__%key; + break; + } + auto dst_values = dst_opt->values; + dst_values.resize(dst_variant_count, ConfigOptionFloatsOrPercentsNullable::nil_value()); for(size_t dst_idx =0; dst_idx < same_variant_indices.size(); ++dst_idx){ auto& indices = same_variant_indices[dst_idx]; if(indices.empty()) @@ -10449,7 +10499,7 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st bool has_value = false; FloatOrPercent target_value{9999.f, true}; for(auto idx : indices){ - if(opt && !opt->is_nil(idx)){ + if(idx < (int)opt->values.size() && !opt->is_nil(idx)){ has_value = true; target_value = src_values[idx].value < target_value.value ? src_values[idx] : target_value; } @@ -10465,15 +10515,21 @@ int DynamicPrintConfig::update_values_from_multi_to_multi_2(const std::vector<st { ConfigOptionBoolsNullable* opt = this->option<ConfigOptionBoolsNullable>(key); auto src_values = opt->values; - auto dst_values = dst_config.option<ConfigOptionBoolsNullable>(key) ->values; + const auto* dst_opt = dst_config.option<ConfigOptionBoolsNullable>(key); + if(!dst_opt){ + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: %2% missing from destination config")%__LINE__%key; + break; + } + auto dst_values = dst_opt->values; + dst_values.resize(dst_variant_count, ConfigOptionBoolsNullable::nil_value()); for(size_t dst_idx =0; dst_idx < same_variant_indices.size(); ++dst_idx){ auto indices = same_variant_indices[dst_idx]; if(indices.empty()) continue; bool has_value = false; - bool target_value; + bool target_value = false; for(auto idx : indices){ - if(opt && !opt->is_nil(idx)){ + if(idx < (int)opt->values.size() && !opt->is_nil(idx)){ has_value = true; target_value = src_values[idx]; break; @@ -11948,13 +12004,11 @@ CLIActionsConfigDef::CLIActionsConfigDef() def = this->add("load_defaultfila", coBool); def->label = L("Load default filaments"); def->tooltip = L("Load first filament as default for those not loaded."); - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("min_save", coBool); def->label = L("Minimum save"); def->tooltip = L("Export 3MF with minimum size."); - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("mtcpp", coInt); @@ -11980,7 +12034,6 @@ CLIActionsConfigDef::CLIActionsConfigDef() def = this->add("normative_check", coBool); def->label = L("Normative check"); def->tooltip = L("Check the normative items."); - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(true)); /*def = this->add("help_fff", coBool); @@ -12247,7 +12300,7 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->cli_params = "level"; def->set_default_value(new ConfigOptionInt(1)); - def = this->add("logfile", coInt); + def = this->add("logfile", coString); def->label = L("Log file"); def->tooltip = L("Redirects debug logging to file.\n"); def->cli_params = "file"; @@ -12295,7 +12348,6 @@ CLIMiscConfigDef::CLIMiscConfigDef() def = this->add("skip_modified_gcodes", coBool); def->label = L("Skip modified G-code in 3MF"); def->tooltip = L("Skip the modified G-code in 3MF from printer or filament presets."); - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("makerlab_name", coString); @@ -12325,14 +12377,12 @@ CLIMiscConfigDef::CLIMiscConfigDef() def = this->add("allow_newer_file", coBool); def->label = L("Allow 3MF with newer version to be sliced"); def->tooltip = L("Allow 3MF with newer version to be sliced."); - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); def = this->add("allow_mix_temp", coBool); // internal use only, don't need translation def->label = "Allow filaments with high/low temperature to be printed together"; def->tooltip = "Allow filaments with high/low temperature to be printed together."; - def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); } diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 330151c4d3..f7cbe8b2e5 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -113,7 +113,7 @@ enum InfillPattern : int { ipCubic, ipAdaptiveCubic, ipQuarterCubic, ipSupportCubic, ipLightning, ipHoneycomb, ip3DHoneycomb, ipLateralHoneycomb, ipLateralLattice, ipCrossHatch, ipTpmsD, ipTpmsFK, ipGyroid, - ipConcentric, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, + ipConcentric, ipSpiralInset, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipSupportBase, ipConcentricInternal, ipCount, }; @@ -271,7 +271,7 @@ enum LongRectrationLevel }; enum SupportMaterialInterfacePattern { - smipAuto, smipRectilinear, smipConcentric, smipRectilinearInterlaced, smipGrid + smipAuto, smipRectilinear, smipConcentric, smipSpiralInset, smipRectilinearInterlaced, smipGrid }; // BBS diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 7bc18f6b86..a228bb7436 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2666,7 +2666,7 @@ void PrintObject::bridge_over_infill() // SECTION to gather and filter surfaces for expanding, and then cluster them by layer { tbb::concurrent_vector<CandidateSurface> candidate_surfaces; - tbb::parallel_for(tbb::blocked_range<size_t>(0, this->layers().size()), [po = static_cast<const PrintObject *>(this), &candidate_surfaces, has_lightning_infill](tbb::blocked_range<size_t> r) { + tbb::parallel_for(tbb::blocked_range<size_t>(0, this->layers().size()), [po = static_cast<const PrintObject *>(this), &candidate_surfaces](tbb::blocked_range<size_t> r) { PRINT_OBJECT_TIME_LIMIT_MILLIS(PRINT_OBJECT_TIME_LIMIT_DEFAULT); for (size_t lidx = r.begin(); lidx < r.end(); lidx++) { const Layer *layer = po->get_layer(lidx); diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 07eb885eda..d16e381604 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -304,11 +304,16 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions( float z = zs[z_idx]; int idx_first_printable_region = -1; bool complex = false; + std::vector<int> printable_region_ids; for (int idx_region = 0; idx_region < int(layer_range.volume_regions.size()); ++ idx_region) { const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[idx_region]; if (region.bbox->min().z() <= z && region.bbox->max().z() >= z) { - if (idx_first_printable_region == -1 && region.model_volume->is_model_part()) + if (region.model_volume->is_model_part()) + printable_region_ids.push_back(idx_region); + + if (idx_first_printable_region == -1 && region.model_volume->is_model_part()) { idx_first_printable_region = idx_region; + } else if (idx_first_printable_region != -1) { // Test for overlap with some other region. for (int idx_region2 = idx_first_printable_region; idx_region2 < idx_region; ++ idx_region2) { @@ -324,8 +329,10 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions( if (complex) zs_complex.push_back({ z_idx, z }); else if (idx_first_printable_region >= 0) { - const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[idx_first_printable_region]; - slices_by_region[region.region->print_object_region_id()][z_idx] = std::move(volume_slices_find_by_id(volume_slices, region.model_volume->id()).slices[z_idx]); + for (int printable_region_id : printable_region_ids) { + const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[printable_region_id]; + append(slices_by_region[region.region->print_object_region_id()][z_idx], std::move(volume_slices_find_by_id(volume_slices, region.model_volume->id()).slices[z_idx])); + } } } } @@ -527,7 +534,7 @@ bool groupingVolumes(std::vector<VolumeSlices> objSliceByVolume, std::vector<gro } tbb::parallel_for(tbb::blocked_range<int>(0, osvIndex.size()), - [&osvIndex, &objSliceByVolume, &offsetValue, &resolution](const tbb::blocked_range<int>& range) { + [&osvIndex, &objSliceByVolume, &resolution](const tbb::blocked_range<int>& range) { for (auto k = range.begin(); k != range.end(); ++k) { for (ExPolygon& poly_ex : objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]]) poly_ex.douglas_peucker(resolution); @@ -535,7 +542,7 @@ bool groupingVolumes(std::vector<VolumeSlices> objSliceByVolume, std::vector<gro }); tbb::parallel_for(tbb::blocked_range<int>(0, osvIndex.size()), - [&osvIndex, &objSliceByVolume,&offsetValue, &resolution](const tbb::blocked_range<int>& range) { + [&osvIndex, &objSliceByVolume,&offsetValue](const tbb::blocked_range<int>& range) { for (auto k = range.begin(); k != range.end(); ++k) { objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]] = offset_ex(objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]], offsetValue); } diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp new file mode 100644 index 0000000000..6d28cc0af3 --- /dev/null +++ b/src/libslic3r/PublishSettings.cpp @@ -0,0 +1,315 @@ +#include "PublishSettings.hpp" + +#include "PresetBundle.hpp" +#include "Preset.hpp" +#include "PrintConfig.hpp" +#include "MaterialType.hpp" + +#include <boost/log/trivial.hpp> +#include <boost/algorithm/string/trim.hpp> + +#include <map> +#include <set> + +namespace Slic3r { + +std::string publish_base_key(const std::string &key) +{ + const size_t pos = key.find('#'); + return pos == std::string::npos ? key : key.substr(0, pos); +} + +// Parse the trailing "#N" variant index ("retraction_length#2" -> 2). Returns -1 when the key +// carries no '#' separator or its suffix is malformed; mirrors the importer's strict parse +// (PresetBundle.cpp) so the export side rejects the same variants the receiver would skip. +static int publish_variant_index(const std::string &key, const std::string &base_key) +{ + if (key.size() <= base_key.size() || key.compare(0, base_key.size(), base_key) != 0 || key[base_key.size()] != '#') + return -1; + const std::string suffix = key.substr(base_key.size() + 1); + if (suffix.empty()) + return -1; + int idx = 0; + for (const char c : suffix) { + if (c < '0' || c > '9') + return -1; + idx = idx * 10 + (c - '0'); + if (idx > 1000000) // overflow guard; real vector sizes are tiny + return -1; + } + return idx; +} + +std::string normalize_filament_type(const std::string& type) +{ + if (type.empty()) + return type; + if (MaterialType::find(type) != nullptr) + return type; + // "PLA High Speed" -> "PLA": strip a space-separated modifier, but keep dash-separated + // types like "PA-CF" / "PETG-CF" intact (they are distinct materials, not modifiers). + const size_t sep = type.find(' '); + if (sep != std::string::npos) { + const std::string base = type.substr(0, sep); + if (MaterialType::find(base) != nullptr) + return base; + } + return type; +} + +void make_publish_universal(DynamicPrintConfig &config) +{ + // Lists: empty => compatible with every printer / every print preset. Conditions: + // empty so a leftover expression left behind by the baseline clone can never + // re-narrow the match (see is_compatible_with_printer, Preset.cpp:840). All four + // keys exist on filament presets; nil-guard for hand-crafted future schemas. + if (auto *opt = config.opt<ConfigOptionStrings>("compatible_printers", false)) + opt->values.clear(); + if (auto *opt = config.opt<ConfigOptionStrings>("compatible_prints", false)) + opt->values.clear(); + if (auto *opt = config.opt<ConfigOptionString>("compatible_printers_condition", false)) + opt->value.clear(); + if (auto *opt = config.opt<ConfigOptionString>("compatible_prints_condition", false)) + opt->value.clear(); +} + +std::string publish_material_base_name(const std::string &preset_name) +{ + if (preset_name.empty()) + return preset_name; + const size_t at = preset_name.find('@'); + std::string base = (at == std::string::npos) ? preset_name : preset_name.substr(0, at); + boost::trim_right(base); + return base; +} + +const std::set<std::string>& publish_structural_keys() +{ + // Non-publishable keys: the *_settings_id keys are also in PresetCollection::skipped_in_dirty + // (Preset.cpp) / stripped from configs (profile_print_params_same); publishing them would + // rewrite the user's preset inheritance/structure. + static const std::set<std::string> structural_keys = { + "printer_settings_id", "filament_settings_id", "print_settings_id", + "sla_print_settings_id", "sla_material_settings_id", + "compatible_printers", "compatible_prints", + "compatible_printers_condition", "compatible_prints_condition", + "default_filament_profile", "default_print_profile", + "default_sla_print_profile", "default_sla_material_profile", + "extruder_count", "bed_shape", + "inherits", "inherits_group", + "printer_technology", "printer_model", "printer_variant", + "physical_printer_settings_id", "filament_ids", + "different_settings_to_system" + }; + return structural_keys; +} + +const std::set<std::string>& publish_mixed_keys() +{ + // Must match PresetBundle's s_project_options mixed-color group (PresetBundle.cpp): these + // are project-level parallel per-slot arrays, not filament-preset options, so the import + // material pass applies them into project_config instead of a filament preset config. + static const std::set<std::string> mixed_keys = { + "filament_is_mixed", + "filament_mixed_components", + "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", + "filament_mixed_gradient_range", + "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" + }; + return mixed_keys; +} + +// The printer tab's "Retraction" optgroup (TabPrinter::build_fff, Tab.cpp), in tab order. +// KEEP IN SYNC with that optgroup: the published-3MF printer allowlist is built from these +// lists, so any key shown there must be publishable here (and vice versa). +const std::vector<PublishablePrinterOption>& publishable_printer_retraction_options() +{ + static const std::vector<PublishablePrinterOption> options = { + { "retraction_length", "printer_extruder_retraction#length" }, + { "retract_restart_extra", "printer_extruder_retraction#extra-length-on-restart" }, + { "retraction_speed", "printer_extruder_retraction#retraction-speed" }, + { "deretraction_speed", "printer_extruder_retraction#deretraction-speed" }, + { "retraction_minimum_travel", "printer_extruder_retraction#travel-distance-threshold" }, + { "retract_when_changing_layer", "printer_extruder_retraction#retract-on-layer-change" }, + { "wipe", "printer_extruder_retraction#wipe-while-retracting" }, + { "wipe_distance", "printer_extruder_retraction#wipe-distance" }, + { "retract_before_wipe", "printer_extruder_retraction#retract-amount-before-wipe" }, + { "retract_after_wipe", "printer_extruder_retraction#retract-amount-after-wipe" }, + }; + return options; +} + +// The printer tab's "Z-Hop" optgroup (TabPrinter::build_fff, Tab.cpp), in tab order. KEEP IN +// SYNC with that optgroup, same as publishable_printer_retraction_options(). +const std::vector<PublishablePrinterOption>& publishable_printer_z_hop_options() +{ + static const std::vector<PublishablePrinterOption> options = { + { "retract_lift_enforce", "printer_extruder_z_hop#on-surfaces" }, + { "z_hop_types", "printer_extruder_z_hop#z-hop-type" }, + { "z_hop", "printer_extruder_z_hop#z-hop-height" }, + { "travel_slope", "printer_extruder_z_hop#traveling-angle" }, + { "retract_lift_above", "printer_extruder_z_hop#only-lift-z-above" }, + { "retract_lift_below", "printer_extruder_z_hop#only-lift-z-below" }, + }; + return options; +} + +const std::set<std::string>& publishable_printer_keys() +{ + // Union of the two optgroups; "Retraction when switching material" keys are excluded + // (toolchange retraction is device/profile territory, not a publishable behavior tweak). + static const std::set<std::string> printer_keys = [] { + std::set<std::string> keys; + for (const PublishablePrinterOption &opt : publishable_printer_retraction_options()) + keys.insert(opt.key); + for (const PublishablePrinterOption &opt : publishable_printer_z_hop_options()) + keys.insert(opt.key); + return keys; + }(); + return printer_keys; +} + +std::vector<std::string> collect_dirty_settings_keys(const PresetBundle& bundle) +{ + std::set<std::string> keys; + + // Union the dirty keys of each collection's edited preset (filaments may span multiple + // slots); feeds only the Publish dialog's pre-check. + for (const std::string& key : bundle.prints.current_dirty_options(true)) + keys.insert(key); + for (const std::string& key : bundle.printers.current_dirty_options(true)) + keys.insert(key); + for (const std::string& key : bundle.filaments.current_dirty_options(true)) + keys.insert(key); + + return std::vector<std::string>(keys.begin(), keys.end()); +} + +DynamicPrintConfig filter_published_config( + const DynamicPrintConfig &full_config, + const std::vector<std::string> &published_keys, + const std::vector<PublishedMaterialEntry> &material_keys) +{ + DynamicPrintConfig filtered; + + std::set<std::string> base_keys_to_include; + // Never masked (whole-vector serialization): identity, plate geometry, process keys and + // printer keys without a "#N" variant. + std::set<std::string> mask_exempt_keys; + // Material entries: base key -> author slots whose values must survive; other slots are + // masked to their defaults so a publish (partial or full) does not leak unrelated slot + // data. + std::map<std::string, std::set<int>> slot_mask_map; + + // 1. Mandatory material identity & slot count keys for 3MF validation/normalization + // (filament_ids: exported for validation, denylisted on apply - see publish_structural_keys). + static const std::vector<std::string> s_material_identity_keys = { + "filament_colour", + "filament_type", + "filament_vendor", + "filament_ids", + "filament_diameter", + "filament_self_index", + "filament_extruder_variant" + }; + for (const std::string &key : s_material_identity_keys) { + base_keys_to_include.insert(key); + mask_exempt_keys.insert(key); + } + + // 2. Published plate / bed geometry keys (wipe tower positioning) + static const std::vector<std::string> s_plate_geometry_keys = { + "wipe_tower_x", + "wipe_tower_y", + "wipe_tower_rotation_angle" + }; + for (const std::string &key : s_plate_geometry_keys) { + base_keys_to_include.insert(key); + mask_exempt_keys.insert(key); + } + + // 3. Process and printer published keys. Printer per-extruder keys carry a "#N" variant + // (e.g. retraction_length#2): mask the base to the author's extruder index so a partial + // publish does not serialize every extruder's value (same slot-masking as the material side). + const std::set<std::string> &printer_keys = publishable_printer_keys(); + for (const std::string &key : published_keys) { + const std::string base_key = publish_base_key(key); + if (base_key.empty()) + continue; + base_keys_to_include.insert(base_key); + if (printer_keys.count(base_key) != 0) { + const int variant_idx = publish_variant_index(key, base_key); + if (variant_idx >= 0) + slot_mask_map[base_key].insert(variant_idx); + else + mask_exempt_keys.insert(base_key); // bare printer key or malformed variant: whole vector + } else { + mask_exempt_keys.insert(base_key); // process key: whole vector + } + } + + // 4. Material-specific published keys. Both partial (entry.keys) and full-publish + // (entry.full_keys) entries mask to the author's slot on export (see the copy loop below); + // slot-less entries (hand-crafted files) stay unmasked (whole vector). + for (const PublishedMaterialEntry &entry : material_keys) { + for (const std::string &key : entry.keys) { + const std::string base_key = publish_base_key(key); + if (base_key.empty()) + continue; + base_keys_to_include.insert(base_key); + if (entry.slot >= 0) + slot_mask_map[base_key].insert(entry.slot); + } + for (const std::string &key : entry.full_keys) { + const std::string base_key = publish_base_key(key); + if (base_key.empty()) + continue; + base_keys_to_include.insert(base_key); + if (entry.slot >= 0) + slot_mask_map[base_key].insert(entry.slot); + } + } + + // Masking restores every non-published slot of a vector option with the option default, so + // a partial publish does not leak unrelated slot data. can_mask_slots reports whether a key + // is maskable at all (vector option plus a registered default of the same type); an + // unmaskable key is dropped from the payload entirely instead of shipping the author's + // whole vector. + auto can_mask_slots = [](const ConfigOption &opt, const ConfigOptionDef *def) -> bool { + if (def == nullptr || !def->default_value || def->default_value->type() != opt.type()) + return false; + const auto *vec = dynamic_cast<const ConfigOptionVectorBase *>(&opt); + const auto *default_vec = dynamic_cast<const ConfigOptionVectorBase *>(def->default_value.get()); + return vec != nullptr && vec->size() > 0 && default_vec != nullptr && !default_vec->empty(); + }; + auto mask_slots = [](ConfigOption &opt, const ConfigOptionDef *def, const std::set<int> &keep_slots) { + auto *vec = dynamic_cast<ConfigOptionVectorBase*>(&opt); + for (size_t idx = 0; idx < vec->size(); ++idx) + if (keep_slots.count(static_cast<int>(idx)) == 0) + vec->set_at(def->default_value.get(), idx, 0); + }; + + // Copy the selected options from full_config into the filtered config. + for (const std::string &key : base_keys_to_include) { + const ConfigOption *opt = full_config.option(key); + if (opt == nullptr) + continue; + const auto mask_it = slot_mask_map.find(key); + const bool needs_masking = mask_exempt_keys.count(key) == 0 && mask_it != slot_mask_map.end() && !mask_it->second.empty(); + if (needs_masking && !can_mask_slots(*opt, print_config_def.get(key))) { + BOOST_LOG_TRIVIAL(warning) << "publish: dropping unmaskable key \"" << key + << "\" from the published payload (no usable option default)"; + continue; + } + ConfigOption *cloned = opt->clone(); + if (needs_masking) + mask_slots(*cloned, print_config_def.get(key), mask_it->second); + filtered.set_key_value(key, cloned); + } + + return filtered; +} + +} // namespace Slic3r diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp new file mode 100644 index 0000000000..60ea9a8354 --- /dev/null +++ b/src/libslic3r/PublishSettings.hpp @@ -0,0 +1,99 @@ +#pragma once +#include <set> +#include <string> +#include <vector> + +namespace Slic3r { +class PresetBundle; + +// Strip a trailing "#N" variant suffix ("retraction_length#2" -> "retraction_length"). +std::string publish_base_key(const std::string &key); + +// Structural keys that are never applied onto the receiver's presets when loading a published +// 3MF (single source of truth for the denylist); applying them would rewrite the user's preset +// inheritance/structure. filament_ids is still exported via the identity list (3MF validation +// needs it) - exported, never applied. +const std::set<std::string>& publish_structural_keys(); + +// The mixed-color filament project keys (parallel per-slot arrays, see PresetBundle's +// s_project_options). Import applies them into project_config, not a filament preset. +const std::set<std::string>& publish_mixed_keys(); + +// One row of the printer tab's "Retraction" / "Z-Hop" optgroups (config key + tab icon id). +struct PublishablePrinterOption { + const char *key; // config key, e.g. "retraction_length" + const char *icon; // tab icon id, e.g. "printer_extruder_retraction#length" +}; + +// The printer tab's "Retraction" / "Z-Hop" optgroup options, in tab order. +const std::vector<PublishablePrinterOption>& publishable_printer_retraction_options(); +const std::vector<PublishablePrinterOption>& publishable_printer_z_hop_options(); + +// Union of the two optgroup option lists; printer keys apply on import only if their base +// key is in this allowlist. +const std::set<std::string>& publishable_printer_keys(); + +// Union of setting keys differing from the base/system preset across the current print, +// printer and filament presets (feeds the Publish dialog's pre-check). +std::vector<std::string> collect_dirty_settings_keys(const PresetBundle& bundle); + +// Per-slot published material keys, applied positionally (author slot N -> receiver slot N). +// The identity fields drive the created copy's naming and grouping on Full entries, the +// notification labels, and the partial type gate (publish_type) is the author's explicit +// opt-in for requiring a material type. +struct PublishedMaterialEntry { + std::string filament_type; // material family, e.g. "PLA" (may be empty) + std::string filament_vendor; // e.g. "Generic", "Bambu" (may be empty) + std::string filament_id; // stable material id, e.g. "GFL99" (may be empty) + // Unique preset id of the author's slot preset (e.g. Orca Filament Library "setting_id"). + // Not matched against the receiver's library; carried so identical Full entries within one + // load share one created instance (within-load dedup key). + std::string setting_id; + // Canonical name of the author's slot preset (e.g. "Generic PLA @System"). On Full import + // it names the created copy after its "@variant" tail is stripped; never matched against + // the receiver's library. + std::string preset_name; + // 0-based author filament slot; -1 (hand-crafted files) is skipped. + int slot{-1}; + std::vector<std::string> keys; + // "Full Publish": the whole filament preset (full_keys) is published. On the receiver Full + // Publish always creates a standalone parentless copy (libslic3r's "Detach from parent"), + // universally compatible and project-embedded only - never written to the user's library. + // Identical Full entries within one load share one created instance (within-load dedup). + bool full{false}; + // All non-structural filament keys of the author's slot preset; values travel in the file + // config, masked to the author's slot index. + std::vector<std::string> full_keys; + // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on a + // partial entry's mismatch the slot is replaced with a same-type filament. Full entries + // consult no gate. + bool publish_type{false}; + std::string publish_type_value; + // Required filament colour, applied on load regardless of the type match. + bool publish_color{false}; + std::string color; + // Import-side only, never serialized: the authored slot sits past the receiver's physical + // capacity, so the entry is appended as an empty mixed-filament placeholder (virtual tail + // slot; the GUI flags it for the user to assign components). + bool mixed_placeholder{false}; +}; + +// "PLA High Speed" -> "PLA" (strip a space modifier); dash types like "PA-CF" are kept intact. +std::string normalize_filament_type(const std::string& type); + +class DynamicPrintConfig; +// Clear the compatibility lists/conditions on a filament config so it is universally +// compatible once detached (empty lists + empty conditions = compatible with everything). +void make_publish_universal(DynamicPrintConfig &config); + +// Naming base for a detached published-material copy: "Generic PLA @System" -> "Generic PLA" +// (truncate/right-trim at the first '@' tail). Empty result means "fall back to identity". +std::string publish_material_base_name(const std::string &preset_name); + +// Minimal DynamicPrintConfig for a published 3MF export: only the selected published keys, +// material keys, identity fields and plate geometry keys. +DynamicPrintConfig filter_published_config( + const DynamicPrintConfig &full_config, + const std::vector<std::string> &published_keys, + const std::vector<PublishedMaterialEntry> &material_keys); +} diff --git a/src/libslic3r/SLA/Hollowing.cpp b/src/libslic3r/SLA/Hollowing.cpp index df62127770..f50cdbced2 100644 --- a/src/libslic3r/SLA/Hollowing.cpp +++ b/src/libslic3r/SLA/Hollowing.cpp @@ -1,4 +1,5 @@ #include <functional> +#include <numeric> #include <optional> #include <libslic3r/OpenVDBUtils.hpp> diff --git a/src/libslic3r/SLA/Hollowing.hpp b/src/libslic3r/SLA/Hollowing.hpp index b57513fe72..f6beaadb24 100644 --- a/src/libslic3r/SLA/Hollowing.hpp +++ b/src/libslic3r/SLA/Hollowing.hpp @@ -44,9 +44,6 @@ struct DrainHole : pos(p), normal(n), radius(r), height(h), failed(fl) {} - DrainHole(const DrainHole& rhs) : - DrainHole(rhs.pos, rhs.normal, rhs.radius, rhs.height, rhs.failed) {} - bool operator==(const DrainHole &sp) const; bool operator!=(const DrainHole &sp) const { return !(sp == (*this)); } diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 15640cb0f2..e734608803 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -65,11 +65,13 @@ std::pair<SupportGeneratorLayersPtr, SupportGeneratorLayersPtr> generate_interfa const bool smooth_supports = support_params.support_style != smsGrid; SupportGeneratorLayersPtr &interface_layers = base_and_interface_layers.first; SupportGeneratorLayersPtr &base_interface_layers = base_and_interface_layers.second; - // The user-facing interface layer counts include the contact layer. Internally, - // contact layers are generated separately, so only the remaining layers are - // projected into intermediate interface/base-interface layers here. - const size_t num_top_interface_layers = support_params.has_top_contacts ? support_params.num_top_interface_layers - 1 : 0; - const size_t num_bottom_interface_layers = support_params.has_bottom_contacts ? support_params.num_bottom_interface_layers - 1 : 0; + // Contacts printed separately consume one requested interface layer. Organic + // bottom contacts are projection seeds and are not printed separately. + const bool organic_tree = support_params.support_style == smsTreeOrganic; + const size_t num_top_interface_layers = support_params.has_top_contacts ? + support_params.num_top_interface_layers - 1 : 0; + const size_t num_bottom_interface_layers = support_params.has_bottom_contacts ? + support_params.num_bottom_interface_layers - (organic_tree ? 0 : 1) : 0; const size_t num_top_base_interface_layers = std::min(support_params.num_top_base_interface_layers, num_top_interface_layers); const size_t num_bottom_base_interface_layers = std::min(support_params.num_bottom_base_interface_layers, num_bottom_interface_layers); const size_t num_top_interface_layers_only = num_top_interface_layers - num_top_base_interface_layers; @@ -132,7 +134,7 @@ std::pair<SupportGeneratorLayersPtr, SupportGeneratorLayersPtr> generate_interfa return nullptr; }; tbb::parallel_for(tbb::blocked_range<int>(0, int(intermediate_layers.size())), - [&bottom_contacts, &top_contacts, &top_interface_layers, &top_base_interface_layers, &intermediate_layers, &insert_layer, &support_params, + [&bottom_contacts, &top_contacts, &top_interface_layers, &top_base_interface_layers, &intermediate_layers, &insert_layer, num_top_interface_layers, num_bottom_interface_layers, num_top_base_interface_layers, num_bottom_base_interface_layers, num_top_interface_layers_only, num_bottom_interface_layers_only, snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range<int>& range) { @@ -1234,10 +1236,6 @@ static void modulate_extrusion_by_overlapping_layers( (fragment_end.is_start ? &polyline.points.front() : &polyline.points.back()); } private: - ExtrusionPathFragmentEndPointAccessor& operator=(const ExtrusionPathFragmentEndPointAccessor&) { - return *this; - } - const std::vector<ExtrusionPathFragment> &m_path_fragments; }; const coord_t search_radius = 7; @@ -1656,28 +1654,32 @@ void generate_support_toolpaths( if (top_contact_layer.could_merge(interface_layer) && ! raft_layer) top_contact_layer.merge(std::move(interface_layer)); } - if (!bottom_interfaces && support_params.can_merge_support_regions) { - if (base_layer.could_merge(bottom_contact_layer)) - base_layer.merge(std::move(bottom_contact_layer)); - else if (base_layer.empty() && ! bottom_contact_layer.empty() && ! bottom_contact_layer.layer->bridging) - base_layer = std::move(bottom_contact_layer); - } else if (bottom_contact_layer.could_merge(top_contact_layer) && ! raft_layer) { - if (top_interfaces && bottom_interfaces) { - top_contact_layer.merge(std::move(bottom_contact_layer)); - } else if (bottom_interfaces) { - top_contact_layer.set_polygons_to_extrude( - diff(top_contact_layer.polygons_to_extrude(), bottom_contact_layer.polygons_to_extrude())); - } else { - bottom_contact_layer.set_polygons_to_extrude( - diff(bottom_contact_layer.polygons_to_extrude(), top_contact_layer.polygons_to_extrude())); - } - } else if (bottom_contact_layer.could_merge(interface_layer) && ! organic_tree) { - const bool interface_layer_is_bottom = interface_layer.layer->layer_type == SupporLayerType::BottomInterface; - if (bottom_interfaces && interface_layer_is_bottom) { - bottom_contact_layer.merge(std::move(interface_layer)); - } else { - bottom_contact_layer.set_polygons_to_extrude( - diff(bottom_contact_layer.polygons_to_extrude(), interface_layer.polygons_to_extrude())); + // Orca: Organic bottom contacts are projection seeds, not same-layer toolpaths. + // Do not merge them into another same-layer support region. + if (!organic_tree) { + if (!bottom_interfaces && support_params.can_merge_support_regions) { + if (base_layer.could_merge(bottom_contact_layer)) + base_layer.merge(std::move(bottom_contact_layer)); + else if (base_layer.empty() && ! bottom_contact_layer.empty() && ! bottom_contact_layer.layer->bridging) + base_layer = std::move(bottom_contact_layer); + } else if (bottom_contact_layer.could_merge(top_contact_layer) && ! raft_layer) { + if (top_interfaces && bottom_interfaces) { + top_contact_layer.merge(std::move(bottom_contact_layer)); + } else if (bottom_interfaces) { + top_contact_layer.set_polygons_to_extrude( + diff(top_contact_layer.polygons_to_extrude(), bottom_contact_layer.polygons_to_extrude())); + } else { + bottom_contact_layer.set_polygons_to_extrude( + diff(bottom_contact_layer.polygons_to_extrude(), top_contact_layer.polygons_to_extrude())); + } + } else if (bottom_contact_layer.could_merge(interface_layer)) { + const bool interface_layer_is_bottom = interface_layer.layer->layer_type == SupporLayerType::BottomInterface; + if (bottom_interfaces && interface_layer_is_bottom) { + bottom_contact_layer.merge(std::move(interface_layer)); + } else { + bottom_contact_layer.set_polygons_to_extrude( + diff(bottom_contact_layer.polygons_to_extrude(), interface_layer.polygons_to_extrude())); + } } } diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index cd60489e75..a955eb5ca7 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -333,8 +333,7 @@ PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object m_print_config (&object->print()->config()), m_object_config (&object->config()), m_slicing_params (slicing_params), - m_support_params (*object), - m_object (object) + m_support_params (*object) { } @@ -1588,7 +1587,7 @@ static inline std::tuple<Polygons, Polygons, double> detect_contacts( // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. auto slices_margin_update = - [&slices_margin, &layer, &lower_layer, &lower_layer_polygons, buildplate_only, has_enforcer, &annotations, layer_id] + [&slices_margin, &lower_layer, &lower_layer_polygons, buildplate_only, has_enforcer, &annotations, layer_id] (float slices_margin_offset, float no_interface_offset) { if (slices_margin.offset != slices_margin_offset) { slices_margin.offset = slices_margin_offset; diff --git a/src/libslic3r/Support/SupportMaterial.hpp b/src/libslic3r/Support/SupportMaterial.hpp index 50b8256c4a..6d5355dab1 100644 --- a/src/libslic3r/Support/SupportMaterial.hpp +++ b/src/libslic3r/Support/SupportMaterial.hpp @@ -86,7 +86,6 @@ private: */ // Following objects are not owned by SupportMaterial class. - const PrintObject *m_object; const PrintConfig *m_print_config; const PrintObjectConfig *m_object_config; // Pre-calculated parameters shared between the object slicer and the support generator, diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index dc0e94ed03..8d43edb444 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -141,6 +141,8 @@ struct SupportParameters { this->contact_fill_pattern = ipGrid; else if (object_config.support_interface_pattern == smipRectilinearInterlaced) this->contact_fill_pattern = ipRectilinear; + else if (object_config.support_interface_pattern == smipSpiralInset) + this->contact_fill_pattern = ipSpiralInset; else this->contact_fill_pattern = (object_config.support_interface_pattern == smipAuto && zero_gap_contact_interface) || diff --git a/src/libslic3r/Support/TreeModelVolumes.cpp b/src/libslic3r/Support/TreeModelVolumes.cpp index 7a769c77d1..70c33aab0d 100644 --- a/src/libslic3r/Support/TreeModelVolumes.cpp +++ b/src/libslic3r/Support/TreeModelVolumes.cpp @@ -32,7 +32,7 @@ namespace Slic3r::TreeSupport3D using namespace std::literals; // or warning -// had to use a define beacuse the macro processing inside macro BOOST_LOG_TRIVIAL() +// had to use a define because the macro processing inside macro BOOST_LOG_TRIVIAL() #define error_level_not_in_cache debug //FIXME Machine border is currently ignored. diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index de08870216..519b6e826e 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2667,7 +2667,7 @@ void TreeSupport::drop_nodes() SupportNode::diameter_angle_scale_factor = diameter_angle_scale_factor; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm - auto get_max_move_dist = [this, &config, tan_angle, wall_count, support_extrusion_width](const SupportNode *node, int power = 1) { + auto get_max_move_dist = [this, tan_angle, support_extrusion_width](const SupportNode *node, int power = 1) { if (node->max_move_dist == 0) { node->radius = get_radius(node); node->max_move_dist = std::min(tan_angle * node->height, support_extrusion_width); @@ -2846,7 +2846,9 @@ void TreeSupport::drop_nodes() const MinimumSpanningTree& mst = spanning_trees[group_index]; //In the first pass, merge all nodes that are close together. std::vector<std::pair<const Point, SupportNode*>> nodes_vec(nodes_this_part.begin(), nodes_this_part.end()); - tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair<const Point, SupportNode*>& entry) { + // Sequential: nodes merge into and invalidate each other in place, so parallel execution + // makes the merge order (and thus the result) depend on thread scheduling. + std::for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair<const Point, SupportNode*>& entry) { SupportNode* p_node = entry.second; SupportNode& node = *p_node; if (!p_node->valid) @@ -2934,7 +2936,32 @@ void TreeSupport::drop_nodes() ); //In the second pass, move all middle nodes. - tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair<const Point, SupportNode*>& entry) { + // Still parallel: this pass only reads other nodes. Side effects (invalidation, new + // nodes, contact_nodes/unsupported_branch_leaves updates) are recorded per node and + // applied afterwards in node order. Node creation must be deferred too, since + // SupportNode's constructor writes `parent->child = this` on other nodes. + struct PendingNode { + Point position; + int distance_to_top = 0; + int support_roof_layers_below = 0; + bool to_buildplate = false; + SupportNode *parent = nullptr; + bool zero_max_move = false; + bool has_overhang = false; + ExPolygon overhang; + bool clamp_radius = false; + coordf_t parent_radius = 0; + double dist_to_outer = 0; + }; + struct PassTwoResult { + bool invalidate = false; + bool unsupported_leaf = false; + std::vector<PendingNode> pending; + }; + std::vector<PassTwoResult> pass2_results(nodes_vec.size()); + auto pass2_body = [&](size_t node_idx) { + const std::pair<const Point, SupportNode*>& entry = nodes_vec[node_idx]; + PassTwoResult& pass2_out = pass2_results[node_idx]; SupportNode* p_node = entry.second; const SupportNode& node = *p_node; @@ -2949,14 +2976,16 @@ void TreeSupport::drop_nodes() ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision(0, obj_layer_nr_next)); for(auto& overhang:overhangs_next) { Point next_pt = overhang.contour.centroid(); - SupportNode *next_node = m_ts_data->create_node(next_pt, p_node->distance_to_top + 1, obj_layer_nr_next, - p_node->support_roof_layers_below - (p_node->distance_to_top >= 0 ? 1 : 0), - to_buildplate, p_node, print_z_next, height_next); - next_node->max_move_dist = 0; - next_node->overhang = std::move(overhang); - m_ts_data->m_mutex.lock(); - contact_nodes[layer_nr_next].emplace_back(next_node); - m_ts_data->m_mutex.unlock(); + PendingNode pending; + pending.position = next_pt; + pending.distance_to_top = p_node->distance_to_top + 1; + pending.support_roof_layers_below = p_node->support_roof_layers_below - (p_node->distance_to_top >= 0 ? 1 : 0); + pending.to_buildplate = to_buildplate; + pending.parent = p_node; + pending.zero_max_move = true; + pending.has_overhang = true; + pending.overhang = std::move(overhang); + pass2_out.pending.emplace_back(std::move(pending)); } return; @@ -2973,17 +3002,17 @@ void TreeSupport::drop_nodes() { if (support_on_buildplate_only) { - unsupported_branch_leaves.push_front({ layer_nr, p_node }); + pass2_out.unsupported_leaf = true; } else { - p_node->valid = false; + pass2_out.invalidate = true; } return; } // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { - p_node->valid = false; + pass2_out.invalidate = true; return; } } @@ -3096,20 +3125,47 @@ void TreeSupport::drop_nodes() } auto next_collision = get_collision(0, obj_layer_nr_next); const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[obj_layer_nr_next], next_layer_vertex); - SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, obj_layer_nr_next, - node.support_roof_layers_below - (node.distance_to_top >= 0 ? 1 : 0), - to_buildplate, p_node, print_z_next, height_next); // don't increase radius if next node will collide partially with the object (STUDIO-7883) - to_outside = projection_onto(next_collision, next_node->position); + to_outside = projection_onto(next_collision, next_layer_vertex); direction_to_outer = to_outside - node.position; double dist_to_outer = unscale_(direction_to_outer.cast<double>().norm()); - next_node->radius = std::max(node.radius, std::min(next_node->radius, dist_to_outer)); - get_max_move_dist(next_node); - m_ts_data->m_mutex.lock(); - contact_nodes[layer_nr_next].push_back(next_node); - m_ts_data->m_mutex.unlock(); + PendingNode pending; + pending.position = next_layer_vertex; + pending.distance_to_top = node.distance_to_top + 1; + pending.support_roof_layers_below = node.support_roof_layers_below - (node.distance_to_top >= 0 ? 1 : 0); + pending.to_buildplate = to_buildplate; + pending.parent = p_node; + pending.clamp_radius = true; + pending.parent_radius = node.radius; + pending.dist_to_outer = dist_to_outer; + pass2_out.pending.emplace_back(std::move(pending)); + }; + tbb::parallel_for(tbb::blocked_range<size_t>(0, nodes_vec.size()), + [&pass2_body](const tbb::blocked_range<size_t>& node_range) { + for (size_t node_idx = node_range.begin(); node_idx < node_range.end(); ++ node_idx) + pass2_body(node_idx); + }); + // Apply the recorded side effects in node order. + for (size_t node_idx = 0; node_idx < nodes_vec.size(); ++ node_idx) { + PassTwoResult& pass2_out = pass2_results[node_idx]; + for (PendingNode& pending : pass2_out.pending) { + SupportNode* next_node = m_ts_data->create_node(pending.position, pending.distance_to_top, obj_layer_nr_next, + pending.support_roof_layers_below, pending.to_buildplate, pending.parent, print_z_next, height_next); + if (pending.zero_max_move) + next_node->max_move_dist = 0; + if (pending.has_overhang) + next_node->overhang = std::move(pending.overhang); + if (pending.clamp_radius) { + next_node->radius = std::max(pending.parent_radius, std::min(next_node->radius, pending.dist_to_outer)); + get_max_move_dist(next_node); + } + contact_nodes[layer_nr_next].push_back(next_node); + } + if (pass2_out.unsupported_leaf) + unsupported_branch_leaves.push_front({ layer_nr, nodes_vec[node_idx].second }); + if (pass2_out.invalidate) + nodes_vec[node_idx].second->valid = false; } - ); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index e0446ad5f1..bd5a154e26 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -204,8 +204,9 @@ public: clear_nodes(); } - TreeSupportData(TreeSupportData&&) = default; - TreeSupportData& operator=(TreeSupportData&&) = default; + // Deleted by the tbb::spin_mutex member. + TreeSupportData(TreeSupportData&&) = delete; + TreeSupportData& operator=(TreeSupportData&&) = delete; TreeSupportData(const TreeSupportData&) = delete; TreeSupportData& operator=(const TreeSupportData&) = delete; @@ -431,7 +432,6 @@ private: size_t m_highest_overhang_layer = 0; std::vector<std::vector<MinimumSpanningTree>> m_spanning_trees; std::vector< std::unordered_map<Line, bool, LineHash>> m_mst_line_x_layer_contour_caches; - float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t base_radius = 0.0; const coordf_t MAX_BRANCH_RADIUS = 10.0; const coordf_t MIN_BRANCH_RADIUS = 0.4; diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 29131502d2..3cd3f4110d 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -2382,13 +2382,10 @@ static void merge_influence_areas( size_t num_buckets_initial; { // How many buckets per first merge iteration? - const size_t num_threads = tbb::this_task_arena::max_concurrency(); - // 4 buckets per thread if possible, - const size_t num_buckets_min = (input_size + 2) / 4; - // 2 buckets per thread otherwise. - const size_t num_buckets_max = input_size / 2; - num_buckets_initial = num_buckets_min >= num_threads ? num_buckets_min : num_buckets_max; - const size_t bucket_size = num_buckets_min >= num_threads ? 4 : 2; + // Fixed at 4: merging is not associative, so sizing buckets off max_concurrency() made + // results depend on the core count of the slicing machine. + const size_t bucket_size = 4; + num_buckets_initial = (input_size + 2) / 4; // Fill in the buckets. SupportElementMerging *it = influence_areas.data(); // Reserve one more bucket to keep a single influence area which will not be merged in the first iteration. diff --git a/src/libslic3r/TriangleMeshSlicer.cpp b/src/libslic3r/TriangleMeshSlicer.cpp index 417ca354d3..4ff18165cb 100644 --- a/src/libslic3r/TriangleMeshSlicer.cpp +++ b/src/libslic3r/TriangleMeshSlicer.cpp @@ -12,6 +12,7 @@ #include <deque> #include <queue> #include <mutex> +#include <tuple> #include <utility> #include <boost/log/trivial.hpp> @@ -607,6 +608,17 @@ static inline std::vector<IntersectionLines> slice_make_lines( } } ); + // Facet processing above is parallel, so per-layer line order depends on thread scheduling, + // and make_loops() derives island order and loop start vertices from it. Sort canonically; + // edge_type and flags only break ties, std::sort being unstable. + tbb::parallel_for(tbb::blocked_range<size_t>(0, lines.size()), + [&lines](const tbb::blocked_range<size_t> &range) { + for (size_t i = range.begin(); i < range.end(); ++ i) + std::sort(lines[i].begin(), lines[i].end(), [](const IntersectionLine &l, const IntersectionLine &r) { + return std::make_tuple(l.edge_a_id, l.edge_b_id, l.a_id, l.b_id, l.a.x(), l.a.y(), l.b.x(), l.b.y(), l.edge_type, l.flags) < + std::make_tuple(r.edge_a_id, r.edge_b_id, r.a_id, r.b_id, r.a.x(), r.a.y(), r.b.x(), r.b.y(), r.edge_type, r.flags); + }); + }); return lines; } diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 55d9b716cf..797894442a 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -255,6 +255,10 @@ extern bool is_gallery_file(const std::string& path, char const* type); extern bool is_shapes_dir(const std::string& dir); //BBS: add json support extern bool is_json_file(const std::string& path); +// True if rel_path is relative, has no ".." component and, joined to root, still resolves inside it. +// Both '/' and '\\' are treated as separators on every platform, so an archive rejected on one OS +// is rejected on all of them. +extern bool is_path_within_root(const std::string &rel_path, const boost::filesystem::path &root); // Orca: custom protocal support utils inline bool is_orca_open(const std::string& url) { return boost::starts_with(url, "orcaslicer://open"); } diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 10fa9653eb..3c2981d822 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -28,9 +28,9 @@ std::string CalibPressureAdvance::move_to(Vec2d pt, GCodeWriter &writer, std::st gcode << writer.retract(); // retract before z move or move if(z > EPSILON && layer_height >= 0){ - gcode << writer.travel_to_z(z, "z-hop"); // Perform z hop + gcode << writer.travel_to_z(z, "Z-hop"); // Perform z hop gcode << writer.travel_to_xy(pt, comment); // Travel with z move - gcode << writer.travel_to_z(layer_height, "undo z-hop"); // Undo z hop + gcode << writer.travel_to_z(layer_height, "undo Z-hop"); // Undo z hop }else { gcode << writer.travel_to_xy(pt, comment); } diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index ed0f76ee86..abca5e79dc 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -91,29 +91,15 @@ class CaliPresetInfo { public: int tray_id; - int extruder_id; - NozzleVolumeType nozzle_volume_type; - BedType bed_type; + int extruder_id = 0; + NozzleVolumeType nozzle_volume_type{nvtStandard}; + BedType bed_type{btDefault}; float nozzle_diameter; int nozzle_pos_id{-1}; std::string nozzle_sn; std::string filament_id; std::string setting_id; std::string name; - - CaliPresetInfo &operator=(const CaliPresetInfo &other) - { - this->tray_id = other.tray_id; - this->extruder_id = other.extruder_id; - this->nozzle_volume_type = other.nozzle_volume_type; - this->nozzle_diameter = other.nozzle_diameter; - this->nozzle_pos_id = other.nozzle_pos_id; - this->nozzle_sn = other.nozzle_sn; - this->filament_id = other.filament_id; - this->setting_id = other.setting_id; - this->name = other.name; - return *this; - } }; struct PrinterCaliInfo diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 6584566f40..c339da566a 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -93,6 +93,9 @@ static constexpr double INSET_OVERLAP_TOLERANCE = 0.4; static constexpr double EXTERNAL_INFILL_MARGIN = 3; static constexpr double BRIDGE_INFILL_MARGIN = 1; static constexpr double WIPE_TOWER_MARGIN = 1.; +// Margin for system placement of the wipe tower (defaults, re-placement, CLI). Positions +// within WIPE_TOWER_MARGIN stay valid: a user drag down to that limit is respected. +static constexpr double WIPE_TOWER_AUTO_MARGIN = 15.; //FIXME Better to use an inline function with an explicit return type. //inline coord_t scale_(coordf_t v) { return coord_t(floor(v / SCALING_FACTOR + 0.5f)); } #define scale_(val) ((val) / SCALING_FACTOR) diff --git a/src/libslic3r/libslic3r_version.h.in b/src/libslic3r/libslic3r_version.h.in index 750e092d28..df83e813c9 100644 --- a/src/libslic3r/libslic3r_version.h.in +++ b/src/libslic3r/libslic3r_version.h.in @@ -5,9 +5,6 @@ #define SLIC3R_APP_KEY "@SLIC3R_APP_KEY@" #define SLIC3R_VERSION "@SLIC3R_VERSION@" #define SoftFever_VERSION "@SoftFever_VERSION@" -#ifndef GIT_COMMIT_HASH - #define GIT_COMMIT_HASH "0000000" // 0000000 means uninitialized -#endif #define SLIC3R_BUILD_ID "@SLIC3R_BUILD_ID@" //#define SLIC3R_RC_VERSION "@SLIC3R_VERSION@" #define BBL_INTERNAL_TESTING @BBL_INTERNAL_TESTING@ diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 58ec8318a6..58323b29ce 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -310,7 +310,11 @@ void set_data_dir(const std::string &dir) { g_data_dir = dir; if (!g_data_dir.empty() && !boost::filesystem::exists(g_data_dir)) { - boost::filesystem::create_directory(g_data_dir); + try { + boost::filesystem::create_directories(g_data_dir); + } catch (const boost::filesystem::filesystem_error &ex) { + BOOST_LOG_TRIVIAL(error) << "set_data_dir: failed to create data directory " << g_data_dir << ": " << ex.what(); + } } } @@ -957,7 +961,7 @@ CopyFileResult copy_file(const std::string &from, const std::string &to, std::st BOOL result = CopyFileW(src_wstr, dst_wstr, FALSE); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } @@ -1084,6 +1088,30 @@ bool is_json_file(const std::string& path) return boost::iends_with(path, ".json"); } +bool is_path_within_root(const std::string &rel_path, const boost::filesystem::path &root) +{ + auto is_separator = [](char c) { return c == '/' || c == '\\'; }; + if (rel_path.empty() || is_separator(rel_path.front()) || (rel_path.size() > 1 && rel_path[1] == ':')) + return false; + for (size_t start = 0; start <= rel_path.size();) { + size_t end = start; + while (end < rel_path.size() && !is_separator(rel_path[end])) + ++end; + if (rel_path.compare(start, end - start, "..") == 0) + return false; + start = end + 1; + } + // Resolve against the canonical root so a symlink inside it cannot lead back out. + try { + const std::string root_str = boost::filesystem::weakly_canonical(root).string(); + const std::string full_str = boost::filesystem::weakly_canonical(root / rel_path).string(); + return full_str.compare(0, root_str.size(), root_str) == 0 && + (full_str.size() == root_str.size() || full_str[root_str.size()] == boost::filesystem::path::preferred_separator); + } catch (const boost::filesystem::filesystem_error &) { + return false; + } +} + bool is_img_file(const std::string &path) { return boost::iends_with(path, ".png") || boost::iends_with(path, ".svg"); diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 140b1cec39..691675a452 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -63,6 +63,8 @@ set(SLIC3R_GUI_SOURCES GUI/BitmapComboBox.hpp GUI/BonjourDialog.cpp GUI/BonjourDialog.hpp + GUI/BuildCommit.cpp + GUI/BuildCommit.hpp GUI/CrealityDiscoveryDialog.cpp GUI/CrealityDiscoveryDialog.hpp GUI/calib_dlg.cpp @@ -95,6 +97,8 @@ set(SLIC3R_GUI_SOURCES GUI/CloneDialog.hpp GUI/ConfigManipulation.cpp GUI/ConfigManipulation.hpp + GUI/ConfigValueFormatter.cpp + GUI/ConfigValueFormatter.hpp GUI/ConfigWizard.cpp GUI/ConfigWizard.hpp GUI/ConfigWizard_private.hpp @@ -449,6 +453,8 @@ set(SLIC3R_GUI_SOURCES GUI/Project.hpp GUI/PublishDialog.cpp GUI/PublishDialog.hpp + GUI/PublishSettingsDialog.cpp + GUI/PublishSettingsDialog.hpp GUI/PurgeModeDialog.cpp GUI/PurgeModeDialog.hpp GUI/RammingChart.cpp @@ -845,6 +851,18 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SLIC3R_GUI_SOURCES}) encoding_check(libslic3r_gui) +# Only BuildCommit.cpp includes the generated header, plus BaseException.cpp on +# Windows. Both build into libslic3r_gui, so the header only has to exist before +# that target builds. +set(_git_commit_hash_header "${CMAKE_CURRENT_BINARY_DIR}/git_commit_hash.h") +add_custom_target(git_commit_hash_header + BYPRODUCTS "${_git_commit_hash_header}" + COMMAND ${CMAKE_COMMAND} + "-DSOURCE_DIR=${CMAKE_SOURCE_DIR}" + "-DOUT_FILE=${_git_commit_hash_header}" + -P "${CMAKE_CURRENT_LIST_DIR}/GitCommitHash.cmake" + COMMENT "Resolving the git commit hash") +add_dependencies(libslic3r_gui git_commit_hash_header) if(APPLE AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.0") set(_opengl_link_lib "") @@ -902,6 +920,9 @@ endif () if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r_gui pchheader.hpp FORCEINCLUDE) +elseif (MSVC) + # Puts the Windows headers first when the PCH is off. + target_compile_options(libslic3r_gui PRIVATE "/FIslic3r/win_platform.hpp") endif () if (APPLE) @@ -967,10 +988,6 @@ endif () # Add a definition so that we can tell we are compiling slic3r. target_compile_definitions(libslic3r_gui PRIVATE SLIC3R_CURRENTLY_COMPILING_GUI_MODULE) -if(ORCA_BUNDLED_UV_EXECUTABLE_CONFIG) - target_compile_definitions(libslic3r_gui PRIVATE "ORCA_BUNDLED_UV_EXECUTABLE=\"${ORCA_BUNDLED_UV_EXECUTABLE_CONFIG}\"") -endif() - if (ORCA_BUILD_PYTHON_STUBGEN_MODULE) add_library(orca_stubgen MODULE plugin/PythonPluginBridge.cpp diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index f65c0e3532..6dbea1272a 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -20,6 +20,8 @@ #include "libslic3r/AppConfig.hpp" #include "libslic3r/PresetBundle.hpp" #include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/Tesselate.hpp" #include "libslic3r/PrintConfig.hpp" @@ -919,6 +921,21 @@ int GLVolumeCollection::load_wipe_tower_preview( GUI::PartPlateList& ppl = GUI::wxGetApp().plater()->get_partplate_list(); std::vector<int> plate_extruders = ppl.get_plate(plate_idx)->get_extruders(true); TriangleMesh wipe_tower_shell = make_cube(width, depth, height); + // The brim is part of the printed footprint: draw it and fold it into the shell so the + // outside-bed shader and the drag clamp react to the true first-layer extent. + const bool show_brim = brim_width > 0.f; + const float brim_height = 0.2f; // one first layer, visual only + TriangleMesh brim_slab; + if (show_brim) { + // The brim follows the real first-layer outline: a Type2 cone-wall tower's base bulges + // past the body box. The wall type and angle are print settings, the planner a printer one. + const DynamicPrintConfig &print_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig &printer_cfg = GUI::wxGetApp().preset_bundle->printers.get_edited_preset().config; + const Polygon outline = estimate_wipe_tower_first_layer_outline(print_cfg, resolve_wipe_tower_type(printer_cfg), width, depth, height); + const Polygons brim_outline = offset(outline, scaled(brim_width)); + brim_slab = WipeTower::its_make_rib_brim(brim_outline.empty() ? outline : brim_outline.front(), brim_height); + wipe_tower_shell.merge(brim_slab); + } for (int extruder_id : plate_extruders) { if (extruder_id <= extruder_colors.size()) colors.push_back(extruder_colors[extruder_id - 1]); @@ -929,14 +946,19 @@ int GLVolumeCollection::load_wipe_tower_preview( // Orca: make it transparent for(auto& color : colors) color.a(0.66f); + const size_t slab_count = colors.size(); // per-filament body slabs; the brim part comes after + if (show_brim && !colors.empty()) + colors.push_back(colors.front()); volumes.emplace_back(new GLWipeTowerVolume(colors)); GLWipeTowerVolume& v = *dynamic_cast<GLWipeTowerVolume*>(volumes.back()); v.model_per_colors.resize(colors.size()); - for (int i = 0; i < colors.size(); i++) { - TriangleMesh color_part = make_cube(width, depth / colors.size(), height); - color_part.translate({ 0.f, depth * i / colors.size(), 0. }); + for (size_t i = 0; i < slab_count; i++) { + TriangleMesh color_part = make_cube(width, depth / slab_count, height); + color_part.translate({ 0.f, depth * i / slab_count, 0. }); v.model_per_colors[i].init_from(color_part); } + if (show_brim && !colors.empty()) + v.model_per_colors[slab_count].init_from(brim_slab); v.model.init_from(wipe_tower_shell); v.mesh_raycaster = std::make_unique<GUI::MeshRaycaster>(std::make_shared<const TriangleMesh>(wipe_tower_shell)); v.set_convex_hull(wipe_tower_shell); diff --git a/src/slic3r/GUI/AMSDryControl.cpp b/src/slic3r/GUI/AMSDryControl.cpp index ddd3380975..c191e24eac 100644 --- a/src/slic3r/GUI/AMSDryControl.cpp +++ b/src/slic3r/GUI/AMSDryControl.cpp @@ -437,7 +437,7 @@ wxBoxSizer* AMSDryCtrWin::create_normal_state_panel(wxPanel* parent) m_temperature_input = new wxTextCtrl(parent, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(80), -1)); m_temperature_input->SetMaxLength(3); // Limit to 3 digits - m_temperature_input->Bind(wxEVT_CHAR, [this](wxKeyEvent& event) { + m_temperature_input->Bind(wxEVT_CHAR, [](wxKeyEvent& event) { int keycode = event.GetKeyCode(); if (keycode >= '0' && keycode <= '9') { event.Skip(); @@ -464,7 +464,7 @@ wxBoxSizer* AMSDryCtrWin::create_normal_state_panel(wxPanel* parent) m_time_input = new wxTextCtrl(parent, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(100), -1)); m_time_input->SetMaxLength(3); // Limit to 3 digits - m_time_input->Bind(wxEVT_CHAR, [this](wxKeyEvent& event) { + m_time_input->Bind(wxEVT_CHAR, [](wxKeyEvent& event) { int keycode = event.GetKeyCode(); if (keycode >= '0' && keycode <= '9') { event.Skip(); @@ -698,7 +698,7 @@ wxBoxSizer* AMSDryCtrWin::create_guide_info_section(wxPanel* parent) m_rotate_spool_toggle = new wxCheckBox(parent, wxID_ANY, ""); m_rotate_spool_toggle->SetValue(false); - m_rotate_spool_toggle->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& event) { + m_rotate_spool_toggle->Bind(wxEVT_CHECKBOX, [](wxCommandEvent& event) { bool is_checked = event.IsChecked(); // Add toggle behavior logic here }); @@ -1511,6 +1511,10 @@ void AMSDryCtrWin::update_filament_guide_info(DevAms* dev_ams) m_temperature_input->GetValue().ToLong(&input_temp); bool can_start = true; + // "GFA00" is Bambu's PLA id; GetFilamentDryingPreset is keyed by our OF ids. + auto* agent = wxGetApp().getAgent(); + const std::string pla_filament_id = agent ? agent->to_orca_filament_id("GFA00") : std::string("GFA00"); + int slot_count = 0, empty_count = 0; for (auto& tray_pair : dev_ams->GetTrays()) { if (!tray_pair.second) { @@ -1526,13 +1530,15 @@ void AMSDryCtrWin::update_filament_guide_info(DevAms* dev_ams) wxString filament_type = tray_pair.second->get_display_filament_type(); DevFilamentDryingPreset preset; if (filament_type.IsEmpty()) { - auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset("GFA00"); + auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset(pla_filament_id); + if (!fallback_preset) continue; // no PLA preset (e.g. the id map is missing): skip, don't throw preset = fallback_preset.value(); filament_type = "?"; } else if (preset_opt.has_value()) { preset = preset_opt.value(); } else { - auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset("GFA00"); + auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset(pla_filament_id); + if (!fallback_preset) continue; preset = fallback_preset.value(); } std::string icon_path = "dev_ams_dry_ctr_enable"; @@ -1594,39 +1600,21 @@ int AMSDryCtrWin::update_filament_list(DevAms* dev_ams, MachineObject* obj) } stream << std::fixed << std::setprecision(1) << obj->GetExtderSystem()->GetNozzleDiameter(extruder_id); std::string nozzle_diameter_str = stream.str(); - std::set<std::string> printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle( - DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str); - for (auto filament_it = filaments.begin(); filament_it != filaments.end(); ++filament_it) { - Preset& preset = *filament_it; - // Filter by system preset: root preset and (system preset or user preset is supported) - if (filaments.get_preset_base(*filament_it) != &preset || (!filament_it->is_system && !obj->is_support_user_preset)) { + for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine( + DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) { + if (!filament_id_set.insert(filament_it->filament_id).second) + continue; + const std::string filament_alias = filaments.get_preset_alias(*filament_it, true); + if (filament_alias.empty()) + continue; + auto opt_info = preset_bundle->get_filament_by_filament_id(filament_it->filament_id); + if (!opt_info.has_value()) continue; - } - ConfigOption * printer_opt = filament_it->config.option("compatible_printers"); - ConfigOptionStrings *printer_strs = dynamic_cast<ConfigOptionStrings *>(printer_opt); - if (!printer_strs) continue; - - for (auto printer_str : printer_strs->values) { - if (printer_names.find(printer_str) != printer_names.end()) { - if (filament_id_set.find(filament_it->filament_id) != filament_id_set.end()) { - continue; - } - - filament_id_set.insert(filament_it->filament_id); - auto filament_alias = filaments.get_preset_alias(*filament_it, true); - if (!filament_alias.empty()) { - auto opt_info = preset_bundle->get_filament_by_filament_id(filament_it->filament_id); - if (opt_info.has_value()) { - auto real_info = opt_info.value(); - real_info.filament_name = filament_alias; - m_tray_ids.push_back(std::move(real_info)); - m_trays_combo->Append(wxString::FromUTF8(filament_alias)); - } - } - } - } + opt_info->filament_name = filament_alias; + m_tray_ids.push_back(std::move(*opt_info)); + m_trays_combo->Append(wxString::FromUTF8(filament_alias)); } if (m_tray_ids.empty()) { @@ -1701,9 +1689,10 @@ int AMSDryCtrWin::update_filament_list(DevAms* dev_ams, MachineObject* obj) // Select recommended drying temperature and default filament float min_dry_temp = std::numeric_limits<float>::max(); - std::string default_filament_id = "GFA00"; + auto* agent = wxGetApp().getAgent(); + std::string default_filament_id = agent ? agent->to_orca_filament_id("GFA00") : std::string("GFA00"); // compared against m_tray_ids[i].filament_id (our OF ids) below bool has_ready = false; - const auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset("GFA00"); + const auto fallback_preset = DevUtilBackend::GetFilamentDryingPreset(default_filament_id); for (const auto& tray_pair : dev_ams->GetTrays()) { if (!tray_pair.second || !tray_pair.second->is_tray_info_ready()) continue; has_ready = true; diff --git a/src/slic3r/GUI/AMSDryControl.hpp b/src/slic3r/GUI/AMSDryControl.hpp index 46699650d6..223fe137e2 100644 --- a/src/slic3r/GUI/AMSDryControl.hpp +++ b/src/slic3r/GUI/AMSDryControl.hpp @@ -97,12 +97,6 @@ private: wxSimplebook* m_main_simplebook{nullptr}; wxPanel* m_original_page{nullptr}; - wxWindow* m_amswin{nullptr}; - wxBoxSizer* m_sizer_ams_items{nullptr}; - wxScrolledWindow* m_panel_prv_left {nullptr}; - wxScrolledWindow* m_panel_prv_right{nullptr}; - wxBoxSizer* m_sizer_prv_left{nullptr}; - wxBoxSizer* m_sizer_prv_right{nullptr}; // left panel related members ScalableBitmap m_humidity_image; diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 2e436e8462..68f1b44212 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -681,6 +681,19 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event) } + // Orca: log the tray payload this dialog hands the printer, so the filament_id resolved from the + // dropdown selection can be checked against the tray_info_idx the AMS actually receives. A + // BBL-tagged (RFID) tray is read-only here, so nothing is published for it. + BOOST_LOG_TRIVIAL(info) << "ams_materials_setting: " << (m_is_third ? "sending" : "NOT sending (BBL RFID tray, read-only)") + << ", ams_id = " << ams_id << ", slot_id = " << slot_id + << ", selected = " << m_comboBox_filament->GetValue().ToStdString() + << ", tray_info_idx (filament_id) = " << ams_filament_id + << ", setting_id = " << ams_setting_id + << ", tray_type = " << m_filament_type + << ", tray_color = " << col_buf + << ", nozzle_temp_min = " << nozzle_temp_min_int + << ", nozzle_temp_max = " << nozzle_temp_max_int; + // set filament 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); @@ -802,7 +815,10 @@ void AMSMaterialsSetting::set_color(wxColour color) fila_color.m_colors.insert(color); fila_color.EndSet(m_clr_picker->ctype); auto clr_query = GUI::wxGetApp().get_filament_color_code_query(); - m_clr_name->SetLabelText(clr_query->GetFilaColorName(ams_filament_id, fila_color)); + // ams_filament_id is our OF id; GetFilaColorName looks up filaments_color_codes.json, + // downloaded from Bambu and keyed by the printer's own ids, so translate for this lookup only. + auto* agent = GUI::wxGetApp().getAgent(); + m_clr_name->SetLabelText(clr_query->GetFilaColorName(agent ? agent->from_orca_filament_id(ams_filament_id) : ams_filament_id, fila_color)); } void AMSMaterialsSetting::set_empty_color(wxColour color) @@ -823,7 +839,10 @@ void AMSMaterialsSetting::set_colors(std::vector<wxColour> colors) for (const auto& clr : colors) { fila_color.m_colors.insert(clr); } fila_color.EndSet(m_clr_picker->ctype); auto clr_query = GUI::wxGetApp().get_filament_color_code_query(); - m_clr_name->SetLabelText(clr_query->GetFilaColorName(ams_filament_id, fila_color)); + // ams_filament_id is our OF id; GetFilaColorName looks up filaments_color_codes.json, + // downloaded from Bambu and keyed by the printer's own ids, so translate for this lookup only. + auto* agent = GUI::wxGetApp().getAgent(); + m_clr_name->SetLabelText(clr_query->GetFilaColorName(agent ? agent->from_orca_filament_id(ams_filament_id) : ams_filament_id, fila_color)); } } @@ -932,7 +951,6 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi m_input_k_val->GetTextCtrl()->SetValue(k); m_input_n_val->GetTextCtrl()->SetValue(n); - int idx = 0; wxArrayString filament_items; wxString bambu_filament_name; wxString hint_filament_name; // the hint type to be selected @@ -940,6 +958,9 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi std::unordered_map<wxString, wxString> query_filament_types; // std::set<std::string> filament_id_set; + // The alias keyed map has to start empty: it is a member, so a stale alias left by an earlier + // popup (a different printer, a different nozzle) would resolve to that printer's filament_id. + map_filament_items.clear(); PresetBundle * preset_bundle = wxGetApp().preset_bundle; std::ostringstream stream; // Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires @@ -952,83 +973,48 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi } stream << std::fixed << std::setprecision(1) << machine_diameter; std::string nozzle_diameter_str = stream.str(); - std::set<std::string> printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(DevPrinterConfigUtil::get_printer_display_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++) { - //filter by system preset - Preset& preset = *filament_it; - /*The situation where the user preset is not displayed is as follows: - 1. Not a root preset - 2. Not system preset and the printer firmware does not support user preset */ - if (preset_bundle->filaments.get_preset_base(*filament_it) != &preset || (!filament_it->is_system && !obj->is_support_user_preset)) { + for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine( + DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) { + if (!filament_id_set.insert(filament_it->filament_id).second) + continue; + const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true); + if (alias.empty()) continue; - } - ConfigOption * printer_opt = filament_it->config.option("compatible_printers"); - ConfigOptionStrings *printer_strs = dynamic_cast<ConfigOptionStrings *>(printer_opt); - for (auto printer_str : printer_strs->values) { - if (printer_names.find(printer_str) != printer_names.end()) { - if (filament_id_set.find(filament_it->filament_id) != filament_id_set.end()) { - continue; - } else { - filament_id_set.insert(filament_it->filament_id); - // name matched - if (filament_it->is_system) { - filament_items.push_back(filament_it->alias); - _collect_filament_info(filament_it->alias, preset, query_filament_vendors, query_filament_types); + filament_items.push_back(alias); + _collect_filament_info(alias, *filament_it, query_filament_vendors, query_filament_types); - FilamentInfos filament_infos; - filament_infos.filament_id = filament_it->filament_id; - filament_infos.setting_id = filament_it->setting_id; - map_filament_items[filament_it->alias] = filament_infos; - } else { - char target = '@'; - size_t pos = filament_it->name.find(target); - if (pos != std::string::npos) { - std::string user_preset_alias = filament_it->name.substr(0, pos - 1); - wxString wx_user_preset_alias = wxString(user_preset_alias.c_str(), wxConvUTF8); - user_preset_alias = wx_user_preset_alias.ToStdString(); + FilamentInfos filament_infos; + filament_infos.filament_id = filament_it->filament_id; + filament_infos.setting_id = filament_it->setting_id; + map_filament_items[alias] = filament_infos; - filament_items.push_back(user_preset_alias); - _collect_filament_info(user_preset_alias, preset, query_filament_vendors, query_filament_types); - - FilamentInfos filament_infos; - filament_infos.filament_id = filament_it->filament_id; - filament_infos.setting_id = filament_it->setting_id; - map_filament_items[user_preset_alias] = filament_infos; - } - } - - if (filament_it->filament_id == ams_filament_id) { - hint_filament_name = from_u8(filament_it->alias); - bambu_filament_name = from_u8(filament_it->alias); + if (filament_it->filament_id == ams_filament_id) { + hint_filament_name = from_u8(alias); + bambu_filament_name = from_u8(alias); - // update if nozzle_temperature_range is found - ConfigOption *opt_min = filament_it->config.option("nozzle_temperature_range_low"); - if (opt_min) { - ConfigOptionInts *opt_min_ints = dynamic_cast<ConfigOptionInts *>(opt_min); - if (opt_min_ints) { - wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(0)); - m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min); - } - } - ConfigOption *opt_max = filament_it->config.option("nozzle_temperature_range_high"); - if (opt_max) { - ConfigOptionInts *opt_max_ints = dynamic_cast<ConfigOptionInts *>(opt_max); - if (opt_max_ints) { - wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(0)); - m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max); - } - } - } - idx++; + // update if nozzle_temperature_range is found + ConfigOption *opt_min = filament_it->config.option("nozzle_temperature_range_low"); + if (opt_min) { + ConfigOptionInts *opt_min_ints = dynamic_cast<ConfigOptionInts *>(opt_min); + if (opt_min_ints) { + wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(0)); + m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min); + } + } + ConfigOption *opt_max = filament_it->config.option("nozzle_temperature_range_high"); + if (opt_max) { + ConfigOptionInts *opt_max_ints = dynamic_cast<ConfigOptionInts *>(opt_max); + if (opt_max_ints) { + wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(0)); + m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max); } } } - } } @@ -1251,56 +1237,47 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt) stream << std::fixed << std::setprecision(1) << machine_diameter; } std::string nozzle_diameter_str = stream.str(); - std::set<std::string> printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), - nozzle_diameter_str); - for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) { - if (!m_comboBox_filament->GetValue().IsEmpty()) { - 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) { - ConfigOption * printer_opt = it->config.option("compatible_printers"); - ConfigOptionStrings *printer_strs = dynamic_cast<ConfigOptionStrings *>(printer_opt); - bool has_compatible_printer = false; - for (auto printer_str : printer_strs->values) { - if (printer_names.find(printer_str) != printer_names.end()) { - has_compatible_printer = true; - break; - } + // Resolve the selection against the same list Popup() built the dropdown from, so the two + // halves of the dialog cannot disagree about which filaments this machine can use. + const std::string selected = m_comboBox_filament->GetValue().ToStdString(); + if (!selected.empty()) { + const std::string filament_id = map_filament_items[selected].filament_id; + for (Preset *it : preset_bundle->get_filament_presets_for_machine( + DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) { + if (it->filament_id != filament_id) + continue; + // ) if nozzle_temperature_range is found + ConfigOption* opt_min = it->config.option("nozzle_temperature_range_low"); + if (opt_min) { + ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_min); + if (opt_min_ints) { + wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(0)); + m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min); } - if (!it->is_system && !has_compatible_printer) continue; - // ) if nozzle_temperature_range is found - ConfigOption* opt_min = it->config.option("nozzle_temperature_range_low"); - if (opt_min) { - ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_min); - if (opt_min_ints) { - wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(0)); - m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min); - } - } - ConfigOption* opt_max = it->config.option("nozzle_temperature_range_high"); - if (opt_max) { - ConfigOptionInts* opt_max_ints = dynamic_cast<ConfigOptionInts*>(opt_max); - if (opt_max_ints) { - wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(0)); - m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max); - } - } - ConfigOption* opt_type = it->config.option("filament_type"); - bool found_filament_type = false; - if (opt_type) { - ConfigOptionStrings* opt_type_strs = dynamic_cast<ConfigOptionStrings*>(opt_type); - if (opt_type_strs) { - found_filament_type = true; - //m_filament_type = opt_type_strs->get_at(0); - std::string display_filament_type; - m_filament_type = it->config.get_filament_type(display_filament_type); - } - } - if (!found_filament_type) - m_filament_type = ""; - - break; } + ConfigOption* opt_max = it->config.option("nozzle_temperature_range_high"); + if (opt_max) { + ConfigOptionInts* opt_max_ints = dynamic_cast<ConfigOptionInts*>(opt_max); + if (opt_max_ints) { + wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(0)); + m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max); + } + } + ConfigOption* opt_type = it->config.option("filament_type"); + bool found_filament_type = false; + if (opt_type) { + ConfigOptionStrings* opt_type_strs = dynamic_cast<ConfigOptionStrings*>(opt_type); + if (opt_type_strs) { + found_filament_type = true; + //m_filament_type = opt_type_strs->get_at(0); + std::string display_filament_type; + m_filament_type = it->config.get_filament_type(display_filament_type); + } + } + if (!found_filament_type) + m_filament_type = ""; + + break; } } } @@ -1938,11 +1915,6 @@ void ColorPickerPopup::paintEvent(wxPaintEvent& evt) void ColorPickerPopup::OnDismiss() {} -void ColorPickerPopup::Popup() -{ - PopupWindow::Popup(); -} - bool ColorPickerPopup::ProcessLeftDown(wxMouseEvent& event) { return PopupWindow::ProcessLeftDown(event); } diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 81167884a7..2cbd58e9a9 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -85,7 +85,6 @@ public: void set_ams_colours(std::vector<wxColour> ams); void set_def_colour(wxColour col); void paintEvent(wxPaintEvent& evt); - void Popup(); virtual void OnDismiss() wxOVERRIDE; virtual bool ProcessLeftDown(wxMouseEvent& event) wxOVERRIDE; diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp index d8760cfcf6..9ba9031f19 100644 --- a/src/slic3r/GUI/AMSSetting.cpp +++ b/src/slic3r/GUI/AMSSetting.cpp @@ -292,7 +292,7 @@ void AMSSetting::UpdateByObj(MachineObject* obj) update_ams_img(obj); - m_ams_type->Update(obj); + m_ams_type->UpdateInfo(obj); //m_ams_arrange_order->Update(obj); update_insert_material_read_mode(obj); m_sizer_remain_block->Show(obj->is_support_update_remain); @@ -624,7 +624,7 @@ void AMSSettingTypePanel::CreateGui() Fit(); } -void AMSSettingTypePanel::Update(const MachineObject* obj) +void AMSSettingTypePanel::UpdateInfo(const MachineObject* obj) { if (!obj) { Show(false); diff --git a/src/slic3r/GUI/AMSSetting.hpp b/src/slic3r/GUI/AMSSetting.hpp index 69630c59d2..e157c947ae 100644 --- a/src/slic3r/GUI/AMSSetting.hpp +++ b/src/slic3r/GUI/AMSSetting.hpp @@ -110,7 +110,7 @@ public: ~AMSSettingTypePanel(); public: - void Update(const MachineObject* obj); + void UpdateInfo(const MachineObject* obj); private: void CreateGui(); diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index a4f0f06d65..9e1cefbc84 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -3,6 +3,7 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/Color.hpp" +#include "BuildCommit.hpp" #include "GUI.hpp" #include "GUI_App.hpp" #include "MainFrame.hpp" @@ -245,7 +246,7 @@ AboutDialog::AboutDialog() vesizer->Add(0, 0, 1, wxEXPAND, FromDIP(5)); auto version_string = std::string(SoftFever_VERSION); // _L("Orca Slicer ") + " " + std::string(SoftFever_VERSION); wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); - wxStaticText* credits_string = new wxStaticText(this, wxID_ANY, wxString::Format("Build %s", std::string(GIT_COMMIT_HASH)), wxDefaultPosition, wxDefaultSize); + wxStaticText* credits_string = new wxStaticText(this, wxID_ANY, wxString::Format("Build %s", build_commit_label), wxDefaultPosition, wxDefaultSize); credits_string->SetFont(_build_string_font); wxFont version_font = GetFont(); version_font = version_font.Scaled(1.85f); // SetPointSize(20) not works on macOS because it uses a 72 PPI reference diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index fc3f89fa69..21a3e38080 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -457,7 +457,6 @@ private: ScalableBitmap close_img; wxStaticBitmap* curr_humidity_img; - wxStaticBitmap* m_img; Label* m_staticText;; Label* m_staticText_note; diff --git a/src/slic3r/GUI/AmsMappingPopupUpdate.cpp b/src/slic3r/GUI/AmsMappingPopupUpdate.cpp index 7d8215f55d..3e2853ad1a 100644 --- a/src/slic3r/GUI/AmsMappingPopupUpdate.cpp +++ b/src/slic3r/GUI/AmsMappingPopupUpdate.cpp @@ -406,7 +406,7 @@ void AmsMapingPopup::update_ams_data_multi_machines() int ams_type = 1; int nozzle_id = 0; - if (ams_type >= 1 || ams_type <= 3) { // 1:ams 2:ams-lite 3:n3f + if (ams_type >= 1 && ams_type <= 3) { // 1:ams 2:ams-lite 3:n3f auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL); auto ams_mapping_item_container = new MappingContainer(nozzle_id == 0 ? m_right_marea_panel : m_left_marea_panel, "AMS-1", 4); diff --git a/src/slic3r/GUI/BBLTopbar.hpp b/src/slic3r/GUI/BBLTopbar.hpp index e60a95f64f..2745490d00 100644 --- a/src/slic3r/GUI/BBLTopbar.hpp +++ b/src/slic3r/GUI/BBLTopbar.hpp @@ -93,7 +93,6 @@ private: CenteredTitle* m_title_ctrl { nullptr }; wxString m_titleText; - wxAuiToolBarItem* m_model_store_item; //wxAuiToolBarItem *m_publish_item; wxAuiToolBarItem* m_undo_item; diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 64c52c6e72..f795b41999 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -848,7 +848,9 @@ void BackgroundSlicingProcess::finalize_gcode() case CopyFileResult::SUCCESS: break; // no error case CopyFileResult::FAIL_COPY_FILE: throw Slic3r::ExportError(GUI::format( - _L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%"), + m_export_path_on_removable_media ? + _L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%") : + _L("Copying of the temporary G-code to the output G-code failed.\nError message: %1%"), error_message)); break; case CopyFileResult::FAIL_FILES_DIFFERENT: diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index a4b568e82d..4c6d3c249d 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -468,7 +468,7 @@ PingCodeBindDialog::~PingCodeBindDialog() { m_link_privacy_title->SetFont(Label::Head_13); m_link_privacy_title->SetMaxSize(wxSize(FromDIP(450), -1)); m_link_privacy_title->Wrap(FromDIP(450)); - m_link_privacy_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { + m_link_privacy_title->Bind(wxEVT_LEFT_DOWN, [](auto& e) { std::string url; std::string country_code = Slic3r::GUI::wxGetApp().app_config->get_country_code(); @@ -893,7 +893,7 @@ void BindMachineDialog::on_show(wxShowEvent &event) } } }) - .on_error([this](std::string body, std::string error, unsigned status) { + .on_error([](std::string body, std::string error, unsigned status) { //BOOST_LOG_TRIVIAL(info) << "load oss picture failed, oss path: " << oss_path << " status:" << status << " error:" << error; }).perform(); } @@ -1099,7 +1099,7 @@ void UnBindMachineDialog::on_show(wxShowEvent &event) } } }) - .on_error([this](std::string body, std::string error, unsigned status) { + .on_error([](std::string body, std::string error, unsigned status) { //BOOST_LOG_TRIVIAL(info) << "load oss picture failed, oss path: " << oss_path << " status:" << status << " error:" << error; }).perform(); diff --git a/src/slic3r/GUI/BindDialog.hpp b/src/slic3r/GUI/BindDialog.hpp index b809bc523b..8d21c1be5e 100644 --- a/src/slic3r/GUI/BindDialog.hpp +++ b/src/slic3r/GUI/BindDialog.hpp @@ -65,18 +65,10 @@ private: wxPanel* request_bind_panel; wxPanel* binding_panel; - wxScrolledWindow* m_sw_bind_failed_info; - Label* m_bind_failed_info; - Label* m_st_txt_error_code{ nullptr }; - Label* m_st_txt_error_desc{ nullptr }; - Label* m_st_txt_extra_info{ nullptr }; - HyperLink* m_link_network_state{ nullptr }; wxString m_result_info; wxString m_result_extra; wxString m_ping_code_wiki; - bool m_show_error_info_state = true; - int m_result_code; std::shared_ptr<BBLStatusBarBind> m_status_bar; public: @@ -110,7 +102,6 @@ private: wxBitmap m_bitmap_show_error_close; wxBitmap m_bitmap_show_error_open; wxScrolledWindow* m_sw_bind_failed_info; - Label* m_bind_failed_info; Label* m_st_txt_error_code{ nullptr }; Label* m_st_txt_error_desc{ nullptr }; Label* m_st_txt_extra_info{ nullptr }; diff --git a/src/slic3r/GUI/BuildCommit.cpp b/src/slic3r/GUI/BuildCommit.cpp new file mode 100644 index 0000000000..adfe66af68 --- /dev/null +++ b/src/slic3r/GUI/BuildCommit.cpp @@ -0,0 +1,9 @@ +#include "BuildCommit.hpp" +#include "git_commit_hash.h" + +namespace Slic3r { namespace GUI { + +const char *const build_commit_hash = GIT_COMMIT_HASH; +const char *const build_commit_label = GIT_COMMIT_HASH GIT_COMMIT_SUFFIX; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/BuildCommit.hpp b/src/slic3r/GUI/BuildCommit.hpp new file mode 100644 index 0000000000..0450e710c9 --- /dev/null +++ b/src/slic3r/GUI/BuildCommit.hpp @@ -0,0 +1,15 @@ +#pragma once + +// Read these rather than including git_commit_hash.h, which changes with every +// commit and rebuilds everything that includes it. + +namespace Slic3r { namespace GUI { + +// The commit alone, safe to use in a commit URL. +extern const char *const build_commit_hash; + +// The same, with "-dirty" when the build had uncommitted changes. Use this +// wherever the build is shown to a person. +extern const char *const build_commit_label; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/CaliHistoryDialog.cpp b/src/slic3r/GUI/CaliHistoryDialog.cpp index 4de90d8b8f..3ce8c1bb81 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.cpp +++ b/src/slic3r/GUI/CaliHistoryDialog.cpp @@ -443,7 +443,7 @@ void HistoryWindow::sync_history_data() { auto edit_button = new Button(m_history_data_panel, _L("Edit")); edit_button->SetStyle(ButtonStyle::Confirm, ButtonType::Window); - edit_button->Bind(wxEVT_BUTTON, [this, result, k_value, name_value, edit_button](auto& e) { + edit_button->Bind(wxEVT_BUTTON, [this, result, k_value, name_value](auto& e) { if (m_ui_op_lock) return; PACalibResult result_buffer = result; @@ -702,7 +702,6 @@ wxArrayString NewCalibrationHistoryDialog::get_all_filaments(const MachineObject wxArrayString filament_items; std::set<std::string> filament_id_set; - std::set<std::string> printer_names; std::ostringstream stream; // If the machine didn't report a nozzle diameter (0.0 = unknown), fall back to the currently // selected printer preset so the filament list isn't empty. @@ -714,67 +713,21 @@ wxArrayString NewCalibrationHistoryDialog::get_all_filaments(const MachineObject stream << std::fixed << std::setprecision(1) << machine_diameter; std::string nozzle_diameter_str = stream.str(); - for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) { - // filter by system preset - if (!printer_it->is_system) - continue; - // get printer_model - ConfigOption * printer_model_opt = printer_it->config.option("printer_model"); - ConfigOptionString *printer_model_str = dynamic_cast<ConfigOptionString *>(printer_model_opt); - if (!printer_model_str) - continue; - - // use printer_model as printer type - if (printer_model_str->value != DevPrinterConfigUtil::get_printer_display_name(obj->printer_type)) - continue; - - if (printer_it->name.find(nozzle_diameter_str) != std::string::npos) - printer_names.insert(printer_it->name); - } - 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++) { - // filter by system preset - Preset &preset = *filament_it; - /*The situation where the user preset is not displayed is as follows: - 1. Not a root preset - 2. Not system preset and the printer firmware does not support user preset */ - if (preset_bundle->filaments.get_preset_base(*filament_it) != &preset || (!filament_it->is_system && ! obj->is_support_user_preset)) { continue; } + for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine( + DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) { + if (!filament_id_set.insert(filament_it->filament_id).second) + continue; + const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true); + if (alias.empty()) + continue; - ConfigOption * printer_opt = filament_it->config.option("compatible_printers"); - ConfigOptionStrings *printer_strs = dynamic_cast<ConfigOptionStrings *>(printer_opt); - for (auto printer_str : printer_strs->values) { - if (printer_names.find(printer_str) != printer_names.end()) { - if (filament_id_set.find(filament_it->filament_id) != filament_id_set.end()) { - continue; - } else { - filament_id_set.insert(filament_it->filament_id); - // name matched - if (filament_it->is_system) { - filament_items.push_back(filament_it->alias); - FilamentInfos filament_infos; - filament_infos.filament_id = filament_it->filament_id; - filament_infos.setting_id = filament_it->setting_id; - map_filament_items[filament_it->alias] = filament_infos; - } else { - char target = '@'; - size_t pos = filament_it->name.find(target); - if (pos != std::string::npos) { - std::string user_preset_alias = filament_it->name.substr(0, pos - 1); - wxString wx_user_preset_alias = wxString(user_preset_alias.c_str(), wxConvUTF8); - user_preset_alias = wx_user_preset_alias.ToStdString(); - - filament_items.push_back(user_preset_alias); - FilamentInfos filament_infos; - filament_infos.filament_id = filament_it->filament_id; - filament_infos.setting_id = filament_it->setting_id; - map_filament_items[user_preset_alias] = filament_infos; - } - } - } - } - } + filament_items.push_back(alias); + FilamentInfos filament_infos; + filament_infos.filament_id = filament_it->filament_id; + filament_infos.setting_id = filament_it->setting_id; + map_filament_items[alias] = filament_infos; } } return filament_items; diff --git a/src/slic3r/GUI/Calibration.cpp b/src/slic3r/GUI/Calibration.cpp index 0c2b4f1659..f3351fdb6b 100644 --- a/src/slic3r/GUI/Calibration.cpp +++ b/src/slic3r/GUI/Calibration.cpp @@ -201,7 +201,7 @@ wxWindow* CalibrationDialog::create_check_option(wxString title, wxWindow* paren checkbox->SetToolTip(tooltip); text->SetToolTip(tooltip); - text->Bind(wxEVT_LEFT_DOWN, [this, check](wxMouseEvent&) { check->SetValue(check->GetValue() ? false : true); }); + text->Bind(wxEVT_LEFT_DOWN, [check](wxMouseEvent&) { check->SetValue(check->GetValue() ? false : true); }); m_checkbox_list[param] = check; m_checkbox_list[param]->SetValue(true); return checkbox; diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index eafb380c79..1f6b097af9 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -70,11 +70,7 @@ public: private: int m_my_devices_count{ 0 }; - int m_other_devices_count{ 0 }; bool m_dismiss{ false }; - wxWindow* m_placeholder_panel { nullptr }; - wxWindow* m_panel_body{ nullptr }; - wxBoxSizer* m_sizer_body{ nullptr }; wxBoxSizer* m_sizer_my_devices{ nullptr }; wxScrolledWindow* m_scrolledWindow{ nullptr }; wxTimer* m_refresh_timer{ nullptr }; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index b1f5c206c6..7496d59a51 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -477,7 +477,7 @@ void CalibrationWizard::on_cali_go_home() if (go_home_dialog == nullptr) go_home_dialog = new SecondaryCheckDialog(this, wxID_ANY, _L("Confirm")); - go_home_dialog->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, method](wxCommandEvent &e) { + go_home_dialog->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent &e) { if (curr_obj) { curr_obj->command_task_abort(); } else { diff --git a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp index d9604da84a..152f46f37c 100644 --- a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp @@ -90,7 +90,7 @@ void CalibrationCaliPage::on_subtask_abort(wxCommandEvent& event) if (abort_dlg == nullptr) { abort_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Cancel print")); - abort_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, obj](wxCommandEvent& e) { + abort_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [obj](wxCommandEvent& e) { if (obj) obj->command_task_abort(); }); } diff --git a/src/slic3r/GUI/CalibrationWizardPage.cpp b/src/slic3r/GUI/CalibrationWizardPage.cpp index ef17da9081..c117ec8857 100644 --- a/src/slic3r/GUI/CalibrationWizardPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPage.cpp @@ -762,7 +762,7 @@ void CaliPageActionPanel::bind_button(CaliPageActionType action_type, bool is_bl if (is_block) { m_action_btns[i]->Bind(wxEVT_BUTTON, - [this](wxCommandEvent& evt) { + [](wxCommandEvent& evt) { MessageDialog msg(nullptr, _L("The current firmware version of the printer does not support calibration.\nPlease upgrade the printer firmware."), _L("Calibration not supported"), wxOK | wxICON_WARNING); msg.ShowModal(); }); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 5267715439..c6d491a930 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -360,7 +360,7 @@ void CaliPresetCustomRangePanel::create_panel(wxWindow* parent) int max_decimal_length; if (i <= 1) max_decimal_length = 3; - else if (i >= 2) + else max_decimal_length = 4; if (decimal_number > max_decimal_length) { int allowed_length = number.length() - decimal_number + max_decimal_length; diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp index 78bc4bb77f..f7699cfab0 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp @@ -272,7 +272,7 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal preset_names = default_naming(preset_names); std::vector<PACalibResult> sorted_cali_result = cali_result; - std::sort(sorted_cali_result.begin(), sorted_cali_result.end(), [this](const PACalibResult &left, const PACalibResult& right) { + std::sort(sorted_cali_result.begin(), sorted_cali_result.end(), [](const PACalibResult &left, const PACalibResult& right) { return left.tray_id < right.tray_id; }); @@ -366,7 +366,7 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal } } - comboBox_tray_name->Bind(wxEVT_COMBOBOX, [this, comboBox_tray_name, k_value, n_value](auto& e) { + comboBox_tray_name->Bind(wxEVT_COMBOBOX, [comboBox_tray_name](auto& e) { int selection = comboBox_tray_name->GetSelection(); auto history = filtered_results[selection]; }); @@ -744,7 +744,7 @@ void CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(const std::vector< } } - comboBox_tray_name->Bind(wxEVT_COMBOBOX, [this, comboBox_tray_name, k_value, n_value](auto &e) { + comboBox_tray_name->Bind(wxEVT_COMBOBOX, [comboBox_tray_name](auto &e) { int selection = comboBox_tray_name->GetSelection(); auto history = filtered_results[selection]; }); diff --git a/src/slic3r/GUI/CameraPopup.cpp b/src/slic3r/GUI/CameraPopup.cpp index 0ee5694a34..cc7e00eec6 100644 --- a/src/slic3r/GUI/CameraPopup.cpp +++ b/src/slic3r/GUI/CameraPopup.cpp @@ -140,7 +140,7 @@ CameraPopup::CameraPopup(wxWindow *parent) vcamera_guide_link->Wrap(-1); vcamera_guide_link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); auto text_size = vcamera_guide_link->GetTextExtent(text); - vcamera_guide_link->Bind(wxEVT_LEFT_DOWN, [this, url](wxMouseEvent& e) {wxLaunchDefaultBrowser(url); }); + vcamera_guide_link->Bind(wxEVT_LEFT_DOWN, [url](wxMouseEvent& e) {wxLaunchDefaultBrowser(url); }); link_underline = new wxPanel(m_panel, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); link_underline->SetBackgroundColour(wxColour(0x1F, 0x8E, 0xEA)); diff --git a/src/slic3r/GUI/CameraPopup.hpp b/src/slic3r/GUI/CameraPopup.hpp index dbdb81a9cb..f45ebb6e42 100644 --- a/src/slic3r/GUI/CameraPopup.hpp +++ b/src/slic3r/GUI/CameraPopup.hpp @@ -72,8 +72,10 @@ private: SwitchButton* m_switch_recording; wxStaticText* m_text_vcamera; SwitchButton* m_switch_vcamera; +#if !BBL_RELEASE_TO_PUBLIC wxStaticText* m_text_liveview_retry; SwitchButton* m_switch_liveview_retry; +#endif //BBL_RELEASE_TO_PUBLIC wxStaticText* m_custom_camera_hint; TextInput* m_custom_camera_input; Button* m_custom_camera_input_confirm; diff --git a/src/slic3r/GUI/ColorDecomposeSupport.cpp b/src/slic3r/GUI/ColorDecomposeSupport.cpp index e8fb4c9082..6621b97059 100644 --- a/src/slic3r/GUI/ColorDecomposeSupport.cpp +++ b/src/slic3r/GUI/ColorDecomposeSupport.cpp @@ -62,10 +62,16 @@ std::string decompose_basic_type_from_source(size_t source_config_idx, auto& project_config = wxGetApp().preset_bundle->project_config; if (auto* filament_id_opt = project_config.option<ConfigOptionStrings>("filament_id")) { if (source_config_idx < filament_id_opt->values.size()) { - const std::string& filament_id = filament_id_opt->values[source_config_idx]; - if (filament_id == kDecomposePetgFilamentId) + // Dead in practice: "filament_id" is not in PresetBundle's s_project_options, so this + // option() lookup (create=false) always returns null and the block never runs. Kept as + // found, with the translation the values would need: they would be our OF ids, and the + // two constants are the printer's own ids. + auto* agent = wxGetApp().getAgent(); + const std::string& orca_filament_id = filament_id_opt->values[source_config_idx]; + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(orca_filament_id) : orca_filament_id; + if (printer_filament_id == kDecomposePetgFilamentId) return kDecomposePetgBasicType; - if (filament_id == kDecomposePlaFilamentId) + if (printer_filament_id == kDecomposePlaFilamentId) return kDecomposePlaBasicType; } } @@ -82,9 +88,14 @@ std::string decompose_basic_type_from_source(size_t source_config_idx, std::string decompose_basic_filament_id(const std::string& basic_type) { - if (basic_type == kDecomposePetgBasicType) - return kDecomposePetgFilamentId; - return kDecomposePlaFilamentId; + // The result becomes DecomposeOfficialComponent::filament_id, which the rest of this file + // reads as one of our OF ids (translating back before it compares against the printer's + // ids), so translate on the way out; kDecompose*FilamentId itself stays the printer-side + // literal. The only place that would carry it further, project_config's "filament_id", is + // dead code: that key is not in PresetBundle's s_project_options. + const std::string printer_filament_id = basic_type == kDecomposePetgBasicType ? kDecomposePetgFilamentId : kDecomposePlaFilamentId; + auto* agent = wxGetApp().getAgent(); + return agent ? agent->to_orca_filament_id(printer_filament_id) : printer_filament_id; } void set_created_standard_component_metadata(size_t config_idx, const DecomposeOfficialComponent& component) @@ -98,8 +109,11 @@ void set_created_standard_component_metadata(size_t config_idx, const DecomposeO } } - const std::string type = component.filament_id == kDecomposePetgFilamentId ? kDecomposePetgShortType : - component.filament_id == kDecomposePlaFilamentId ? kDecomposePlaShortType : ""; + // component.filament_id is our OF id; the two constants are the printer's own ids. + auto* agent = wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(component.filament_id) : component.filament_id; + const std::string type = printer_filament_id == kDecomposePetgFilamentId ? kDecomposePetgShortType : + printer_filament_id == kDecomposePlaFilamentId ? kDecomposePlaShortType : ""; if (!type.empty()) { if (auto* type_opt = project_config.option<ConfigOptionStrings>("filament_type")) { while (type_opt->values.size() <= config_idx) @@ -151,7 +165,12 @@ DecomposeOfficialComponent lookup_decompose_official_component( continue; if (item.contains("fila_color") && item["fila_color"].is_array() && !item["fila_color"].empty()) result.color_hex = decompose_normalize_color_hex(item["fila_color"][0].get<std::string>()); - result.filament_id = item.value("fila_id", result.filament_id); + // fila_id from this shipped, Bambu-keyed color table is a printer-side id; translate it so + // result.filament_id stays an OF id like the rest of this struct (the fallback default, + // result.filament_id, is already OF and passes through unchanged). + const std::string fila_id = item.value("fila_id", result.filament_id); + auto* agent = wxGetApp().getAgent(); + result.filament_id = agent ? agent->to_orca_filament_id(fila_id) : fila_id; return result; } } @@ -211,8 +230,11 @@ int find_existing_decompose_component( auto* type_opt = project_config.option<ConfigOptionStrings>("filament_type"); const PresetBundle& preset_bundle = *wxGetApp().preset_bundle; const size_t num_physical = physical_colors.size(); - const std::string expected_basic_type = component.filament_id == kDecomposePetgFilamentId ? kDecomposePetgBasicType : - component.filament_id == kDecomposePlaFilamentId ? kDecomposePlaBasicType : ""; + // component.filament_id is our OF id; the two constants are the printer's own ids. + auto* agent = wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(component.filament_id) : component.filament_id; + const std::string expected_basic_type = printer_filament_id == kDecomposePetgFilamentId ? kDecomposePetgBasicType : + printer_filament_id == kDecomposePlaFilamentId ? kDecomposePlaBasicType : ""; const std::string expected_short_type = expected_basic_type == kDecomposePetgBasicType ? kDecomposePetgShortType : expected_basic_type == kDecomposePlaBasicType ? kDecomposePlaShortType : ""; const std::string expected_preset_part = expected_basic_type.empty() ? "" : std::string(kDecomposeBambuPresetPrefix) + expected_basic_type; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index d15164ef63..8eab1c785c 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -453,7 +453,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con if (config->opt_bool("alternate_extra_wall") && (config->opt_enum<EnsureVerticalShellThickness>("ensure_vertical_shell_thickness") == evstAll)) { - wxString msg_text = _(L("Alternate extra wall does't work well when ensure vertical shell thickness is set to All.")); + wxString msg_text = _(L("Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All.")); if (is_global_config) msg_text += "\n\n" + _(L("Change these settings automatically?\n" @@ -642,7 +642,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con if (config->opt_enum<SeamScarfType>("seam_slope_type") != SeamScarfType::None && config->get_abs_value("seam_slope_start_height") >= layer_height) { - const wxString msg_text = _(L("seam_slope_start_height need to be smaller than layer_height.\nReset to 0.")); + const wxString msg_text = _(L("seam_slope_start_height needs to be smaller than layer_height.\nReset to 0.")); MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK); DynamicPrintConfig new_conf = *config; is_msg_dlg_already_exist = true; @@ -656,7 +656,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con float skin_depth = config->opt_float("skin_infill_depth"); if (config->opt_float("infill_lock_depth") > skin_depth) { // xgettext:no-c-format, no-boost-format - const wxString msg_text = _(L("Lock depth should smaller than skin depth.\nReset to 50% of skin depth.")); + const wxString msg_text = _(L("Lock depth should be smaller than skin depth.\nReset to 50% of skin depth.")); MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK); DynamicPrintConfig new_conf = *config; is_msg_dlg_already_exist = true; @@ -741,14 +741,21 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in bool have_infill = config->option<ConfigOptionPercent>("sparse_infill_density")->value > 0; // sparse_infill_filament_id uses the same logic as in Print::extruders() for (auto el : { "sparse_infill_pattern", "infill_combination", "fill_multiline","infill_direction", - "minimum_sparse_infill_area", "sparse_infill_filament_id", "infill_anchor", "infill_anchor_max","infill_shift_step","sparse_infill_rotate_template","symmetric_infill_y_axis"}) + "minimum_sparse_infill_area", "sparse_infill_filament_id","infill_shift_step","sparse_infill_rotate_template","symmetric_infill_y_axis"}) toggle_line(el, have_infill); + InfillPattern pattern = config->opt_enum<InfillPattern>("sparse_infill_pattern"); + + // Orca: the concentric patterns follow the surface outline instead of crossing it, so there is + // nothing for an infill anchor to attach to. Hide the anchor settings for them. + bool have_infill_anchor = have_infill && pattern != ipConcentric && pattern != ipSpiralInset; + toggle_line("infill_anchor", have_infill_anchor); + toggle_line("infill_anchor_max", have_infill_anchor); + 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<InfillPattern>("sparse_infill_pattern"); bool have_multiline_infill_pattern = pattern == ipGyroid || pattern == ipGrid || pattern == ipRectilinear || pattern == ipTpmsD || pattern == ipTpmsFK || pattern == ipCrossHatch || pattern == ipHoneycomb || pattern == ipLateralLattice || pattern == ipLateralHoneycomb || pattern == ipConcentric || pattern == ipCubic || pattern == ipStars || pattern == ipAlignedRectilinear || pattern == ipLightning || pattern == ip3DHoneycomb || pattern == ipAdaptiveCubic || pattern == ipSupportCubic|| pattern == ipTriangles || pattern == ipQuarterCubic|| pattern == ipArchimedeanChords || pattern == ipHilbertCurve || pattern == ipOctagramSpiral; @@ -831,7 +838,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in toggle_line("separated_infills", is_internal_infill_separable); // Fill order is only meaningful for the center-based surface fill patterns; hide it otherwise. - auto is_centered_fill = [](InfillPattern p) { return p == ipConcentric || p == ipArchimedeanChords || p == ipOctagramSpiral; }; + auto is_centered_fill = [](InfillPattern p) { return p == ipConcentric || p == ipSpiralInset || p == ipArchimedeanChords || p == ipOctagramSpiral; }; toggle_line("top_surface_fill_order", has_top_shell && is_centered_fill(config->opt_enum<InfillPattern>("top_surface_pattern"))); toggle_line("bottom_surface_fill_order", has_bottom_shell && is_centered_fill(config->opt_enum<InfillPattern>("bottom_surface_pattern"))); diff --git a/src/slic3r/GUI/ConfigValueFormatter.cpp b/src/slic3r/GUI/ConfigValueFormatter.cpp new file mode 100644 index 0000000000..6f9128841b --- /dev/null +++ b/src/slic3r/GUI/ConfigValueFormatter.cpp @@ -0,0 +1,245 @@ +#include "ConfigValueFormatter.hpp" + +#include <algorithm> +#include <cstdlib> +#include <string> +#include <vector> + +#include <boost/algorithm/string.hpp> +#include <boost/format.hpp> + +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" + +#include "I18N.hpp" +#include "GUI.hpp" +#include "Field.hpp" + +namespace Slic3r { +namespace GUI { + +std::string get_pure_opt_key(const std::string& opt_key) +{ + std::string pure_key = opt_key; + const int pos = pure_key.find("#"); + if (pos > 0) + boost::erase_tail(pure_key, pure_key.size() - pos); + return pure_key; +} + +wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill, int idx) +{ + const ConfigOptionDef& def = config.def()->options.at(opt_key); + const std::vector<std::string>& names = def.enum_labels;//ConfigOptionEnum<T>::get_enum_names(); + int val = 0; + + if (idx >= 0) + val = dynamic_cast<const ConfigOptionInts*>(config.option(opt_key))->get_at(idx); + else + val = config.option(opt_key)->getInt(); + + // Each infill doesn't use all list of infill declared in PrintConfig.hpp. + // So we should "convert" val to the correct one + if (is_infill) { + for (auto key_val : *def.enum_keys_map) + if (int(key_val.second) == val) { + auto it = std::find(def.enum_values.begin(), def.enum_values.end(), key_val.first); + if (it == def.enum_values.end()) + return ""; + return from_u8(_utf8(names[it - def.enum_values.begin()])); + } + return _L("Undefined"); + } + return from_u8(_utf8(names[val])); +} + +wxString get_full_label(const std::string& opt_key, const DynamicPrintConfig& config) +{ + const std::string pure_key = get_pure_opt_key(opt_key); + auto option = config.option(pure_key); + + if (!option || option->is_nil()) + return _L("N/A"); + + const ConfigOptionDef* opt = config.def()->get(pure_key); + return opt->full_label.empty() ? opt->label : opt->full_label; +} + +wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& config) +{ + int orig_opt_idx = -1; + int opt_idx = -1; + int pos = opt_key.find("#"); + std::string temp_str = opt_key; + if (pos > 0) { + boost::erase_head(temp_str, pos + 1); + orig_opt_idx = std::atoi(temp_str.c_str()); + } + opt_idx = orig_opt_idx >= 0 ? orig_opt_idx : 0; + const std::string pure_key = get_pure_opt_key(opt_key); + auto option = config.option(pure_key); + if (!option) { + return _L("N/A"); + } + auto opt_vector = dynamic_cast<const ConfigOptionVectorBase *>(option); + + if ((option->is_scalar() && option->is_nil()) || + (option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx))) + return _L("N/A"); + + wxString out; + + const ConfigOptionDef* opt = config.def()->get(pure_key); + bool is_nullable = opt->nullable; + + switch (opt->type) { + case coInt: + return from_u8((boost::format("%1%") % config.opt_int(pure_key)).str()); + case coInts: { + if (is_nullable) { + auto values = config.opt<ConfigOptionIntsNullable>(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); + } + else { + auto values = config.opt<ConfigOptionInts>(pure_key); + if (orig_opt_idx >= 0 && orig_opt_idx < values->size()) { + return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); + } + else { + std::string value_str; + for (int i = 0; i < values->size(); i++) { + value_str += std::to_string(values->get_at(i)); + if (i != values->size() - 1) { + value_str += ","; + } + } + return from_u8(value_str); + } + } + return _L("Undefined"); + } + case coBool: + return config.opt_bool(pure_key) ? "true" : "false"; + case coBools: { + if (is_nullable) { + auto values = config.opt<ConfigOptionBoolsNullable>(pure_key); + if (opt_idx < values->size()) + return values->get_at(opt_idx) ? "true" : "false"; + } + else { + auto values = config.opt<ConfigOptionBools>(pure_key); + if (opt_idx < values->size()) + return values->get_at(opt_idx) ? "true" : "false"; + } + return _L("Undefined"); + } + case coPercent: + return from_u8((boost::format("%1%%%") % int(config.optptr(pure_key)->getFloat())).str()); + case coPercents: { + if (is_nullable) { + auto values = config.opt<ConfigOptionPercentsNullable>(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); + } + else { + auto values = config.opt<ConfigOptionPercents>(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); + } + return _L("Undefined"); + } + case coFloat: + return double_to_string(config.opt_float(pure_key)); + case coFloats: { + if (is_nullable) { + auto values = config.opt<ConfigOptionFloatsNullable>(pure_key); + if (opt_idx < values->size()) + return double_to_string(values->get_at(opt_idx)); + } + else { + auto values = config.opt<ConfigOptionFloats>(pure_key); + if (values && opt_idx < values->size()) + return double_to_string(values->get_at(opt_idx)); + } + return _L("Undefined"); + } + case coString: + return from_u8(config.opt_string(pure_key)); + case coStrings: { + const ConfigOptionStrings* strings = config.opt<ConfigOptionStrings>(pure_key); + if (strings) { + if (pure_key == "compatible_printers" || pure_key == "compatible_prints") { + if (strings->empty()) + return _L("All"); + for (size_t id = 0; id < strings->size(); id++) + out += from_u8(strings->get_at(id)) + "\n"; + out.RemoveLast(1); + return out; + } + if (!strings->empty() && opt_idx < strings->values.size()) + return from_u8(strings->get_at(opt_idx)); + } + break; + } + case coFloatOrPercent: { + const ConfigOptionFloatOrPercent* opt = config.opt<ConfigOptionFloatOrPercent>(pure_key); + if (opt) + out = double_to_string(opt->value) + (opt->percent ? "%" : ""); + return out; + } + case coEnum: { + return get_string_from_enum(pure_key, config, + pure_key == "top_surface_pattern" || + pure_key == "bottom_surface_pattern" || + pure_key == "internal_solid_infill_pattern" || + pure_key == "sparse_infill_pattern" || + pure_key == "ironing_pattern" || + pure_key == "support_ironing_pattern" || + pure_key == "support_pattern" || + pure_key == "support_interface_pattern") + ; + } + case coEnums: { + return get_string_from_enum(pure_key, config, + pure_key == "top_surface_pattern" || + pure_key == "bottom_surface_pattern" || + pure_key == "internal_solid_infill_pattern" || + pure_key == "sparse_infill_pattern" || + pure_key == "ironing_pattern" || + pure_key == "support_ironing_pattern" || + pure_key == "support_pattern" || + pure_key == "support_interface_pattern" + , opt_idx); + } + case coPoint: { + Vec2d val = config.opt<ConfigOptionPoint>(pure_key)->value; + return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); + } + case coPoints: { + //BBS: add bed_exclude_area + if (pure_key == "printable_area" || pure_key == "thumbnails") { + ConfigOptionPoints points = *config.option<ConfigOptionPoints>(pure_key); + //BuildVolume build_volume = {points.values, 0.}; + return get_thumbnails_string(points.values); + } + else if (pure_key == "bed_exclude_area") { + return get_thumbnails_string(config.option<ConfigOptionPoints>(pure_key)->values); + } + else if (pure_key == "head_wrap_detect_zone") { + return get_thumbnails_string(config.option<ConfigOptionPoints>(pure_key)->values); + } + else if (pure_key == "wrapping_exclude_area") { + return get_thumbnails_string(config.option<ConfigOptionPoints>(pure_key)->values); + } + Vec2d val = config.opt<ConfigOptionPoints>(pure_key)->get_at(opt_idx); + return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); + } + default: + break; + } + return out; +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/ConfigValueFormatter.hpp b/src/slic3r/GUI/ConfigValueFormatter.hpp new file mode 100644 index 0000000000..67b16f9326 --- /dev/null +++ b/src/slic3r/GUI/ConfigValueFormatter.hpp @@ -0,0 +1,26 @@ +#pragma once + +#include <string> + +#include <wx/string.h> + +namespace Slic3r { + +class DynamicPrintConfig; + +namespace GUI { + +// Human-readable value of opt_key (may carry a "#<index>" suffix) in config. +wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& config); + +// Full label of opt_key; "N/A" when the option is not set. +wxString get_full_label(const std::string& opt_key, const DynamicPrintConfig& config); + +// Strip the "#<index>" suffix (if any) from the option key. +std::string get_pure_opt_key(const std::string& opt_key); + +// Localized label of the currently selected value of an enum option. +wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill = false, int idx = -1); + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index dba8699105..412df19091 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2752,7 +2752,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent) }); if (wxLinux_gtk3) - this->Bind(wxEVT_SHOW, [this, vsizer](const wxShowEvent& e) { + this->Bind(wxEVT_SHOW, [](const wxShowEvent& e) { ; }); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 33f49c2a38..e6fb6e0782 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -599,7 +599,9 @@ static char* read_json_file(const std::string &preset_path) return NULL; } - fread(json_contents, 1, file_size, json_file); + const size_t read_bytes = fread(json_contents, 1, file_size, json_file); + if (read_bytes != static_cast<size_t>(file_size)) + BOOST_LOG_TRIVIAL(error) << "Read " << read_bytes << " of " << file_size << " bytes from the JSON file"; fclose(json_file); return json_contents; @@ -1885,7 +1887,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_nozzle_diameter_item(wxWindow *par m_custom_nozzle_diameter_ctrl = new wxTextCtrl(parent, wxID_ANY, "", wxDefaultPosition, NAME_OPTION_COMBOBOX_SIZE); m_custom_nozzle_diameter_ctrl->SetHint(_L("Input Custom Nozzle Diameter")); - m_custom_nozzle_diameter_ctrl->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) { + m_custom_nozzle_diameter_ctrl->Bind(wxEVT_CHAR, [](wxKeyEvent &event) { int key = event.GetKeyCode(); if (key != 44 && key != 46 && cannot_input_key.find(key) != cannot_input_key.end()) { // "@" can not be inputed event.Skip(false); @@ -3867,14 +3869,14 @@ void ExportConfigsDialog::select_curr_radiobox(std::vector<std::pair<RadioBox *, m_preset_sizer->Add(create_checkbox(m_presets_window, preset.second, printer_name, m_preset), 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(5)); } - m_serial_text->SetLabel(_L("Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip.")); + m_serial_text->SetLabel(_L("Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive.")); } else if (export_type == m_exprot_type.filament_preset) { for (std::pair<std::string, std::vector<std::pair<std::string, Preset *>>> filament_name_to_preset : m_filament_name_to_presets) { if (filament_name_to_preset.second.empty()) continue; wxString filament_name = wxString::FromUTF8(filament_name_to_preset.first); m_preset_sizer->Add(create_checkbox(m_presets_window, filament_name, m_printer_name), 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(5)); } - m_serial_text->SetLabel(_L("Only the filament names with user filament presets will be displayed, \nand all user filament presets in each filament name you select will be exported as a zip.")); + m_serial_text->SetLabel(_L("Only the filament names with user filament presets will be displayed, \nand all user filament presets in each filament name you select will be exported as a ZIP archive.")); } else if (export_type == m_exprot_type.process_preset) { for (std::pair<std::string, std::vector<Preset *>> presets : m_process_presets) { Preset * printer_preset = preset_bundle->printers.find_preset(presets.first, false); @@ -3890,7 +3892,7 @@ void ExportConfigsDialog::select_curr_radiobox(std::vector<std::pair<RadioBox *, } } - m_serial_text->SetLabel(_L("Only printer names with changed process presets will be displayed, \nand all user process presets in each printer name you select will be exported as a zip.")); + m_serial_text->SetLabel(_L("Only printer names with changed process presets will be displayed, \nand all user process presets in each printer name you select will be exported as a ZIP archive.")); } //m_presets_window->SetSizerAndFit(m_preset_sizer); m_presets_window->Layout(); diff --git a/src/slic3r/GUI/CreatePresetsDialog.hpp b/src/slic3r/GUI/CreatePresetsDialog.hpp index 701779b1bf..07811aa144 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.hpp +++ b/src/slic3r/GUI/CreatePresetsDialog.hpp @@ -74,7 +74,6 @@ private: std::unordered_set<std::string> m_system_filament_types_set; std::set<std::string> m_visible_printers; CreateType m_create_type; - Button * m_button_cancel = nullptr; ComboBox * m_filament_vendor_combobox = nullptr; ::CheckBox * m_can_not_find_vendor_checkbox = nullptr; ComboBox * m_filament_type_combobox = nullptr; diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index f585425130..d2f758bf5f 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -245,7 +245,6 @@ DailyTipsPanel::DailyTipsPanel(bool can_expand, DailyTipsLayout layout) m_width(0), m_height(0), m_can_expand(can_expand), - m_layout(layout), m_uid(DailyTipsPanel::uid++), m_dailytips_renderer(std::make_unique<DailyTipsDataRenderer>(layout)) { diff --git a/src/slic3r/GUI/DailyTips.hpp b/src/slic3r/GUI/DailyTips.hpp index 508a8ad7e9..537fed4952 100644 --- a/src/slic3r/GUI/DailyTips.hpp +++ b/src/slic3r/GUI/DailyTips.hpp @@ -51,7 +51,6 @@ private: int m_uid; bool m_first_enter{ false }; bool m_is_dark{ false }; - DailyTipsLayout m_layout{ DailyTipsLayout::Vertical }; float m_fade_opacity{ 1.0f }; }; diff --git a/src/slic3r/GUI/DeviceCore/DevConfig.h b/src/slic3r/GUI/DeviceCore/DevConfig.h index 449b5a7253..b0cdcb936e 100644 --- a/src/slic3r/GUI/DeviceCore/DevConfig.h +++ b/src/slic3r/GUI/DeviceCore/DevConfig.h @@ -54,7 +54,7 @@ public: void ParseCalibrationConfig(const json& print_json); //cali private: - MachineObject* m_obj; + [[maybe_unused]] MachineObject* m_obj; /*configure vals*/ // chamber diff --git a/src/slic3r/GUI/DeviceCore/DevExtensionTool.h b/src/slic3r/GUI/DeviceCore/DevExtensionTool.h index 02f0b6a213..c3b9c5b0b7 100644 --- a/src/slic3r/GUI/DeviceCore/DevExtensionTool.h +++ b/src/slic3r/GUI/DeviceCore/DevExtensionTool.h @@ -31,7 +31,7 @@ protected: DevExtensionTool(MachineObject* obj); private: - MachineObject* m_owner = nullptr; + [[maybe_unused]] MachineObject* m_owner = nullptr; enum MountState { diff --git a/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h b/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h index efdad308b2..ca59b9fd3e 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h +++ b/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h @@ -28,7 +28,7 @@ public: void SetAutoRefillEnabled(bool enable) { m_enable_auto_refill = enable; } private: - DevFilaSystem* m_owner = nullptr; + [[maybe_unused]] DevFilaSystem* m_owner = nullptr; std::optional<bool> m_enable_detect_on_insert = false; bool m_enable_detect_on_powerup = false; diff --git a/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp b/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp index e75622720c..b59499d9d9 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp +++ b/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp @@ -241,8 +241,11 @@ void check_filaments(const DevFilaBlacklist::CheckFilamentInfo& check_info, DevF std::set<std::string> white_fila_ids = filament_item.contains("white_fila_ids") ? filament_item["white_fila_ids"].get<std::set<std::string>>() : std::set<std::string>(); if (!white_fila_ids.empty() && !check_info.fila_id.empty()) { - auto it = std::find_if(white_fila_ids.begin(), white_fila_ids.end(), [&check_info](const std::string& white_fila_id) { - return white_fila_id == check_info.fila_id; + // check_info.fila_id is our OF id; white_fila_ids in filaments_blacklist.json holds the printer's own. + auto* agent = Slic3r::GUI::wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(check_info.fila_id) : check_info.fila_id; + auto it = std::find_if(white_fila_ids.begin(), white_fila_ids.end(), [&printer_filament_id](const std::string& white_fila_id) { + return white_fila_id == printer_filament_id; }); if (it != white_fila_ids.end()) { continue; } } diff --git a/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp b/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp index 806af9d5f0..e0a230969b 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp +++ b/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp @@ -5,6 +5,7 @@ // TODO: remove this include #include "slic3r/GUI/DeviceManager.hpp" #include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/GUI_App.hpp" #include "DevUtil.h" #include "DevUtilBackend.h" @@ -95,7 +96,12 @@ std::string DevAmsTray::get_filament_type() if (m_fila_type == "Sup.ABS") { return "ABS-S"; } if (m_fila_type == "Support W") { return "PLA-S"; } if (m_fila_type == "Support G") { return "PA-S"; } - if (m_fila_type == "Support") { if (setting_id == "GFS00") { m_fila_type = "PLA-S"; } else if (setting_id == "GFS01") { m_fila_type = "PA-S"; } else { return "PLA-S"; } } + // setting_id is our OF id; GFS00/GFS01 are the printer's own support-filament ids. + if (m_fila_type == "Support") { + auto* agent = GUI::wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(setting_id) : setting_id; + if (printer_filament_id == "GFS00") { m_fila_type = "PLA-S"; } else if (printer_filament_id == "GFS01") { m_fila_type = "PA-S"; } else { return "PLA-S"; } + } return m_fila_type; } @@ -654,11 +660,14 @@ void DevFilaSystemParser::ParseV1_0(const json& jj, MachineObject* obj, DevFilaS curr_tray->setting_id = (*tray_it)["tray_info_idx"].get<std::string>(); //std::string type = (*tray_it)["tray_type"].get<std::string>(); std::string type = MachineObject::setting_id_to_type(curr_tray->setting_id, (*tray_it)["tray_type"].get<std::string>()); - if (curr_tray->setting_id == "GFS00") + // curr_tray->setting_id is our OF id; GFS00/GFS01 are the printer's own support-filament ids. + auto* agent = GUI::wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(curr_tray->setting_id) : curr_tray->setting_id; + if (printer_filament_id == "GFS00") { curr_tray->m_fila_type = "PLA-S"; } - else if (curr_tray->setting_id == "GFS01") + else if (printer_filament_id == "GFS01") { curr_tray->m_fila_type = "PA-S"; } diff --git a/src/slic3r/GUI/DeviceCore/DevFilaSystem.h b/src/slic3r/GUI/DeviceCore/DevFilaSystem.h index 36354cebbf..51fb744f72 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaSystem.h +++ b/src/slic3r/GUI/DeviceCore/DevFilaSystem.h @@ -58,7 +58,7 @@ public: std::string id; std::string tag_uid; // tag_uid - std::string setting_id; // tray_info_idx + std::string setting_id; // tray_info_idx, map to the filament_id std::string filament_setting_id; // setting_id std::string m_fila_type; std::string sub_brands; diff --git a/src/slic3r/GUI/DeviceCore/DevHMS.h b/src/slic3r/GUI/DeviceCore/DevHMS.h index 205cad77b3..f72d899187 100644 --- a/src/slic3r/GUI/DeviceCore/DevHMS.h +++ b/src/slic3r/GUI/DeviceCore/DevHMS.h @@ -21,7 +21,7 @@ public: const std::vector<DevHMSItem>& GetHMSItems() const { return m_hms_list; }; private: - MachineObject* m_object = nullptr; + [[maybe_unused]] MachineObject* m_object = nullptr; // all hms for this machine std::vector<DevHMSItem> m_hms_list; diff --git a/src/slic3r/GUI/DeviceCore/DevInfo.h b/src/slic3r/GUI/DeviceCore/DevInfo.h index 66224888e6..259c277e46 100644 --- a/src/slic3r/GUI/DeviceCore/DevInfo.h +++ b/src/slic3r/GUI/DeviceCore/DevInfo.h @@ -34,7 +34,7 @@ private: //std::string m_connect_type; //std::string m_bind_state; - MachineObject* m_owner = nullptr; + [[maybe_unused]] MachineObject* m_owner = nullptr; }; } // namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/DeviceCore/DevManager.cpp b/src/slic3r/GUI/DeviceCore/DevManager.cpp index 8844303793..feb6301df3 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.cpp +++ b/src/slic3r/GUI/DeviceCore/DevManager.cpp @@ -872,7 +872,7 @@ namespace Slic3r obj->m_is_online = elem["dev_online"].get<bool>(); if (elem.contains("dev_model_name") && !elem["dev_model_name"].is_null()) { auto printer_type = elem["dev_model_name"].get<std::string>(); - for (const std::pair<std::string, std::vector<std::string>> &pair : device_subseries) { + for (const auto &pair : device_subseries) { auto it = std::find(pair.second.begin(), pair.second.end(), printer_type); if (it != pair.second.end()) { diff --git a/src/slic3r/GUI/DeviceCore/DevStatus.h b/src/slic3r/GUI/DeviceCore/DevStatus.h index 45f76d2239..4ed0d5c416 100644 --- a/src/slic3r/GUI/DeviceCore/DevStatus.h +++ b/src/slic3r/GUI/DeviceCore/DevStatus.h @@ -36,7 +36,7 @@ public: void ParseStatus(const nlohmann::json& print_jj); private: - MachineObject *m_owner = nullptr; + [[maybe_unused]] MachineObject *m_owner = nullptr; std::optional<DevJobState> m_job_state; // could be nullopt for some old firmware }; diff --git a/src/slic3r/GUI/DeviceCore/DevStorage.h b/src/slic3r/GUI/DeviceCore/DevStorage.h index 537665f778..8ac53b7fea 100644 --- a/src/slic3r/GUI/DeviceCore/DevStorage.h +++ b/src/slic3r/GUI/DeviceCore/DevStorage.h @@ -31,7 +31,7 @@ public: bool is_timelapse_storage_low(const std::string& storage) const; private: - MachineObject *m_owner; + [[maybe_unused]] MachineObject *m_owner; SdcardState m_sdcard_state { NO_SDCARD }; // timelapse storage space info (from device push cam data) int tl_internal_free_kb{-1}; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index d8487f4660..782574c220 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -110,7 +110,9 @@ bool Slic3r::is_stringing_prone_filament(const std::string& filament_id, float n if (filament_id.empty()) return false; const auto* set = pick_stringing_set(nozzle_diameter); if (!set) return false; - return set->count(filament_id) > 0; + // filament_id is one of our content-addressed OF ids; the table above is keyed by the printer's own. + auto* agent = Slic3r::GUI::wxGetApp().getAgent(); + return set->count(agent ? agent->from_orca_filament_id(filament_id) : filament_id) > 0; } wxString Slic3r::get_stage_string(int stage) @@ -5048,10 +5050,13 @@ DevAmsTray MachineObject::parse_vt_tray(json vtray) vt_tray.setting_id = vtray["tray_info_idx"].get<std::string>(); //std::string type = vtray["tray_type"].get<std::string>(); std::string type = setting_id_to_type(vt_tray.setting_id, vtray["tray_type"].get<std::string>()); - if (vt_tray.setting_id == "GFS00") { + // vt_tray.setting_id is our OF id (translated on the way in); the two support ids below are the printer's own. + auto* agent = GUI::wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(vt_tray.setting_id) : vt_tray.setting_id; + if (printer_filament_id == "GFS00") { vt_tray.m_fila_type = "PLA-S"; } - else if (vt_tray.setting_id == "GFS01") { + else if (printer_filament_id == "GFS01") { vt_tray.m_fila_type = "PA-S"; } else { @@ -5592,7 +5597,10 @@ void MachineObject::update_filament_list() for (auto it = filament_list.begin(); it != filament_list.end(); it++) { if (m_filament_list.find(it->first) != m_filament_list.end()) { - assert(it->first.size() == 8 && it->first[0] == 'P'); + // User roots may legitimately carry adopted system-shaped ids (GF*/OF*/P-hex + // system), so a non-'P' id here is expected, not an invariant violation. + if (it->first.size() != 8 || it->first[0] != 'P') + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": user-root filament_id is not user-shaped: " << it->first; if (it->second.first != m_filament_list[it->first].first) { BOOST_LOG_TRIVIAL(info) << "old min temp is not equal to new min temp and filament id: " << it->first; @@ -5654,6 +5662,17 @@ void MachineObject::update_printer_preset_name() void MachineObject::check_ams_filament_valid() { PresetBundle * preset_bundle = Slic3r::GUI::wxGetApp().preset_bundle; + // A tray id carried by ANY system filament preset is not a dangling user-preset id + // (ten shipped P-hex system ids pass the 'P' shape gates below), so the destructive + // tray-wipe / temp-rewrite handling must never fire for it. + auto is_system_filament_id = [preset_bundle](const std::string &id) { + if (!preset_bundle) + return false; + for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) + if (it->is_system && it->filament_id == id) + return true; + return false; + }; auto printer_model = DevPrinterConfigUtil::get_printer_display_name(this->printer_type); std::map<std::string, std::set<std::string>> need_checked_filament_id; for (auto &ams_pair : m_fila_system->GetAmsList()) { @@ -5675,6 +5694,8 @@ void MachineObject::check_ams_filament_valid() auto &checked_filament = data.checked_filament; for (const auto &[slot_id, curr_tray] : ams->GetTrays()) { + if (curr_tray->setting_id.size() == 8 && curr_tray->setting_id[0] == 'P' && is_system_filament_id(curr_tray->setting_id)) + continue; if (curr_tray->setting_id.size() == 8 && curr_tray->setting_id[0] == 'P' && filament_list.find(curr_tray->setting_id) == filament_list.end()) { if (checked_filament.find(curr_tray->setting_id) != checked_filament.end()) { need_checked_filament_id[nozzle_diameter_str].insert(curr_tray->setting_id); @@ -5735,6 +5756,8 @@ void MachineObject::check_ams_filament_valid() auto &data = m_nozzle_filament_data[nozzle_diameter_str]; auto &checked_filament = data.checked_filament; auto &filament_list = data.filament_list; + if (vt_tray.setting_id.size() == 8 && vt_tray.setting_id[0] == 'P' && is_system_filament_id(vt_tray.setting_id)) + continue; if (vt_tray.setting_id.size() == 8 && vt_tray.setting_id[0] == 'P' && filament_list.find(vt_tray.setting_id) == filament_list.end()) { if (checked_filament.find(vt_tray.setting_id) != checked_filament.end()) { need_checked_filament_id[nozzle_diameter_str].insert(vt_tray.setting_id); diff --git a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp index a258a2178a..8505a559d6 100644 --- a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp +++ b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp @@ -705,7 +705,7 @@ ReselectMachineDialog::ReselectMachineDialog(wxWindow* parent) Centre(); } -void ReselectMachineDialog::Update(MachineObject* obj, const std::map<int, int>& best_pos_map, const std::vector<FilamentInfo>& ams_mapping, wxString save_time) +void ReselectMachineDialog::UpdateInfo(MachineObject* obj, const std::map<int, int>& best_pos_map, const std::vector<FilamentInfo>& ams_mapping, wxString save_time) { if (suggestText) diff --git a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp index be8f957c94..265666bb12 100644 --- a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp +++ b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp @@ -188,7 +188,7 @@ class ReselectMachineDialog : public wxDialog public: ReselectMachineDialog(wxWindow* parent); ~ReselectMachineDialog(); - void Update(MachineObject* obj, + void UpdateInfo(MachineObject* obj, const std::map<int, int>& best_pos_map, const std::vector<FilamentInfo>& ams_mapping, wxString save_time); diff --git a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp index 259506612d..e33987af33 100644 --- a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp +++ b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp @@ -98,7 +98,7 @@ void uiAmsPercentHumidityDryPopup::Create() Refresh(); } -void uiAmsPercentHumidityDryPopup::Update(int humidiy_level, int humidity_percent, int left_dry_time, float current_temperature) +void uiAmsPercentHumidityDryPopup::UpdateInfo(int humidiy_level, int humidity_percent, int left_dry_time, float current_temperature) { if (m_humidity_level != humidiy_level || m_humidity_percent != humidity_percent || m_left_dry_time != left_dry_time || m_current_temperature != current_temperature) diff --git a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h index a109381c86..867e6ac118 100644 --- a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h +++ b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h @@ -38,14 +38,14 @@ public: ~uiAmsPercentHumidityDryPopup() = default; public: - void Update(uiAmsHumidityInfo *info) { m_ams_id = info->ams_id; Update(info->humidity_display_idx, info->humidity_percent, info->left_dry_time, info->current_temperature); }; + void UpdateInfo(uiAmsHumidityInfo *info) { m_ams_id = info->ams_id; UpdateInfo(info->humidity_display_idx, info->humidity_percent, info->left_dry_time, info->current_temperature); }; std::string get_owner_ams_id() const { return m_ams_id; } void msw_rescale(); private: - void Update(int humidiy_level, int humidity_percent, int left_dry_time, float current_temperature); + void UpdateInfo(int humidiy_level, int humidity_percent, int left_dry_time, float current_temperature); void UpdateContents(); void Create(); diff --git a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.cpp b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.cpp index 1e40a71150..44394866c8 100644 --- a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.cpp +++ b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.cpp @@ -399,7 +399,7 @@ void wgtDeviceNozzleRackArea::UpdateNozzleItems(const std::unordered_map<int, wg { for (auto iter : nozzle_items) { - iter.second->Update(nozzle_rack); + iter.second->UpdateInfo(nozzle_rack); } /*update nozzle possition and background*/ @@ -837,7 +837,7 @@ void wgtDeviceNozzleRackNozzleItem::SetSelected(bool selected) } } -void wgtDeviceNozzleRackNozzleItem::Update(const std::shared_ptr<DevNozzleRack> rack, bool on_rack /*= true*/) +void wgtDeviceNozzleRackNozzleItem::UpdateInfo(const std::shared_ptr<DevNozzleRack> rack, bool on_rack /*= true*/) { m_rack = rack; diff --git a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h index 385fa6be48..16cd311120 100644 --- a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h +++ b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h @@ -200,7 +200,7 @@ public: wgtDeviceNozzleRackNozzleItem(wxWindow* parent, int nozzle_id); public: - void Update(const std::shared_ptr<DevNozzleRack> rack, bool on_rack = true); // on_rack is false means extruder nozzle + void UpdateInfo(const std::shared_ptr<DevNozzleRack> rack, bool on_rack = true); // on_rack is false means extruder nozzle int GetNozzleId() const { return m_nozzle_id; } void SetDisplayIdText(const wxString& text) { m_nozzle_label_id->SetLabel(text);}; diff --git a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.cpp b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.cpp index 4dc072d721..f351e7af2b 100644 --- a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.cpp +++ b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleSelect.cpp @@ -114,7 +114,7 @@ static void s_update_nozzle_info(wgtDeviceNozzleRackNozzleItem* item, std::shared_ptr<DevNozzleRack> rack, const DevNozzle& nozzle_info) { - item->Update(rack, nozzle_info.IsOnRack()); + item->UpdateInfo(rack, nozzle_info.IsOnRack()); if (nozzle_info.IsUnknown()) { if (item->GetToolTipText() != _L("Nozzle information needs to be read")) { item->SetToolTip(_L("Nozzle information needs to be read")); diff --git a/src/slic3r/GUI/DragCanvas.hpp b/src/slic3r/GUI/DragCanvas.hpp index aa8d8ddfa8..f39e836673 100644 --- a/src/slic3r/GUI/DragCanvas.hpp +++ b/src/slic3r/GUI/DragCanvas.hpp @@ -3,6 +3,7 @@ #include "wx/bitmap.h" #include "wx/dragimag.h" +#include "wx/panel.h" namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index cd7f5990a7..933e2ac211 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -2,6 +2,7 @@ #include "GUI_App.hpp" #include "MsgDialog.hpp" #include "libslic3r/Preset.hpp" +#include <algorithm> #include "I18N.hpp" #include <boost/log/trivial.hpp> #include <wx/dcgraph.h> @@ -599,8 +600,10 @@ void ExtrusionCalibration::update_combobox_filaments() PresetBundle* preset_bundle = wxGetApp().preset_bundle; if (preset_bundle && obj) { BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size(); - std::string printer_type = obj->printer_type; - std::set<std::string> printer_preset_list; + double nozzle_value = 0.4; + m_comboBox_nozzle_dia->GetValue().ToDouble(&nozzle_value); + + std::vector<PresetWithVendorProfile> printer_profiles; for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) { // only use system printer preset if (!printer_it->is_system) continue; @@ -610,49 +613,42 @@ void ExtrusionCalibration::update_combobox_filaments() ConfigOptionFloats* printer_nozzle_vals = nullptr; if (printer_nozzle_opt) printer_nozzle_vals = dynamic_cast<ConfigOptionFloats*>(printer_nozzle_opt); - double nozzle_value = 0.4; - wxString nozzle_value_str = m_comboBox_nozzle_dia->GetValue(); - try { - nozzle_value_str.ToDouble(&nozzle_value); - } catch(...) { - ; - } if (!model_id.empty() && model_id.compare(obj->printer_type) == 0 && printer_nozzle_vals && abs(printer_nozzle_vals->get_at(0) - nozzle_value) < 1e-3) { - printer_preset_list.insert(printer_it->name); + printer_profiles.push_back(preset_bundle->printers.get_preset_with_vendor_profile(*printer_it)); BOOST_LOG_TRIVIAL(trace) << "extrusion_cali: printer_model = " << model_id; } else { BOOST_LOG_TRIVIAL(error) << "extrusion_cali: printer_model = " << model_id; } } + // Unlike the AMS dialogs this one offers every matching preset by full name rather than one + // root preset per alias, so it filters the collection itself instead of calling + // PresetBundle::get_filament_presets_for_machine(). for (auto filament_it = preset_bundle->filaments.begin(); filament_it != preset_bundle->filaments.end(); filament_it++) { - ConfigOption* printer_opt = filament_it->config.option("compatible_printers"); - ConfigOptionStrings* printer_strs = dynamic_cast<ConfigOptionStrings*>(printer_opt); - for (auto printer_str : printer_strs->values) { - if (printer_preset_list.find(printer_str) != printer_preset_list.end()) { - user_filaments.push_back(&(*filament_it)); + const PresetWithVendorProfile filament = preset_bundle->filaments.get_preset_with_vendor_profile(*filament_it); + if (std::none_of(printer_profiles.begin(), printer_profiles.end(), + [&filament](const PresetWithVendorProfile &printer) { return is_compatible_with_printer(filament, printer); })) + continue; - // set default filament id - filament_index++; - if (filament_it->is_system - && !ams_filament_id.empty() - && filament_it->filament_id == ams_filament_id - ) { - curr_selection = filament_index; - } + user_filaments.push_back(&(*filament_it)); - if (filament_it->name == obj->extrusion_cali_filament_name && !obj->extrusion_cali_filament_name.empty()) - { - curr_selection = filament_index; - } - - wxString filament_name = wxString::FromUTF8(filament_it->name); - filament_items.Add(filament_name); - break; - } + // set default filament id + filament_index++; + if (filament_it->is_system + && !ams_filament_id.empty() + && filament_it->filament_id == ams_filament_id + ) { + curr_selection = filament_index; } + + if (filament_it->name == obj->extrusion_cali_filament_name && !obj->extrusion_cali_filament_name.empty()) + { + curr_selection = filament_index; + } + + filament_items.Add(wxString::FromUTF8(filament_it->name)); } m_comboBox_filament->Set(filament_items); m_comboBox_filament->SetSelection(curr_selection); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index dbbf5ec5e2..b7564551f8 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -941,7 +941,11 @@ void TextCtrl::BUILD() { temp->SetToolTip(get_tooltip_text(text_value)); if (!m_opt.multiline) { - text_ctrl->Bind(wxEVT_TEXT_ENTER, ([this, temp](wxEvent &e) + text_ctrl->Bind(wxEVT_TEXT_ENTER, ([ +#if !defined(__WXGTK__) + temp, +#endif // __WXGTK__ + this](wxEvent &e) { #if !defined(__WXGTK__) e.Skip(); @@ -973,7 +977,11 @@ void TextCtrl::BUILD() { temp->GetToolTip()->Enable(flag); }), text_ctrl->GetId()); - temp->Bind(wxEVT_KILL_FOCUS, ([this, temp](wxEvent &e) + temp->Bind(wxEVT_KILL_FOCUS, ([ +#if !defined(__WXGTK__) + temp, +#endif // __WXGTK__ + this](wxEvent &e) { e.Skip(); #if !defined(__WXGTK__) @@ -1324,7 +1332,7 @@ void SpinCtrl::BUILD() { bEnterPressed = true; }), temp->GetId()); - temp->GetTextCtrl()->Bind(wxEVT_TEXT, ([this, temp](wxCommandEvent e) + temp->GetTextCtrl()->Bind(wxEVT_TEXT, ([this](wxCommandEvent e) { // # On OSX / Cocoa, SpinInput::GetValue() doesn't return the new value // # when it was changed from the text control, so the on_change callback @@ -2597,7 +2605,11 @@ void ColourPicker::BUILD() // // recast as a wxWindow to fit the calling convention window = dynamic_cast<wxWindow*>(temp); - temp->Bind(wxEVT_COLOURPICKER_CHANGED, ([this,temp](wxCommandEvent e) { + temp->Bind(wxEVT_COLOURPICKER_CHANGED, ([ + #ifdef __WXMSW__ + temp, + #endif + this](wxCommandEvent e) { #ifdef __WXMSW__ draw_bmp_btn(temp, temp->GetColour()); #endif @@ -2699,7 +2711,8 @@ void ColourPicker::set_value(const boost::any& value, bool change_event) auto field = dynamic_cast<wxColourPickerCtrl*>(window); #ifdef __WXMSW__ - wxColour clr = (clr_str.IsEmpty() || !clr.IsOk()) ? wxTransparentColour : clr_str; + const wxColour parsed_clr(clr_str); + wxColour clr = (clr_str.IsEmpty() || !parsed_clr.IsOk()) ? wxTransparentColour : parsed_clr; field->SetColour(clr); draw_bmp_btn(field, clr); #else diff --git a/src/slic3r/GUI/FilamentBitmapUtils.cpp b/src/slic3r/GUI/FilamentBitmapUtils.cpp index 1f51fc79b3..3af3d1ad01 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.cpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.cpp @@ -1,16 +1,66 @@ #include <wx/dcmemory.h> +#include <wx/dcgraph.h> #include <wx/graphics.h> +#include <wx/settings.h> +#include <wx/window.h> #include <algorithm> #include <cmath> +#include <map> +#include <numeric> +#include <string> +#include <tuple> #include "EncodedFilament.hpp" #include "FilamentBitmapUtils.hpp" #include "GUI_App.hpp" +#include "GuiColor.hpp" +#include "I18N.hpp" +#include "Widgets/Label.hpp" +#include "Widgets/StateColor.hpp" #include "libslic3r/FilamentMixer.hpp" #include "libslic3r/PrintConfig.hpp" namespace Slic3r { namespace GUI { +// Barycentric utilities for a ternary (triangle) ratio picker. +double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c) +{ + return (b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y); +} + +bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) +{ + double total = tri_signed_area2(v0, v1, v2); + if (std::abs(total) < 1e-9) return false; + double s0 = tri_signed_area2(p, v1, v2) / total; + double s1 = tri_signed_area2(v0, p, v2) / total; + double s2 = 1.0 - s0 - s1; + return s0 >= -0.001 && s1 >= -0.001 && s2 >= -0.001; +} + +void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, + double& w0, double& w1, double& w2) +{ + double total = std::abs(tri_signed_area2(v0, v1, v2)); + if (total < 1e-9) { w0 = w1 = w2 = 1.0 / 3.0; return; } + w0 = std::abs(tri_signed_area2(p, v1, v2)) / total; + w1 = std::abs(tri_signed_area2(v0, p, v2)) / total; + w2 = 1.0 - w0 - w1; + w0 = std::clamp(w0, 0.0, 1.0); + w1 = std::clamp(w1, 0.0, 1.0); + w2 = std::clamp(w2, 0.0, 1.0); + double s = w0 + w1 + w2; + if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } +} + +TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) +{ + double w0, w1, w2; + tri_barycentric(p, v0, v1, v2, w0, w1, w2); + return {w0 * v0.x + w1 * v1.x + w2 * v2.x, + w0 * v0.y + w1 * v1.y + w2 * v2.y}; +} + void fill_gradient_rect_east(wxDC& dc, const wxRect& rect, const wxColour& from, const wxColour& to) { if (rect.width <= 0 || rect.height <= 0) return; @@ -73,7 +123,7 @@ std::vector<wxColour> sample_gradient_ramp(const wxColour& first, // Resolve the curve a gradient slot is sampled with, mirroring the slicer's fallback in // ToolOrdering: a custom curve wins, otherwise a straight line between gradient_range's // endpoints, otherwise the 0.10 -> 0.90 default. -static Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot) +Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot) { const auto* curve_opt = cfg.option<ConfigOptionStrings>("filament_mixed_gradient_curve"); if (curve_opt && slot < curve_opt->values.size() && !curve_opt->values[slot].empty()) { @@ -449,4 +499,378 @@ void recompute_mixed_slot_colors(std::vector<wxColour>& colors, } } +namespace { + +// Layout ratios of the gradient plot rect, copied from GradientCurveEditor so the read-only +// preview and the interactive editor stay pixel-identical. Plot rect is square 1:1; the +// right/bottom margins host the axis arrows and labels. +constexpr double kPlotLeftRatio = 0.0316; +constexpr double kPlotRightRatio = 0.6766; +constexpr double kPlotTopRatio = 0.1529; +constexpr double kPlotBottomRatio = 0.8474; +constexpr int kGridDivisions = 9; // 10 grid lines including the outer borders. +constexpr int kStrokeAxis = 2; // axis line width (px, no DPI scaling) +constexpr int kAxisArrowHalf = 5; // half-base of the axis arrow triangle (DIP) +constexpr int kAxisArrowLen = 10; // length of the axis arrow triangle (DIP) +constexpr int kPointRadius = 4; // anchor outer radius (DIP) +constexpr float kBgSimilarThreshold = 15.0f; +constexpr int kOutlineExtraDip = 2; +constexpr double kTriangleMarginDip = 20.0; + +// Quadratic blend that never goes out of gamut, matching MixedFilamentDialog::blend_colors. +wxColour lerp_blend(const wxColour& a, const wxColour& b, double ratio_a) +{ + unsigned char r, g, bl; + Slic3r::filament_mixer_lerp(a.Red(), a.Green(), a.Blue(), + b.Red(), b.Green(), b.Blue(), + static_cast<float>(1.0 - ratio_a), &r, &g, &bl); + return wxColour(r, g, bl); +} + +// DIP conversion for these free functions: unlike the wxWindow member FromDIP, it needs the +// window parameter explicitly; nullptr picks the app's default DPI like the Publish dialog does. +int dip_px(int v) { return wxWindow::FromDIP(v, nullptr); } + +} // namespace + +wxRect mixed_gradient_plot_rect(const wxSize& sz) +{ + const int x = static_cast<int>(std::lround(sz.x * kPlotLeftRatio)); + const int y = static_cast<int>(std::lround(sz.y * kPlotTopRatio)); + const int x2 = static_cast<int>(std::lround(sz.x * kPlotRightRatio)); + const int y2 = static_cast<int>(std::lround(sz.y * kPlotBottomRatio)); + const int side = std::max(1, std::min(x2 - x, y2 - y)); + return wxRect(x, y, side, side); +} + +void draw_mixed_gradient_plot(wxDC& raw_dc, const wxSize& canvas, + const std::vector<MixedGradientCurve>& curves, + const std::vector<wxPoint2DDouble>& anchors, + const MixedGradientTheme& theme) +{ + // Draw into an internal opaque buffer so wxGCDC text/curves anti-alias against a solid + // background (never a transparent one), then blit the finished image onto the caller's + // buffered paint DC. wxGCDC cannot wrap a generic wxDC&, so the buffer is always a + // wxMemoryDC -- the one type wxGCDC accepts on every platform. + if (canvas.x <= 0 || canvas.y <= 0) + return; + const wxRect rc = mixed_gradient_plot_rect(canvas); + if (rc.width <= 0 || rc.height <= 0) + return; + + wxBitmap buf(canvas); + wxMemoryDC memdc(buf); + memdc.SetBackground(wxBrush(theme.background)); + memdc.Clear(); + wxGCDC dc(memdc); + wxGraphicsContext* gc = dc.GetGraphicsContext(); + + // 10x10 light grid (10 lines including outer borders, 9 equal divisions). + dc.SetPen(wxPen(theme.grid, 1)); + for (int i = 0; i <= kGridDivisions; ++i) { + const int x = rc.x + rc.width * i / kGridDivisions; + const int y = rc.y + rc.height * i / kGridDivisions; + dc.DrawLine(x, rc.y, x, rc.y + rc.height); + dc.DrawLine(rc.x, y, rc.x + rc.width, y); + } + + // Set the label font first so text width measurements drive arrow / label placement. + wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); + dc.SetFont(label_font); + + const wxString axis_y_title = _L("Material Ratio"); + const wxString axis_x_title = _L("Model Height"); + const wxString pct_text = wxT("100%"); + const wxSize x_title_sz = dc.GetTextExtent(axis_x_title); + const wxSize y_title_sz = dc.GetTextExtent(axis_y_title); + + wxFont strong_font = label_font; + strong_font.SetWeight(wxFONTWEIGHT_SEMIBOLD); + dc.SetFont(strong_font); + const wxSize pct_text_sz = dc.GetTextExtent(pct_text); + dc.SetFont(label_font); + + // Axes (grey 700) with filled triangle arrows. Y-axis extends above the plot top to the + // canvas top edge; X-axis extends past the plot right toward the canvas right edge. + const int arrow_half = dip_px(kAxisArrowHalf); + const int arrow_len = dip_px(kAxisArrowLen); + dc.SetPen(wxPen(theme.axis, kStrokeAxis)); + dc.SetBrush(wxBrush(theme.axis)); + + const int y_axis_x = rc.x; + const int y_title_pct_gap = dip_px(1); + const int y_title_bottom_pad = dip_px(2); + const int y_title_y = std::max(0, rc.y - y_title_sz.y - y_title_pct_gap - pct_text_sz.y - y_title_bottom_pad); + const int y_arrow_tip_y = y_title_y; + const int y_arrow_ty = y_arrow_tip_y + arrow_len; + dc.DrawLine(y_axis_x, y_arrow_ty, y_axis_x, rc.y + rc.height); + { + wxPoint tri[3] = { + wxPoint(y_axis_x, y_arrow_tip_y), + wxPoint(y_axis_x - arrow_half, y_arrow_ty), + wxPoint(y_axis_x + arrow_half, y_arrow_ty), + }; + dc.DrawPolygon(3, tri); + } + + const int x_axis_y = rc.y + rc.height; + const int x_label_gap = dip_px(4); + const int x_edge_pad = dip_px(6); + const int x_arrow_ideal = rc.x + rc.width + dip_px(10); + const int x_arrow_max = canvas.x - x_title_sz.x - x_label_gap - x_edge_pad - arrow_len; + const int x_arrow_tx = std::max(rc.x + rc.width + arrow_len, std::min(x_arrow_ideal, x_arrow_max)); + const int x_arrow_tip_x = x_arrow_tx + arrow_len; + const int x_title_x = x_arrow_tip_x + x_label_gap; + dc.DrawLine(rc.x, x_axis_y, x_arrow_tx, x_axis_y); + { + wxPoint tri[3] = { + wxPoint(x_arrow_tip_x, x_axis_y), + wxPoint(x_arrow_tx, x_axis_y - arrow_half), + wxPoint(x_arrow_tx, x_axis_y + arrow_half), + }; + dc.DrawPolygon(3, tri); + } + + // Labels: "Material Ratio" and the leading "100%" share the same left x; the trailing + // "Model Height" follows the X-axis arrow tip (already clamped to make room). + const int label_left_x = y_axis_x + dip_px(10); + dc.SetTextForeground(theme.label); + dc.DrawText(axis_y_title, label_left_x, y_title_y); + + dc.SetFont(strong_font); + dc.SetTextForeground(theme.label_strong); + dc.DrawText(pct_text, label_left_x, y_title_y + y_title_sz.y + y_title_pct_gap); + + dc.DrawText(pct_text, rc.x + rc.width - pct_text_sz.x, x_axis_y); + dc.SetFont(label_font); + dc.SetTextForeground(theme.label); + dc.DrawText(axis_x_title, x_title_x, x_axis_y - x_title_sz.y / 2); + + if (!gc) + return; + + // Outline only when the curve colour is perceptually close to the background; otherwise the + // plain filament colour reads fine and the extra stroke would look heavy. + auto needs_outline = [&](const wxColour& c) { + return calc_color_distance(c, theme.background) < kBgSimilarThreshold; + }; + + // Only the geometry goes through the graphics context: dc.DrawLines() takes integer wxPoint + // and would quantize the curve back to whole pixels. The pen is still set on the dc, which + // forwards it here while keeping its own cached state in sync for later dc drawing. + auto draw_polyline = [&](const MixedGradientCurve& curve) { + if (curve.points.size() < 2) + return; + dc.SetPen(wxPen(curve.colour, dip_px(curve.stroke_dip))); + gc->StrokeLines(curve.points.size(), curve.points.data()); + }; + + for (const MixedGradientCurve& curve : curves) { + if (needs_outline(curve.colour)) + draw_polyline({curve.points, theme.outline, curve.stroke_dip + kOutlineExtraDip}); + draw_polyline(curve); + } + + // Control points: hollow circle with axis-colour border, theme-aware fill, drawn with a + // sub-pixel centre so the ring stays centred on the curve. + if (!anchors.empty()) { + const double r = dip_px(kPointRadius); + dc.SetPen(wxPen(theme.axis, 1)); + dc.SetBrush(wxBrush(theme.point_fill)); + for (const wxPoint2DDouble& p : anchors) + gc->DrawEllipse(p.m_x - r, p.m_y - r, r * 2, r * 2); + } + + memdc.SelectObject(wxNullBitmap); + raw_dc.DrawBitmap(buf, 0, 0); +} + +void draw_mixed_ratio_blend_bar(wxDC& dc, const wxRect& rect, const wxColour& first, + const wxColour& second, double second_fraction) +{ + if (rect.width <= 0 || rect.height <= 0) + return; + for (int x = 0; x < rect.width; ++x) { + const double t = rect.width > 1 ? double(x) / rect.width : 0.0; + const wxColour c = lerp_blend(first, second, 1.0 - t); + dc.SetPen(wxPen(c)); + dc.DrawLine(rect.x + x, rect.y, rect.x + x, rect.y + rect.height); + } + + // Fixed in both themes, like the triangle picker's drag handle: the divider is drawn over + // blended filament colour, so it has to keep its contrast against data rather than chrome. + const int div_x = rect.x + static_cast<int>(second_fraction * rect.width); + dc.SetPen(wxPen(wxColour(80, 80, 80), dip_px(4))); + dc.DrawLine(div_x, rect.y, div_x, rect.y + rect.height); + dc.SetPen(wxPen(*wxWHITE, dip_px(2))); + dc.DrawLine(div_x, rect.y, div_x, rect.y + rect.height); +} + +void draw_mixed_ratio_segments(wxDC& dc, const wxRect& rect, const std::vector<wxColour>& colours, + const std::vector<double>& shares) +{ + const size_t n = std::min(colours.size(), shares.size()); + if (n == 0 || rect.width <= 0 || rect.height <= 0) + return; + std::vector<double> norm = shares; + double total = 0.0; + for (double s : norm) + total += s; + if (total <= 0.0) { + norm.assign(n, 1.0 / n); + total = 1.0; + } + auto share_to_px = [&](double share_sum) { return rect.x + int(std::lround(share_sum / total * double(rect.width))); }; + int x0 = rect.x; + std::vector<wxRect> segs(n); + for (size_t i = 0; i < n; ++i) { + int x1 = rect.x + rect.width; + if (i + 1 < n) + x1 = share_to_px(std::accumulate(norm.begin(), norm.begin() + i + 1, 0.0)); + segs[i] = wxRect(x0, rect.y, std::max(1, x1 - x0), rect.height); + x0 = segs[i].GetRight() + 1; + } + for (size_t i = 0; i < n; ++i) { + dc.SetPen(*wxTRANSPARENT_PEN); + dc.SetBrush(wxBrush(colours[i])); + dc.DrawRectangle(segs[i]); + } + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#ACACAC")), 1)); + dc.DrawRectangle(rect); +} + +namespace { + +struct TriCacheKey +{ + int w, h; + int c0r, c0g, c0b, c1r, c1g, c1b, c2r, c2g, c2b; + int bg_r, bg_g, bg_b, ol_r, ol_g, ol_b; + bool operator<(const TriCacheKey& o) const + { + return std::tie(w, h, c0r, c0g, c0b, c1r, c1g, c1b, c2r, c2g, c2b, bg_r, bg_g, bg_b, ol_r, ol_g, ol_b) < + std::tie(o.w, o.h, o.c0r, o.c0g, o.c0b, o.c1r, o.c1g, o.c1b, o.c2r, o.c2g, o.c2b, o.bg_r, o.bg_g, o.bg_b, o.ol_r, o.ol_g, o.ol_b); + } +}; + +std::map<TriCacheKey, wxBitmap>& tri_cache() +{ + static std::map<TriCacheKey, wxBitmap> cache; + return cache; +} + +} // namespace + +std::array<TriPoint, 3> mixed_triangle_vertices(const wxSize& size, double margin_dip) +{ + const double pw = size.GetWidth(), ph = size.GetHeight(); + const double margin = dip_px(int(margin_dip)); + const double avail = std::min(pw, ph) - 2.0 * margin; + const double side = avail; + const double tri_h = side * std::sqrt(3.0) / 2.0; + const double cx = pw / 2.0; + const double top_y = (ph - tri_h) / 2.0; + return {{{cx, top_y}, {cx - side / 2.0, top_y + tri_h}, {cx + side / 2.0, top_y + tri_h}}}; +} + +void draw_mixed_triangle_picker(wxDC& dc, const wxSize& size, const std::array<wxColour, 3>& colours, + const std::array<double, 3>& weights, const MixedTriangleTheme& theme) +{ + if (size.GetWidth() <= 0 || size.GetHeight() <= 0) + return; + const std::array<TriPoint, 3> v = mixed_triangle_vertices(size, kTriangleMarginDip); + + dc.SetBrush(wxBrush(theme.background)); + dc.SetPen(*wxTRANSPARENT_PEN); + dc.DrawRectangle(0, 0, size.GetWidth(), size.GetHeight()); + + const wxColour& c0 = colours[0]; + const wxColour& c1 = colours[1]; + const wxColour& c2 = colours[2]; + const TriCacheKey key{size.GetWidth(), size.GetHeight(), + c0.Red(), c0.Green(), c0.Blue(), + c1.Red(), c1.Green(), c1.Blue(), + c2.Red(), c2.Green(), c2.Blue(), + theme.background.Red(), theme.background.Green(), theme.background.Blue(), + theme.outline.Red(), theme.outline.Green(), theme.outline.Blue()}; + + wxBitmap& bmp = tri_cache()[key]; + if (!bmp.IsOk()) { + bmp = wxBitmap(size.GetWidth(), size.GetHeight(), 24); + wxMemoryDC mdc(bmp); + mdc.SetBrush(wxBrush(theme.background)); + mdc.SetPen(*wxTRANSPARENT_PEN); + mdc.DrawRectangle(0, 0, size.GetWidth(), size.GetHeight()); + + const int min_y = int(std::min({v[0].y, v[1].y, v[2].y})); + const int max_y = int(std::max({v[0].y, v[1].y, v[2].y})); + const int min_x = int(std::min({v[0].x, v[1].x, v[2].x})); + const int max_x = int(std::max({v[0].x, v[1].x, v[2].x})); + for (int py = min_y; py <= max_y; ++py) { + for (int px = min_x; px <= max_x; ++px) { + const TriPoint p = {double(px), double(py)}; + if (!tri_contains(p, v[0], v[1], v[2])) + continue; + double w0, w1, w2; + tri_barycentric(p, v[0], v[1], v[2], w0, w1, w2); + unsigned char mr, mg, mb; + if (w0 + w1 > 1e-6) { + float t01 = float(w1 / (w0 + w1)); + Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), c1.Red(), c1.Green(), c1.Blue(), t01, &mr, &mg, &mb); + Slic3r::filament_mixer_lerp(mr, mg, mb, c2.Red(), c2.Green(), c2.Blue(), float(w2), &mr, &mg, &mb); + } else { + mr = c2.Red(); mg = c2.Green(); mb = c2.Blue(); + } + mdc.SetPen(wxPen(wxColour(mr, mg, mb))); + mdc.DrawPoint(px, py); + } + } + + mdc.SetPen(wxPen(theme.outline, 1)); + mdc.SetBrush(*wxTRANSPARENT_BRUSH); + const wxPoint pts[3] = {{int(v[0].x), int(v[0].y)}, {int(v[1].x), int(v[1].y)}, {int(v[2].x), int(v[2].y)}}; + mdc.DrawPolygon(3, pts); + mdc.SelectObject(wxNullBitmap); + + // Keep the cache from growing without bound across DPI/size changes. + if (tri_cache().size() > 6) { + auto& cache = tri_cache(); + cache.erase(cache.begin()); + } + } + dc.DrawBitmap(bmp, 0, 0); + + // Published-ratio marker (read-only twin of the editor's drag handle). + const double w0 = weights[0], w1 = weights[1], w2 = weights[2]; + const int hx = int(w0 * v[0].x + w1 * v[1].x + w2 * v[2].x); + const int hy = int(w0 * v[0].y + w1 * v[1].y + w2 * v[2].y); + dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen(wxPen(theme.ring, dip_px(2))); + dc.DrawCircle(hx, hy, dip_px(5)); +} + +void draw_mixed_triangle_labels(wxDC& dc, const wxSize& size, const std::array<double, 3>& weights, + const MixedTriangleTheme& theme) +{ + const std::array<TriPoint, 3> v = mixed_triangle_vertices(size, kTriangleMarginDip); + dc.SetFont(::Label::Body_12); + dc.SetTextForeground(theme.label); + + // "Ratio" title, sitting above the top vertex. + const wxString title = _L("Ratio"); + dc.DrawText(title, dip_px(2), std::max(0, int(v[0].y - dc.GetTextExtent(title).GetHeight() - dip_px(4)))); + + for (int i = 0; i < 3; ++i) { + const wxString text = wxString::Format("%d%%", int(std::lround(weights[i] * 100.0))); + const wxSize tsz = dc.GetTextExtent(text); + int lx = int(v[i].x - tsz.GetWidth() / 2.0); + int ly = (i == 0) ? int(v[i].y - tsz.GetHeight() - dip_px(4)) : int(v[i].y + dip_px(3)); + ly = std::clamp(ly, 0, size.GetHeight() - tsz.GetHeight()); + lx = std::clamp(lx, 0, size.GetWidth() - tsz.GetWidth()); + dc.DrawText(text, lx, ly); + } +} + }} // namespace Slic3r::GUI \ No newline at end of file diff --git a/src/slic3r/GUI/FilamentBitmapUtils.hpp b/src/slic3r/GUI/FilamentBitmapUtils.hpp index 11696f3401..687d34a825 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.hpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.hpp @@ -5,6 +5,9 @@ #include <wx/colour.h> #include <wx/dc.h> #include <wx/gdicmn.h> +#include <wx/geometry.h> +#include <wx/graphics.h> +#include <array> #include <vector> // Orca: forward-declare so the header is self-contained outside libslic3r_gui's @@ -13,6 +16,16 @@ namespace Slic3r { class DynamicPrintConfig; struct GradientCurve; } namespace Slic3r { namespace GUI { +// Barycentric utilities for a ternary (triangle) ratio picker, shared by the mixed-filament +// editor and the Publish dialog's read-only definition preview. +struct TriPoint { double x, y; }; + +double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c); +bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2); +void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, + double& w0, double& w1, double& w2); +TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2); + // Fills a rect with a west->east linear gradient by drawing solid 1px columns. // Use instead of wxDC::GradientFillLinear, whose CoreGraphics (CGShading) backend // fails to render on some macOS builds; solid fills are unaffected. @@ -51,6 +64,12 @@ std::vector<wxColour> sample_gradient_ramp(const wxColour& first, // destination's height in pixels. std::vector<wxColour> mixed_gradient_ramp(const Slic3r::DynamicPrintConfig& cfg, size_t slot, int steps); +// Resolve the curve a gradient slot is sampled with: the custom curve wins when it has at +// least two points, otherwise a straight line between gradient_range's endpoints, otherwise +// the 0.10 -> 0.90 default. Mirrors the slicer's ToolOrdering fallback so every preview +// agrees with what gets sliced. Always returns a two-point curve. +Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot); + // Fill rect with a ramp, ramp.front() along the bottom edge. void fill_gradient_ramp_rect(wxDC& dc, const wxRect& rect, const std::vector<wxColour>& ramp); @@ -63,6 +82,81 @@ wxBitmap create_gradient_ramp_bitmap(const std::vector<wxColour>& ramp, const wx void recompute_mixed_slot_colors(std::vector<wxColour>& colors, const Slic3r::DynamicPrintConfig& cfg); +// --- Gradient plot (shared by GradientCurveEditor and the Publish dialog's read-only +// preview). The plot is a square 1:1 rect laid out with the editor's ratios so both +// render identically; curves are drawn as sub-pixel anti-aliased polylines through +// wxGCDC so they never quantize to whole pixels. + +// One curve of the plot: screen-space sub-pixel points already mapped into the plot +// rect, the stroke colour and the stroke width in DIP. +struct MixedGradientCurve +{ + std::vector<wxPoint2DDouble> points; + wxColour colour; + int stroke_dip; +}; + +// Theme tokens, resolved by the caller through StateColor::darkModeColorFor. +struct MixedGradientTheme +{ + wxColour background; // for near-background outline detection + wxColour grid; // grid line + wxColour axis; // axis + arrow fill + wxColour label; // "Material Ratio" / "Model Height" + wxColour label_strong; // "100%" + wxColour outline; // near-background curve lift + wxColour point_fill; // anchor fill +}; + +// Square 1:1 plot rect inside `canvas`, using the editor's plot ratios. +wxRect mixed_gradient_plot_rect(const wxSize& canvas); + +// Draw the whole plot (grid, axes + arrowheads, axis labels, each curve with an optional +// near-background outline, and anchor circles). `anchors` are empty when the caller has +// none to show. `dc` is the caller's buffered paint DC; a wxGCDC is created inside so the +// geometry gets anti-aliased. +void draw_mixed_gradient_plot(wxDC& dc, const wxSize& canvas, + const std::vector<MixedGradientCurve>& curves, + const std::vector<wxPoint2DDouble>& anchors, + const MixedGradientTheme& theme); + +// --- Ratio bar (2-component continuous blend + divider, matching MixedFilamentDialog). +// Colours blend first->second across the rect; the divider marks `second_fraction` of the +// rect's width (the second component's share, 0..1). +void draw_mixed_ratio_blend_bar(wxDC& dc, const wxRect& rect, const wxColour& first, + const wxColour& second, double second_fraction); + +// Fallback ratio bar for N>2 non-gradient slots: one solid segment per component, +// widths proportional to shares. Label text (the "NN%" inside wide-enough segments) is +// the caller's concern. +void draw_mixed_ratio_segments(wxDC& dc, const wxRect& rect, const std::vector<wxColour>& colours, + const std::vector<double>& shares); + +// --- Triangle picker (3-component), shared by MixedFilamentDialog and the Publish preview. +struct MixedTriangleTheme +{ + wxColour background; + wxColour outline; // triangle border + wxColour ring; // drag-handle ring + wxColour label; // "Ratio" title + per-vertex labels +}; + +// The three vertices of the read-only/miniature triangle inside a `size` square panel, +// with `margin_dip` inset. Order: top, bottom-left, bottom-right. +std::array<TriPoint, 3> mixed_triangle_vertices(const wxSize& size, double margin_dip = 20.0); + +// Draw background, the cached barycentric fill, the outline and the drag-handle marker. +// `weights` are the three barycentric shares (sum 1). The "Ratio" title and per-vertex +// percentage labels are drawn by the caller so the interactive editor can keep its own +// live child labels while the read-only preview draws them as text. +void draw_mixed_triangle_picker(wxDC& dc, const wxSize& size, const std::array<wxColour, 3>& colours, + const std::array<double, 3>& weights, const MixedTriangleTheme& theme); + +// Draw the "Ratio" title plus one "NN%" label per vertex (used by the read-only preview; +// the interactive editor positions its own live labels instead). +void draw_mixed_triangle_labels(wxDC& dc, const wxSize& size, const std::array<double, 3>& weights, + const MixedTriangleTheme& theme); + }} // namespace Slic3r::GUI #endif // slic3r_GUI_FilamentBitmapUtils_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/FilamentMapDialog.cpp b/src/slic3r/GUI/FilamentMapDialog.cpp index 12ca3a2965..7bb6f51421 100644 --- a/src/slic3r/GUI/FilamentMapDialog.cpp +++ b/src/slic3r/GUI/FilamentMapDialog.cpp @@ -241,7 +241,7 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent, wxBoxSizer *mode_sizer = new wxBoxSizer(wxHORIZONTAL); - m_auto_btn = new CapsuleButton(this, PageType::ptAuto, only_saving_mode ? _L("Fila Saving") : _L("Auto"), false); + m_auto_btn = new CapsuleButton(this, PageType::ptAuto, only_saving_mode ? _L("File Saving") : _L("Auto"), false); m_manual_btn = new CapsuleButton(this, PageType::ptManual, _L("Custom"), false); if (show_default) m_default_btn = new CapsuleButton(this, PageType::ptDefault, _L("Same as Global"), true); diff --git a/src/slic3r/GUI/FilamentMapPanel.cpp b/src/slic3r/GUI/FilamentMapPanel.cpp index ed63016438..81117bc2a6 100644 --- a/src/slic3r/GUI/FilamentMapPanel.cpp +++ b/src/slic3r/GUI/FilamentMapPanel.cpp @@ -642,19 +642,12 @@ void FilamentMapBtnPanel::Select(bool selected) Refresh(); } -void GUI::FilamentMapBtnPanel::Hide() +bool GUI::FilamentMapBtnPanel::Show(bool show) { - m_btn->Hide(); - m_label->Hide(); - m_detail->Hide(); - wxPanel::Hide(); -} -void GUI::FilamentMapBtnPanel::Show() -{ - m_btn->Show(); - m_label->Show(); - m_detail->Show(); - wxPanel::Show(); + m_btn->Show(show); + m_label->Show(show); + m_detail->Show(show); + return wxPanel::Show(show); } FilamentMapAutoPanel::FilamentMapAutoPanel(wxWindow *parent, FilamentMapMode mode, bool machine_synced) : wxPanel(parent) @@ -694,18 +687,11 @@ FilamentMapAutoPanel::FilamentMapAutoPanel(wxWindow *parent, FilamentMapMode mod Layout(); GUI::wxGetApp().UpdateDarkUIWin(this); } -void FilamentMapAutoPanel::Hide() +bool FilamentMapAutoPanel::Show(bool show) { - m_flush_panel->Hide(); - m_match_panel->Hide(); - wxPanel::Hide(); -} - -void FilamentMapAutoPanel::Show() -{ - m_flush_panel->Show(); - m_match_panel->Show(); - wxPanel::Show(); + m_flush_panel->Show(show); + m_match_panel->Show(show); + return wxPanel::Show(show); } void FilamentMapAutoPanel::UpdateStatus() @@ -743,16 +729,10 @@ FilamentMapDefaultPanel::FilamentMapDefaultPanel(wxWindow *parent) : wxPanel(par GUI::wxGetApp().UpdateDarkUIWin(this); } -void FilamentMapDefaultPanel::Hide() +bool FilamentMapDefaultPanel::Show(bool show) { - m_label->Hide(); - wxPanel::Hide(); -} - -void FilamentMapDefaultPanel::Show() -{ - m_label->Show(); - wxPanel::Show(); + m_label->Show(show); + return wxPanel::Show(show); } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/FilamentMapPanel.hpp b/src/slic3r/GUI/FilamentMapPanel.hpp index a0caf8e78b..ce7c8010a3 100644 --- a/src/slic3r/GUI/FilamentMapPanel.hpp +++ b/src/slic3r/GUI/FilamentMapPanel.hpp @@ -69,10 +69,9 @@ class FilamentMapBtnPanel : public wxPanel { public: FilamentMapBtnPanel(wxWindow *parent, const wxString &label, const wxString &detail, const std::string &icon_path); - void Hide(); - void Show(); + bool Show(bool show = true) override; void Select(bool selected); - bool Enable(bool enable); + bool Enable(bool enable) override; bool IsEnabled() const { return m_enabled; } protected: void OnPaint(wxPaintEvent &event); @@ -99,8 +98,7 @@ class FilamentMapAutoPanel : public wxPanel { public: FilamentMapAutoPanel(wxWindow *parent, FilamentMapMode mode, bool machine_synced); - void Hide(); - void Show(); + bool Show(bool show = true) override; FilamentMapMode GetMode() const { return m_mode; } private: @@ -116,8 +114,7 @@ class FilamentMapDefaultPanel : public wxPanel { public: FilamentMapDefaultPanel(wxWindow *parent); - void Hide(); - void Show(); + bool Show(bool show = true) override; private: Label *m_label; diff --git a/src/slic3r/GUI/FilamentPickerDialog.cpp b/src/slic3r/GUI/FilamentPickerDialog.cpp index 98c955fb76..5b5af59501 100644 --- a/src/slic3r/GUI/FilamentPickerDialog.cpp +++ b/src/slic3r/GUI/FilamentPickerDialog.cpp @@ -426,11 +426,11 @@ wxScrolledWindow* FilamentPickerDialog::CreateColorGrid() }); // Hover highlight - btn->Bind(wxEVT_ENTER_WINDOW, [btn](wxMouseEvent& evt) { + btn->Bind(wxEVT_ENTER_WINDOW, [](wxMouseEvent& evt) { evt.Skip(); }); - btn->Bind(wxEVT_LEAVE_WINDOW, [btn](wxMouseEvent& evt) { + btn->Bind(wxEVT_LEAVE_WINDOW, [](wxMouseEvent& evt) { evt.Skip(); }); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 15085c3cc4..49477ac7dd 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -785,6 +785,19 @@ void GCodeViewer::SequentialView::GCodeWindow::load_gcode(const std::string& fil } } +// Byte offset just past the first count characters of str, or its length if it is shorter. +static size_t utf8_offset(const std::string& str, size_t count) +{ + const char* const begin = str.c_str(); + const char* const end = begin + str.size(); + const char* pos = begin; + for (size_t i = 0; i < count && pos < end; ++i) { + unsigned int codepoint = 0; + pos += ImTextCharFromUtf8(&codepoint, pos, end); + } + return pos - begin; +} + //BBS: GUI refactor: move to right void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, float right, uint64_t curr_line_id) const { @@ -796,23 +809,27 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, f // read line from file const size_t start = id == 1 ? 0 : m_lines_ends[id - 2]; const size_t original_len = m_lines_ends[id - 1] - start; - const size_t len = std::min(original_len, (size_t) 55); + // A character is four bytes at most, so 55 of them always fit in 220. + const size_t len = std::min(original_len, (size_t) 55 * 4); std::string gline(m_file.data() + start, len); - // If original line is longer than 55 characters, truncate and append "..." - if (original_len > 55) - gline = gline.substr(0, 52) + "..."; + // If original line is longer than 55 characters, truncate and append "...". + // The cut must land on a character boundary or it leaves half a character behind. + if (len < original_len || utf8_offset(gline, 55) < gline.size()) + gline = gline.substr(0, utf8_offset(gline, 52)) + "..."; std::string command, parameters, comment; - // extract comment - std::vector<std::string> tokens; - boost::split(tokens, gline, boost::is_any_of(";"), boost::token_compress_on); - command = tokens.front(); - if (tokens.size() > 1) - comment = ";" + tokens.back(); + const size_t comment_start = gline.find(';'); + if (comment_start == std::string::npos) + command = gline; + else { + command = gline.substr(0, comment_start); + comment = gline.substr(comment_start); + } // extract gcode command and parameters if (!command.empty()) { + std::vector<std::string> tokens; boost::split(tokens, command, boost::is_any_of(" "), boost::token_compress_on); command = tokens.front(); if (tokens.size() > 1) { @@ -2613,7 +2630,7 @@ void GCodeViewer::render_all_plates_stats(const std::vector<const GCodeProcessor return ret; }; - auto append_item = [icon_size, &imgui, imperial_units, &window_padding, &draw_list, this](const ColorRGBA& color, const std::vector<std::pair<std::string, float>>& columns_offsets) + auto append_item = [icon_size, &imgui, &window_padding, &draw_list, this](const ColorRGBA& color, const std::vector<std::pair<std::string, float>>& columns_offsets) { // render icon ImVec2 pos = ImVec2(ImGui::GetCursorScreenPos().x + window_padding * 3, ImGui::GetCursorScreenPos().y); @@ -2648,7 +2665,7 @@ void GCodeViewer::render_all_plates_stats(const std::vector<const GCodeProcessor } ImGui::Separator(); }; - auto get_used_filament_from_volume = [this, imperial_units, &filament_diameters, &filament_densities](double volume, int extruder_id) { + auto get_used_filament_from_volume = [imperial_units, &filament_diameters, &filament_densities](double volume, int extruder_id) { double koef = imperial_units ? 1.0 / GizmoObjectManipulation::in_to_mm : 0.001; std::pair<double, double> ret = { koef * volume / (PI * sqr(0.5 * filament_diameters[extruder_id])), volume * filament_densities[extruder_id] * 0.001 }; @@ -3233,7 +3250,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv //ImVec2(pos_rect.x + ImGui::GetWindowWidth() + ImGui::GetFrameHeight(),pos_rect.y + ImGui::GetFrameHeight() + window_padding * 2.5), //ImGui::GetColorU32(ImVec4(0,0,0,0.3))); - auto append_item = [icon_size, &imgui, imperial_units, &window_padding, &draw_list, this]( + auto append_item = [icon_size, &imgui, &window_padding, &draw_list, this]( EItemType type, const ColorRGBA& color, const std::vector<std::pair<std::string, float>>& columns_offsets, @@ -3368,7 +3385,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; - auto calculate_offsets = [&imgui, max_width, window_padding, this](const std::vector<std::pair<std::string, std::vector<::string>>>& title_columns, float extra_size = 0.0f) { + auto calculate_offsets = [max_width, this](const std::vector<std::pair<std::string, std::vector<::string>>>& title_columns, float extra_size = 0.0f) { const ImGuiStyle& style = ImGui::GetStyle(); std::vector<float> offsets; // ORCA increase spacing for more readable format. Using direct number requires much less code change in here. GetTextLineHeight for additional spacing for icon_size @@ -3856,7 +3873,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv columns_offsets.push_back({ distance_text, offsets[3] }); if (full_layout && !count_text.empty()) columns_offsets.push_back({ count_text, distance_text.empty() ? offsets[3] : offsets[4] }); - append_item(EItemType::Rect, color, columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, type, visible]() { + append_item(EItemType::Rect, color, columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, type]() { m_viewer.toggle_option_visibility(type); update_moves_slider(); }); @@ -3913,7 +3930,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv columns_offsets.push_back({used_filaments_length[i], offsets[3]}); columns_offsets.push_back({used_filaments_weight[i], offsets[4]}); append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_extrusion_role_color(role)), columns_offsets, - true, offsets.back(), visible, [this, role, visible]() { + true, offsets.back(), visible, [this, role]() { m_viewer.toggle_extrusion_role_visibility(role); update_moves_slider(); }); @@ -3932,7 +3949,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv columns_offsets.push_back({ travel_percent, offsets[2] }); columns_offsets.push_back({ travel_distance, offsets[3] }); // Usage column columns_offsets.push_back({ travel_moves, offsets[4] }); // Usage column - append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, item, visible]() { + append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, item]() { m_viewer.toggle_option_visibility(item); update_moves_slider(); }); @@ -3951,7 +3968,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_headers({ {_u8L("Options"), offsets[0] }, { _u8L("Display"), offsets[1]} }); const bool travel_visible = m_viewer.is_option_visible(libvgcode::EOptionType::Travels); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 3.0f)); - append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this, travel_visible]() { + append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this]() { m_viewer.toggle_option_visibility(libvgcode::EOptionType::Travels); // refresh(*m_gcode_result, wxGetApp().plater()->get_extruder_colors_from_plater_config(m_gcode_result)); update_moves_slider(); @@ -3968,7 +3985,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_headers({ {_u8L("Options"), offsets[0] }, { _u8L("Display"), offsets[1]} }); const bool travel_visible = m_viewer.is_option_visible(libvgcode::EOptionType::Travels); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 3.0f)); - append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this, travel_visible]() { + append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this]() { m_viewer.toggle_option_visibility(libvgcode::EOptionType::Travels); // refresh(*m_gcode_result, wxGetApp().plater()->get_extruder_colors_from_plater_config(m_gcode_result)); update_moves_slider(); @@ -3985,7 +4002,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_headers({ {_u8L("Options"), offsets[0] }, { _u8L("Display"), offsets[1]} }); const bool travel_visible = m_viewer.is_option_visible(libvgcode::EOptionType::Travels); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 3.0f)); - append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this, travel_visible]() { + append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this]() { m_viewer.toggle_option_visibility(libvgcode::EOptionType::Travels); update_moves_slider(); }); @@ -4001,7 +4018,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_headers({ {_u8L("Options"), offsets[0] }, { _u8L("Display"), offsets[1]} }); const bool travel_visible = m_viewer.is_option_visible(libvgcode::EOptionType::Travels); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 3.0f)); - append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this, travel_visible]() { + append_item(EItemType::None, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), { {_u8L("Travel"), offsets[0] }}, true, predictable_icon_pos/*ORCA checkbox_pos*/, travel_visible, [this]() { m_viewer.toggle_option_visibility(libvgcode::EOptionType::Travels); update_moves_slider(); }); @@ -4121,7 +4138,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv } float checkbox_pos = std::max(predictable_icon_pos, color_print_offsets[_u8L("Display")]); // ORCA prefer predictable_icon_pos when header not reacing end - append_item(EItemType::Rect, libvgcode::convert(tool_colors[extruder_idx]), columns_offsets, false, checkbox_pos/*ORCA*/, true, [this, extruder_idx]() {}); + append_item(EItemType::Rect, libvgcode::convert(tool_colors[extruder_idx]), columns_offsets, false, checkbox_pos/*ORCA*/, true, []() {}); } i++; } diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 34279369a1..556faaa763 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2191,7 +2191,7 @@ void GLCanvas3D::render(bool only_init) // Negative coordinate means out of the window, likely because the window was deactivated. // In that case the tooltip should be hidden. - if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0. || has_mouse_capture()) { // ORCA continue to capture mouse pos mid drag + if ((m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) || has_mouse_capture()) { // ORCA continue to capture mouse pos mid drag if (tooltip.empty()) tooltip = m_layers_editing.get_tooltip(*this); @@ -2891,23 +2891,37 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; float x = dynamic_cast<const ConfigOptionFloats*>(proj_cfg.option("wipe_tower_x"))->get_at(plate_id); float y = dynamic_cast<const ConfigOptionFloats*>(proj_cfg.option("wipe_tower_y"))->get_at(plate_id); - float w = dynamic_cast<const ConfigOptionFloat*>(m_config->option("prime_tower_width"))->value; float a = dynamic_cast<const ConfigOptionFloat*>(m_config->option("wipe_tower_rotation_angle"))->value; - // BBS - float v = dynamic_cast<const ConfigOptionFloat*>(m_config->option("prime_volume"))->value; Vec3d plate_origin = ppl.get_plate(plate_id)->get_origin(); - const Print* print = m_process->fff_print(); const Print* current_print = part_plate->fff_print(); - if (!need_wipe_tower && part_plate->get_extruders(true).size() < 2) continue; if (part_plate->get_objects_on_this_plate().empty()) continue; - float brim_width = print->wipe_tower_data(filaments_count).brim_width; - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - Vec3d wipe_tower_size = ppl.get_plate(plate_id)->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, 0, false, dynamic_cast<const ConfigOptionBool*>(dconfig.option("enable_wrapping_detection"))->value); + // Body and brim from this plate's own estimate: m_process->fff_print() is the + // selected plate's, so an auto brim drew every tower with that plate's brim. + const WipeTowerFootprint footprint = part_plate->estimate_wipe_tower_footprint(full_config); + // The estimate is also the answer to whether this plate prints a tower; + // deciding it here as well only gave the two room to drift. + if (footprint.depth <= 0.) continue; + float brim_width = float(footprint.brim_width); + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); + + // set_default_wipe_tower_pos_for_plate doesn't rerun when painting changes the + // filament count, so redo its clamp here on every reload — unconditionally: a + // paint-triggered reload can arrive before the background process invalidates + // psWipeTower, so gating on it would skip the clamp exactly when it is needed. + { + Vec3d clamped_pos, clamped_size; + part_plate->estimate_wipe_tower_polygon(full_config, plate_id, clamped_pos, clamped_size); + if (std::abs(x - (float) clamped_pos(0)) > EPSILON || std::abs(y - (float) clamped_pos(1)) > EPSILON) { + x = (float) clamped_pos(0); + y = (float) clamped_pos(1); + ConfigOptionFloat wt_x_opt(x), wt_y_opt(y); + dynamic_cast<ConfigOptionFloats*>(proj_cfg.option("wipe_tower_x"))->set_at(&wt_x_opt, plate_id, 0); + dynamic_cast<ConfigOptionFloats*>(proj_cfg.option("wipe_tower_y"))->set_at(&wt_y_opt, plate_id, 0); + } + } - // The stored position is already clamped onto the bed, by - // set_default_wipe_tower_pos_for_plate and again on every drag. if (!current_print->is_step_done(psWipeTower) || !current_print->wipe_tower_data().wipe_tower_mesh_data) { // update for wipe tower position int volume_idx_wipe_tower_new = m_volumes.load_wipe_tower_preview(1000 + plate_id, x + plate_origin(0), y + plate_origin(1), @@ -4168,7 +4182,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // https://github.com/OrcaSlicer/OrcaSlicer/pull/14999#issuecomment-5151344759 // We solve this by correcting the state of the event from the actual mouse state querying with `wxGetMouseState()` // so it works like on other platforms. - { + // Only fill in state the event does not carry, to preserve wx's synthetic right button for Ctrl+left. + if (!evt.ButtonIsDown(wxMOUSE_BTN_ANY)) { const auto state = wxGetMouseState(); evt.SetLeftDown(state.LeftIsDown()); evt.SetMiddleDown(state.MiddleIsDown()); @@ -9236,7 +9251,7 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); // ORCA show additional information depends on state - auto draw_info_btn = [end_pos, f_scale, margin, window_bg](std::string str, ImVec4 bg_color, ImVec4 fg_color){ + auto draw_info_btn = [end_pos, f_scale, margin](std::string str, ImVec4 bg_color, ImVec4 fg_color){ GImGui->FontSize = 15.0f * f_scale; ImVec2 txt_slice_sz = ImGui::CalcTextSize(str.c_str()); ImVec2 btn_pad = ImVec2(8.f, 1.f) * f_scale; @@ -9492,7 +9507,7 @@ void GLCanvas3D::_render_canvas_toolbar() Plater* p = wxGetApp().plater(); AppConfig* cfg = wxGetApp().app_config; - auto create_menu_item = [this, sc]( + auto create_menu_item = [sc]( const std::string& name, bool enable, bool condition, @@ -9509,7 +9524,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("3D Navigator")), m_canvas_type != ECanvasType::CanvasAssembleView, // not work on assembly wxGetApp().show_3d_navigator(), - [this]{ + []{ wxGetApp().toggle_show_3d_navigator(); ImGui::CloseCurrentPopup(); // Close popup to show changes on UI } @@ -9518,7 +9533,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Zoom button")), true, // work on all wxGetApp().show_canvas_zoom_button(), - [this]{ + []{ wxGetApp().toggle_canvas_zoom_button(); ImGui::CloseCurrentPopup(); // Close popup to show changes on UI } @@ -9529,13 +9544,13 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Overhangs")), m_canvas_type == ECanvasType::CanvasView3D, // work only on prepare p->is_view3D_overhang_shown(), - [this, p]{p->show_view3D_overhang(!p->is_view3D_overhang_shown());} + [p]{p->show_view3D_overhang(!p->is_view3D_overhang_shown());} ); create_menu_item( _utf8(L("Outline")), m_canvas_type != ECanvasType::CanvasPreview, // not work on preview wxGetApp().show_outline(), - [this]{wxGetApp().toggle_show_outline();} + []{wxGetApp().toggle_show_outline();} ); create_menu_item( _utf8(L("Wireframe")), @@ -9547,7 +9562,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Realistic View")), m_canvas_type != ECanvasType::CanvasPreview, // not work on preview cfg->get_bool(SETTING_OPENGL_REALISTIC_MODE), - [this, &cfg]{ + [&cfg]{ cfg->set_bool(SETTING_OPENGL_REALISTIC_MODE, !cfg->get_bool(SETTING_OPENGL_REALISTIC_MODE)); cfg->save(); } @@ -9558,7 +9573,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Perspective")), true, // work on all cfg->get_bool("use_perspective_camera"), - [this, &cfg]{ + [&cfg]{ cfg->set_bool("use_perspective_camera", !(cfg->get_bool("use_perspective_camera"))); wxGetApp().update_ui_from_settings(); } @@ -9575,7 +9590,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Gridlines")), m_canvas_type != ECanvasType::CanvasAssembleView, // not work on assembly wxGetApp().show_plate_gridlines(), - [this]{wxGetApp().toggle_show_plate_gridlines();} + []{wxGetApp().toggle_show_plate_gridlines();} ); ImGui::Separator(); @@ -9583,7 +9598,7 @@ void GLCanvas3D::_render_canvas_toolbar() create_menu_item( _utf8(L("Labels")), m_canvas_type == ECanvasType::CanvasView3D, // work only on prepare p->are_view3D_labels_shown(), - [this, p]{p->show_view3D_labels(!p->are_view3D_labels_shown());} + [p]{p->show_view3D_labels(!p->are_view3D_labels_shown());} ); ImGui::PopItemFlag(); @@ -9765,18 +9780,18 @@ void GLCanvas3D::_render_paint_toolbar() const ImVec2 number_label_size = ImGui::CalcTextSize(std::to_string(i + 1).c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - number_label_size.x) / 2); - ImGui::TextColored(text_color, std::to_string(i + 1).c_str()); + ImGui::TextColored(text_color, "%s", std::to_string(i + 1).c_str()); imgui.pop_bold_font(); ImVec2 filament_first_line_label_size = ImGui::CalcTextSize(filament_text_first_line[i].c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y + number_label_size.y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - filament_first_line_label_size.x) / 2); - ImGui::TextColored(text_color, filament_text_first_line[i].c_str()); + ImGui::TextColored(text_color, "%s", filament_text_first_line[i].c_str()); ImVec2 filament_second_line_label_size = ImGui::CalcTextSize(filament_text_second_line[i].c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y + number_label_size.y + filament_first_line_label_size.y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - filament_second_line_label_size.x) / 2); - ImGui::TextColored(text_color, filament_text_second_line[i].c_str()); + ImGui::TextColored(text_color, "%s", filament_text_second_line[i].c_str()); } if (ImGui::GetWindowWidth() == constraint_window_width) { @@ -10003,9 +10018,9 @@ void GLCanvas3D::_render_assemble_info() const double size1 = m_selection.get_bounding_box().size()(1); double size2 = m_selection.get_bounding_box().size()(2); if (!m_selection.is_empty()) { - ImGui::Text(_L("Volume:").ToUTF8()); ImGui::SameLine(caption_max); + ImGui::Text("%s", _L("Volume:").ToUTF8().data()); ImGui::SameLine(caption_max); ImGui::Text("%.2f", size0 * size1 * size2); - ImGui::Text(_L("Size:").ToUTF8()); ImGui::SameLine(caption_max); + ImGui::Text("%s", _L("Size:").ToUTF8().data()); ImGui::SameLine(caption_max); ImGui::Text("%.2f x %.2f x %.2f", size0, size1, size2); } imgui->end(); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 223829f435..99a829bdcc 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -9,8 +9,10 @@ #include "slic3r/GUI/TaskManager.hpp" #include "format.hpp" #include "libslic3r_version.h" +#include "BuildCommit.hpp" #include "Downloader.hpp" #include <boost/chrono/duration.hpp> +#include <boost/locale/encoding_utf.hpp> #include <boost/log/detail/native_typeof.hpp> #include <libslic3r/Config.hpp> #include <mutex> @@ -2580,7 +2582,7 @@ void GUI_App::init_app_config() set_log_path_and_level(log_filename, 3); #endif - BOOST_LOG_TRIVIAL(info) << boost::format("gui mode, Current OrcaSlicer Version %1% build %2%") % SoftFever_VERSION % GIT_COMMIT_HASH; + BOOST_LOG_TRIVIAL(info) << boost::format("gui mode, Current OrcaSlicer Version %1% build %2%") % SoftFever_VERSION % build_commit_label; //BBS: remove GCodeViewer as seperate APP logic if (!app_config) @@ -2641,7 +2643,7 @@ std::string GUI_App::get_bbl_client_version() void GUI_App::on_start_subscribe_again(std::string dev_id) { auto start_subscribe_timer = new wxTimer(this, wxID_ANY); - Bind(wxEVT_TIMER, [this, start_subscribe_timer, dev_id](auto& e) { + Bind(wxEVT_TIMER, [start_subscribe_timer, dev_id](auto& e) { start_subscribe_timer->Stop(); Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -3231,7 +3233,7 @@ bool GUI_App::on_init_inner() } }); - Bind(EVT_SHOW_NO_NEW_VERSION, [this](const wxCommandEvent& evt) { + Bind(EVT_SHOW_NO_NEW_VERSION, [](const wxCommandEvent& evt) { wxString msg = _L("This is the newest version."); InfoDialog dlg(nullptr, _L("Info"), msg); dlg.ShowModal(); @@ -5256,7 +5258,7 @@ std::string GUI_App::handle_web_request(std::string cmd) } } else if (command_str.compare("begin_network_plugin_download") == 0) { - CallAfter([this] { wxGetApp().ShowDownNetPluginDlg(); }); + CallAfter([] { wxGetApp().ShowDownNetPluginDlg(); }); } else if (command_str.compare("get_web_shortcut") == 0) { if (root.get_child_optional("key_event") != boost::none) { @@ -6806,7 +6808,7 @@ bool GUI_App::check_preset_parent_available(const std::pair<std::string, std::ma void GUI_App::add_pending_vendor_preset(const std::pair<std::string, std::map<std::string, std::string>>& preset_data) { - Preset::Type type; + Preset::Type type = Preset::Type::TYPE_INVALID; if (preset_data.second.at(BBL_JSON_KEY_TYPE) == PRESET_IOT_PRINT_TYPE) type = Preset::Type::TYPE_PRINT; else if (preset_data.second.at(BBL_JSON_KEY_TYPE) == PRESET_IOT_PRINTER_TYPE) @@ -8297,7 +8299,7 @@ bool GUI_App::show_modal_ip_address_enter_dialog(bool input_sn, wxString title) dlg.set_machine_obj(obj); if (!title.empty()) dlg.update_title(title); - dlg.Bind(EVT_ENTER_IP_ADDRESS, [this, obj](wxCommandEvent& e) { + dlg.Bind(EVT_ENTER_IP_ADDRESS, [obj](wxCommandEvent& e) { auto selection_data_arr = wxSplit(e.GetString().ToStdString(), '|'); if (selection_data_arr.size() == 2) { @@ -8777,7 +8779,7 @@ bool GUI_App::check_and_keep_current_preset_changes(const wxString& caption, con if (!no_need_change && dlg.ShowModal() == wxID_CANCEL) return false; - auto reset_modifications = [this, is_called_from_configwizard]() { + auto reset_modifications = [this]() { //if (is_called_from_configwizard) // return; // no need to discared changes. It will be done fromConfigWizard closing diff --git a/src/slic3r/GUI/GUI_AuxiliaryList.cpp b/src/slic3r/GUI/GUI_AuxiliaryList.cpp index 1fa5b194ec..be9f99a76a 100644 --- a/src/slic3r/GUI/GUI_AuxiliaryList.cpp +++ b/src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -217,7 +217,7 @@ void AuxiliaryList::on_context_menu(wxDataViewEvent& evt) } else { append_menu_item(menu, wxID_ANY, _L("Open"), wxEmptyString, - [this, node](wxCommandEvent&) + [node](wxCommandEvent&) { wxLaunchDefaultApplication(node->path, 0); }); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index be407a270f..d8e54978fa 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1414,7 +1414,7 @@ void MenuFactory::create_default_menu() append_menu_check_item(&m_default_menu, wxID_ANY, _L("Show Labels"), "", [](wxCommandEvent&) { plater()->show_view3D_labels(!plater()->are_view3D_labels_shown()); plater()->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, &m_default_menu, - []() { return plater()->is_view3D_shown(); }, [this]() { return plater()->are_view3D_labels_shown(); }, m_parent); + []() { return plater()->is_view3D_shown(); }, []() { return plater()->are_view3D_labels_shown(); }, m_parent); } void MenuFactory::create_common_object_menu(wxMenu* menu) @@ -2090,7 +2090,7 @@ void MenuFactory::append_menu_item_clone(wxMenu* menu) static const wxString ctrl = _L("Ctrl+"); #endif append_menu_item(menu, wxID_ANY, _L("Clone") + "\t" + ctrl + "K", "", - [this](wxCommandEvent&) { + [](wxCommandEvent&) { plater()->clone_selection(); }, "", nullptr, []() { @@ -2115,7 +2115,7 @@ void MenuFactory::append_menu_item_smooth_mesh(wxMenu *menu) void MenuFactory::append_menu_item_center(wxMenu* menu) { append_menu_item(menu, wxID_ANY, _L("Center") , "", - [this](wxCommandEvent&) { + [](wxCommandEvent&) { plater()->center_selection(); }, "", nullptr, []() { @@ -2134,7 +2134,7 @@ void MenuFactory::append_menu_item_center(wxMenu* menu) void MenuFactory::append_menu_item_drop(wxMenu* menu) { append_menu_item(menu, wxID_ANY, _L("Drop") , "", - [this](wxCommandEvent&) { + [](wxCommandEvent&) { plater()->drop_selection(); }, "", nullptr, []() { @@ -2309,7 +2309,7 @@ void MenuFactory::append_menu_item_set_printable(wxMenu* menu) } } - wxMenuItem* menu_item_set_printable = append_menu_check_item(menu, wxID_ANY, _L("Printable") + "\t" + "V", "", [this, all_printable](wxCommandEvent&) { + wxMenuItem* menu_item_set_printable = append_menu_check_item(menu, wxID_ANY, _L("Printable") + "\t" + "V", "", [all_printable](wxCommandEvent&) { Selection& selection = plater()->canvas3D()->get_selection(); selection.set_printable(!all_printable); }, menu); @@ -2329,7 +2329,7 @@ void MenuFactory::append_menu_item_set_auto_drop(wxMenu* menu) wxString menu_tooltip = _L("Automatically snaps the selected object to the build plate."); wxMenuItem* menu_item_set_auto_drop = append_menu_check_item( menu, wxID_ANY, menu_text, menu_tooltip, - [this, current_auto_drop](wxCommandEvent&) { + [current_auto_drop](wxCommandEvent&) { Selection& selection = plater()->canvas3D()->get_selection(); selection.set_auto_drop(!current_auto_drop); }, @@ -2384,7 +2384,7 @@ void MenuFactory::append_menu_item_plate_name(wxMenu *menu) auto item = append_menu_item( menu, wxID_ANY, name, "", - [plate](wxCommandEvent &e) { + [](wxCommandEvent &e) { int hover_idx =plater()->canvas3D()->GetHoverId(); if (hover_idx == -1) { int plate_idx=plater()->GetPlateIndexByRightMenuInLeftUI(); diff --git a/src/slic3r/GUI/GUI_ObjectLayers.cpp b/src/slic3r/GUI/GUI_ObjectLayers.cpp index 3b36158bd1..93bdeec9ee 100644 --- a/src/slic3r/GUI/GUI_ObjectLayers.cpp +++ b/src/slic3r/GUI/GUI_ObjectLayers.cpp @@ -48,7 +48,7 @@ void ObjectLayers::select_editor(LayerRangeEditor* editor, const bool is_last_ed * And as a result we couldn't edit this control. * */ #ifdef __WXOSX__ - wxTheApp->CallAfter([editor]() { + wxTheApp->CallAfter([]() { #endif //editor->SetFocus(); //editor->SelectAll(); @@ -223,7 +223,7 @@ void ObjectLayers::update_layers_list() // only call sizer->Clear(true) via CallAfter, otherwise crash happens in Linux when press enter in Height Range // because an element cannot be destroyed while there are pending events for this element.(https://github.com/wxWidgets/Phoenix/issues/1854) - wxGetApp().CallAfter([this, type, objects_ctrl, range]() { + wxGetApp().CallAfter([this, type, range]() { m_og->ctrl_parent()->Freeze(); // Delete all controls from options group diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index b33cc82abc..8067afd8df 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2324,7 +2324,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo bool split_compound = wxGetApp().app_config->get_bool("is_split_compound"); model = Model::read_from_step( input_file, LoadStrategy::LoadModel, nullptr, nullptr, - [this, &is_user_cancel, &linear, &angle, &split_compound](Slic3r::Step& file, double& linear_value, + [&is_user_cancel, &linear, &angle, &split_compound](Slic3r::Step& file, double& linear_value, double& angle_value, bool& is_split) -> int { if (wxGetApp().app_config->get_bool("enable_step_mesh_setting")) { StepMeshDialog mesh_dlg(nullptr, file, linear, angle); @@ -3317,7 +3317,7 @@ void ObjectList::boolean() } } - TriangleMesh mesh = Plater::combine_mesh_fff(*object, -1, [this](const std::string& msg) {return wxGetApp().notification_manager()->push_plater_error_notification(msg); }); + TriangleMesh mesh = Plater::combine_mesh_fff(*object, -1, [](const std::string& msg) {return wxGetApp().notification_manager()->push_plater_error_notification(msg); }); // add mesh to model as a new object, keep the original object's name and config Model* model = object->get_model(); @@ -6267,7 +6267,7 @@ void GUI::ObjectList::smooth_mesh() get_selection_indexes(obj_idxs, vol_idxs); auto object_idx = obj_idxs.front(); ModelObject *obj{nullptr}; - auto show_warning_dlg = [this](int cur_face_count,std::string name,bool is_part) { + auto show_warning_dlg = [](int cur_face_count,std::string name,bool is_part) { int limit_face_count = 1000000; if (cur_face_count > limit_face_count) { auto name_str = wxString::FromUTF8(name); @@ -6280,7 +6280,7 @@ void GUI::ObjectList::smooth_mesh() } return false; }; - auto show_smooth_mesh_error_dlg = [this](std::string name) { + auto show_smooth_mesh_error_dlg = [](std::string name) { auto name_str = wxString::FromUTF8(name); auto content = wxString::Format(_L("\"%s\" part's mesh contains errors. Please repair it first."), name_str); WarningDialog dlg(static_cast<wxWindow *>(wxGetApp().mainframe), content, wxEmptyString, wxOK); diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 1fc07bf5a2..35508c6113 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -3520,13 +3520,13 @@ void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) Text()->GetTextCtrl()->SetInsertionPointEnd(); - m_control->Bind(wxEVT_TEXT_ENTER, [this, row, col, grid](wxCommandEvent &e) { + m_control->Bind(wxEVT_TEXT_ENTER, [grid](wxCommandEvent &e) { grid->HideCellEditControl(); grid->SaveEditControlValue(); e.Skip(); }); - m_control->Bind(wxEVT_CHAR_HOOK, [this, row, col, grid](wxKeyEvent &e) { + m_control->Bind(wxEVT_CHAR_HOOK, [grid](wxKeyEvent &e) { if (e.GetKeyCode() == WXK_ESCAPE) { grid->HideCellEditControl(); grid->SaveEditControlValue(); diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index a5a0059e1b..0fbd432e02 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -591,16 +591,11 @@ private: wxColour m_hover_colour; wxBoxSizer* m_top_sizer{nullptr}; wxBoxSizer* m_page_sizer{nullptr}; - wxBoxSizer* m_page_top_sizer{nullptr}; - wxTextCtrl* m_search_line{ nullptr }; ObjectGrid* m_object_grid{nullptr}; ObjectGridTable* m_object_grid_table{nullptr}; - wxStaticText* m_page_text{nullptr}; - ScalableButton* m_global_reset{nullptr}; wxScrolledWindow* m_side_window{nullptr}; ObjectTableSettings* m_object_settings{ nullptr }; Model* m_model{nullptr}; - ModelConfig* m_config {nullptr}; Plater* m_plater{nullptr}; int m_cur_row { -1 }; @@ -625,8 +620,6 @@ class ObjectTableDialog : public GUI::DPIDialog const int POPUP_HEIGHT = FromDIP(1024); //wxPanel* m_panel{ nullptr }; - wxBoxSizer* m_top_sizer{ nullptr }; - wxStaticText* m_static_title{ nullptr }; //wxTimer* m_refresh_timer; ObjectTablePanel* m_obj_panel{ nullptr }; Model* m_model{ nullptr }; diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index e72c421a08..2290018419 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -184,7 +184,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ btn->Bind(EVT_LOCK_ENABLE, [this, btn](auto &e) { btn->SetBitmap(m_bmp_reset_focus.bmp()); }); #endif - btn->Bind(wxEVT_BUTTON, [btn, opt_key, this, is_object, object, config, group_category](wxEvent &event) { + btn->Bind(wxEVT_BUTTON, [opt_key, this, is_object, object, config, group_category](wxEvent &event) { //wxGetApp().plater()->take_snapshot(from_u8((boost::format(_utf8(L("Reset Option %s"))) % opt_key).str())); config->erase(opt_key); //btn->Hide(); @@ -204,10 +204,13 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ this->m_parent->Thaw(); #ifdef __WXOSX_MAC__ - if (!btn->IsEnabled()) { - btn->SetBitmap(m_bmp_reset_disable.bmp()); - } else { - btn->SetBitmap(m_bmp_reset_focus.bmp()); + // The handler is bound on the button, so the event source is that button. + if (auto *btn = dynamic_cast<ScalableButton *>(event.GetEventObject())) { + if (!btn->IsEnabled()) { + btn->SetBitmap(m_bmp_reset_disable.bmp()); + } else { + btn->SetBitmap(m_bmp_reset_focus.bmp()); + } } #endif }); @@ -284,13 +287,13 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ m_settings_list_sizer->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 0); m_og_settings.push_back(optgroup); - auto toggle_field = [this, optgroup](const t_config_option_key & opt_key, bool toggle, int opt_index) + auto toggle_field = [optgroup](const t_config_option_key & opt_key, bool toggle, int opt_index) { Field* field = optgroup->get_fieldc(opt_key, opt_index);; if (field) field->toggle(toggle); }; - auto toggle_line = [this, optgroup](const t_config_option_key &opt_key, bool toggle, int opt_index) + auto toggle_line = [optgroup](const t_config_option_key &opt_key, bool toggle, int opt_index) { Line* line = optgroup->get_line(opt_key); if (line) line->toggle_visible = toggle; diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index cb8ba45c6b..bc66d90ffd 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -102,7 +102,7 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std result = ReadFile(handlesrc, buff, size, &dwRead, NULL); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } @@ -110,7 +110,7 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std result = WriteFile(handledst,buff,size,&dwWrite,NULL); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 709e7b5b21..904e7d0a07 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -342,7 +342,7 @@ bool GLGizmoBrimEars::on_mouse(const wxMouseEvent& mouse_event) // concludes that the event was not intended for it, it should return false. bool GLGizmoBrimEars::gizmo_event(SLAGizmoEventType action, const Vec2d &mouse_position, bool shift_down, bool alt_down, bool control_down) { - if (action != SLAGizmoEventType::MouseWheelDown || action != SLAGizmoEventType::MouseWheelUp || action != SLAGizmoEventType::Moving) { + if (action != SLAGizmoEventType::MouseWheelDown && action != SLAGizmoEventType::MouseWheelUp && action != SLAGizmoEventType::Moving) { apply_radius_change(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index b5273e3024..273bb94b90 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -3596,7 +3596,7 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) // model_name failing reason std::vector<std::pair<std::string, std::string>> failed_models; auto plater = wxGetApp().plater(); - auto fix_and_update_progress = [this, plater, keep_painting](ModelObject *model_object, const int vol_idx, const string &model_name, ProgressDialog &progress_dlg, + auto fix_and_update_progress = [keep_painting](ModelObject *model_object, const int vol_idx, const string &model_name, ProgressDialog &progress_dlg, std::vector<std::string> &succes_models, std::vector<std::pair<std::string, std::string>> &failed_models) { wxString msg = _L("Repairing model object"); msg += ": " + from_u8(model_name) + "\n"; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index e6cbb7d0ef..109e0fe5bc 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -94,7 +94,6 @@ class GLGizmoCut3D : public GLGizmoBase GLModel m_reference_radius; GLModel m_angle_arc; - Vec3d m_old_center; Vec3d m_cut_normal; struct InvalidConnectorsStatistics diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index f190e1ad97..035fb895aa 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -122,7 +122,7 @@ bool GLGizmoFdmSupports::on_init() {ctrl + _L("Mouse wheel"), _L("Gap area")} }; - memset(&m_print_instance, 0, sizeof(m_print_instance)); + m_print_instance = PrintInstance(); return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index c7186e5d80..8b12da14f9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -223,7 +223,7 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l const int select_btn_length = 2 * ImGui::GetStyle().FramePadding.x + std::max(ImGui::CalcTextSize(("1 " + _u8L("selected")).c_str()).x, ImGui::CalcTextSize(_u8L("Select").c_str()).x); - auto selectable = [this](const std::string& label, bool selected, const ImVec2& size_arg) { + auto selectable = [](const std::string& label, bool selected, const ImVec2& size_arg) { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0,0 }); ImGuiWindow* window = ImGui::GetCurrentWindow(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index 8f0cd9a43d..3dcf51cbb5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -1456,7 +1456,7 @@ void TriangleSelectorPatch::update_triangles_per_patch() return touching_triangles; }; - auto calc_fragment_area = [this](const TrianglePatch& patch, float max_limit_area, int stride) { + auto calc_fragment_area = [](const TrianglePatch& patch, float max_limit_area, int stride) { double total_area = 0.f; const std::vector<int>& ti = patch.triangle_indices; /*for (int i = 0; i < ti.size() / 3; i++) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index f4fa1fbbb9..6a08d5eff4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -343,12 +343,12 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(10,20)); if (is_worker_running) { // apply or preview // draw progress bar - std::string progress_text = GUI::format("%1%", std::to_string(progress)) + "%%"; + std::string progress_text = GUI::format("%1%", std::to_string(progress)) + "%"; ImVec2 progress_size(bottom_left_width - space_size, 0.0f); ImGui::BBLProgressBar2(progress / 100., progress_size); ImGui::SameLine(); ImGui::AlignTextToFramePadding(); - ImGui::TextColored(ImVec4(0.42f, 0.42f, 0.42f, 1.00f), progress_text.c_str()); + ImGui::TextColored(ImVec4(0.42f, 0.42f, 0.42f, 1.00f), "%s", progress_text.c_str()); ImGui::SameLine(bottom_left_width + slider_width + m_imgui->scaled(1.0f)); } else { ImGui::Dummy(ImVec2(bottom_left_width - space_size, -1)); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 7882cf2269..9cff834346 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -1003,7 +1003,7 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt) // number waits briefly for a second one. const int digit = keyCode - '0'; const int shortcut_max = int(GLGizmoMmuSegmentation::EXTRUDERS_LIMIT); - auto can_start_two_digit = [shortcut_max](int d) { return d > 0 && d * 10 <= shortcut_max; }; + auto can_start_two_digit = [](int d) { return d > 0 && d * 10 <= shortcut_max; }; auto select = [mmu_seg](int number) { return number > 0 && mmu_seg->on_number_key_down(number); }; if (m_timer_set_color.IsRunning() && m_pending_color_shortcut_tens > 0) { diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index d7b082426c..7c4a2afd38 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -239,7 +239,7 @@ void GizmoObjectManipulation::update_if_dirty() }; for (int i = 0; i < 3; ++ i) { - auto update = [this, i](Vec3d &cached, Vec3d &cached_rounded, const Vec3d &new_value) { + auto update = [i](Vec3d &cached, Vec3d &cached_rounded, const Vec3d &new_value) { //wxString new_text = double_to_string(new_value(i), 2); double new_rounded = round(new_value(i)*100)/100.0; //new_text.ToDouble(&new_rounded); diff --git a/src/slic3r/GUI/GradientCurveEditor.cpp b/src/slic3r/GUI/GradientCurveEditor.cpp index 5b1073d231..6d38ef81a5 100644 --- a/src/slic3r/GUI/GradientCurveEditor.cpp +++ b/src/slic3r/GUI/GradientCurveEditor.cpp @@ -1,4 +1,5 @@ #include "GradientCurveEditor.hpp" +#include "FilamentBitmapUtils.hpp" #include "GUI_App.hpp" #include "GuiColor.hpp" #include "I18N.hpp" @@ -19,23 +20,13 @@ namespace GUI { wxDEFINE_EVENT(wxEVT_GRADIENT_CURVE_CHANGED, wxCommandEvent); namespace { -// Layout ratios of the plot rect within the widget, taken from a 214 x 180 px reference drawing. -// Plot rect occupies the upper-left region; right + bottom margins host axis arrows / labels. -constexpr double kPlotLeftRatio = 0.0316; -constexpr double kPlotRightRatio = 0.6766; -constexpr double kPlotTopRatio = 0.1529; -constexpr double kPlotBottomRatio = 0.8474; -constexpr int kGridDivisions = 9; // 10 grid lines including the outer borders. - -// Hit / stroke (DIP). +// Hit / stroke (DIP). The plot-rect ratios, grid divisions, axis/arrow geometry and the +// near-background outline threshold now live in FilamentBitmapUtils so the read-only Publish +// preview and this editor stay pixel-identical. constexpr int kHitRadius = 6; constexpr int kCurveHitRadius = 5; -constexpr int kPointRadius = 4; // anchor outer radius (DIP) constexpr int kStrokeUnselected = 2; constexpr int kStrokeSelected = 4; -constexpr int kStrokeAxis = 2; // axis line width (px, no DPI scaling - matches kGridColor pen and 2DBed convention) -constexpr int kAxisArrowHalf = 5; // half-base of the axis arrow triangle (DIP) -constexpr int kAxisArrowLen = 10; // length of the axis arrow triangle (DIP) // Light-mode design tokens. Resolved through StateColor::darkModeColorFor() // at paint time so the editor follows the app theme (#EEEEEE -> #4C4C55, #6B6B6B -> @@ -46,12 +37,6 @@ const wxColour kAxisColor (107, 107, 107); // #6B6B6B grey 700 const wxColour kLabelMuted (107, 107, 107); // #6B6B6B grey 700 const wxColour kLabelStrong ( 38, 46, 48); // #262E30 grey 900 const wxColour kOutlineColor(172, 172, 172); // #ACACAC dimmed elements - -// LAB (DeltaE76) threshold for "curve color is too close to the background": below it the curve -// gets a subtle outline so it does not visually vanish, otherwise it is drawn plain. Looser than -// the 5.0 of FlushPredict::is_similar_color, so a pastel pink on white still gets an outline. -constexpr float kBgSimilarThreshold = 15.0f; -constexpr int kOutlineExtraDip = 2; } // namespace GradientCurveEditor::GradientCurveEditor(wxWindow* parent, @@ -177,15 +162,8 @@ void GradientCurveEditor::emit_changed() wxRect GradientCurveEditor::plot_rect() const { - const wxSize sz = GetClientSize(); - const int x = static_cast<int>(std::lround(sz.x * kPlotLeftRatio)); - const int y = static_cast<int>(std::lround(sz.y * kPlotTopRatio)); - const int x2 = static_cast<int>(std::lround(sz.x * kPlotRightRatio)); - const int y2 = static_cast<int>(std::lround(sz.y * kPlotBottomRatio)); - // Force square 1:1 so X/Y axes share the same scale and grid cells stay square. Anchor at - // the top-left so the "100%" labels on the bottom/right still align with the plot edges. - const int side = std::max(1, std::min(x2 - x, y2 - y)); - return wxRect(x, y, side, side); + // Square 1:1 plot, shared with the Publish dialog's read-only preview. + return mixed_gradient_plot_rect(GetClientSize()); } wxPoint2DDouble GradientCurveEditor::data_to_px_f(double x, double y) const @@ -330,171 +308,52 @@ void GradientCurveEditor::on_paint(wxPaintEvent& /*evt*/) raw_dc.SetBackground(wxBrush(bg)); raw_dc.Clear(); - // Render through wxGCDC so curves, arrows and anchor circles get anti-aliased; the buffered - // DC is the actual back buffer that gets blitted to the window. - wxGCDC dc(raw_dc); - // The curve and its anchors are drawn straight on the graphics context so their - // coordinates stay sub-pixel accurate (see data_to_px_f). - wxGraphicsContext* gc = dc.GetGraphicsContext(); - - const wxRect rc = plot_rect(); - if (rc.width <= 0 || rc.height <= 0) - return; - - // 10x10 light grid (10 lines including outer borders, 9 equal divisions). - dc.SetPen(wxPen(grid_color, 1)); - for (int i = 0; i <= kGridDivisions; ++i) { - const int x = rc.x + rc.width * i / kGridDivisions; - const int y = rc.y + rc.height * i / kGridDivisions; - dc.DrawLine(x, rc.y, x, rc.y + rc.height); - dc.DrawLine(rc.x, y, rc.x + rc.width, y); - } - - // Set the label font first so text width measurements drive arrow / label placement. - wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); - dc.SetFont(label_font); - - const wxString axis_y_title = _L("Material Ratio"); - const wxString axis_x_title = _L("Model Height"); - const wxString pct_text = wxT("100%"); - const wxSize x_title_sz = dc.GetTextExtent(axis_x_title); - const wxSize y_title_sz = dc.GetTextExtent(axis_y_title); - - wxFont strong_font = label_font; - strong_font.SetWeight(wxFONTWEIGHT_SEMIBOLD); - dc.SetFont(strong_font); - const wxSize pct_text_sz = dc.GetTextExtent(pct_text); - dc.SetFont(label_font); - - // Axes (grey 700) with filled triangle arrows. Y-axis extends above the plot top to the - // canvas top edge; X-axis extends past the plot right toward the canvas right edge. - const int arrow_half = FromDIP(kAxisArrowHalf); - const int arrow_len = FromDIP(kAxisArrowLen); - const wxSize sz = GetClientSize(); - dc.SetPen(wxPen(axis_color, kStrokeAxis)); - dc.SetBrush(wxBrush(axis_color)); - - // Y-axis: vertical line at plot_left, from arrow tip near canvas top down to plot bottom. - const int y_axis_x = rc.x; - const int y_title_pct_gap = FromDIP(1); - const int y_title_bottom_pad = FromDIP(2); - const int y_title_y = std::max(0, rc.y - y_title_sz.y - y_title_pct_gap - pct_text_sz.y - y_title_bottom_pad); - const int y_arrow_tip_y = y_title_y; - const int y_arrow_ty = y_arrow_tip_y + arrow_len; - dc.DrawLine(y_axis_x, y_arrow_ty, y_axis_x, rc.y + rc.height); - { - wxPoint tri[3] = { - wxPoint(y_axis_x, y_arrow_tip_y), - wxPoint(y_axis_x - arrow_half, y_arrow_ty), - wxPoint(y_axis_x + arrow_half, y_arrow_ty), + // Render the plot (grid, axes, labels, curves, anchors) through the shared painter so the + // interactive editor and the Publish dialog's read-only preview stay pixel-identical. The + // curves are handed over as sub-pixel polylines and anti-alias inside the helper. + std::vector<MixedGradientCurve> curves; + std::vector<wxPoint2DDouble> anchors; + if (m_points.size() >= 2) { + auto color_for_curve = [&](int curve_idx) -> wxColour { + wxColour c = (curve_idx == 0) ? m_color_low : m_color_high; + // Transparent filaments (alpha == 0, e.g. #FFFFFF00) would be invisible. + if (c.Alpha() == 0) + c.Set(c.Red(), c.Green(), c.Blue(), 150); + return c; }; - dc.DrawPolygon(3, tri); - } - // X-axis arrow tip: stays just past the plot ideally, but is clamped so the trailing - // "Material Ratio" label still fits inside the canvas without overlapping the arrow. - const int x_axis_y = rc.y + rc.height; - const int x_label_gap = FromDIP(4); - const int x_edge_pad = FromDIP(6); - const int x_arrow_ideal = rc.x + rc.width + FromDIP(10); - const int x_arrow_max = sz.x - x_title_sz.x - x_label_gap - x_edge_pad - arrow_len; - const int x_arrow_tx = std::max(rc.x + rc.width + arrow_len, - std::min(x_arrow_ideal, x_arrow_max)); - const int x_arrow_tip_x = x_arrow_tx + arrow_len; - const int x_title_x = x_arrow_tip_x + x_label_gap; - dc.DrawLine(rc.x, x_axis_y, x_arrow_tx, x_axis_y); - { - wxPoint tri[3] = { - wxPoint(x_arrow_tip_x, x_axis_y), - wxPoint(x_arrow_tx, x_axis_y - arrow_half), - wxPoint(x_arrow_tx, x_axis_y + arrow_half), + auto build_polyline = [&](int curve_idx) -> std::vector<wxPoint2DDouble> { + const int samples = std::max(128, plot_rect().width * 2); + std::vector<wxPoint2DDouble> poly; + poly.reserve(samples + 1); + for (int s = 0; s <= samples; ++s) { + const double x = double(s) / samples; + const double y0 = sample_curve_y(x); + const double vy = to_visual_y(curve_idx, y0); + poly.push_back(data_to_px_f(x, vy)); + } + return poly; }; - dc.DrawPolygon(3, tri); - } - // Labels. - // "Model Height" and "100%" share the same left x; the gap is larger than the - // axis-arrow half-base so the text never visually touches the Y-axis arrow. - const int label_left_x = y_axis_x + FromDIP(10); - dc.SetTextForeground(label_muted); - dc.DrawText(axis_y_title, label_left_x, y_title_y); - - dc.SetFont(strong_font); - dc.SetTextForeground(label_strong); - dc.DrawText(pct_text, label_left_x, y_title_y + y_title_sz.y + y_title_pct_gap); - - // Bottom-right "100%" sits under the right end of the plot; "Material Ratio" follows the - // X-axis arrow tip (placement was already clamped above to leave room). - dc.DrawText(pct_text, rc.x + rc.width - pct_text_sz.x, x_axis_y); - dc.SetFont(label_font); - dc.SetTextForeground(label_muted); - dc.DrawText(axis_x_title, x_title_x, x_axis_y - x_title_sz.y / 2); - - if (m_points.size() < 2 || !gc) - return; - - auto color_for_curve = [&](int curve_idx) -> wxColour { - wxColour c = (curve_idx == 0) ? m_color_low : m_color_high; - // Transparent filaments (alpha == 0, e.g. #FFFFFF00) would be invisible. - // Lift alpha so the curve stays visible while still hinting at transparency. - if (c.Alpha() == 0) - c.Set(c.Red(), c.Green(), c.Blue(), 150); - return c; - }; - - auto build_polyline = [&](int curve_idx) -> std::vector<wxPoint2DDouble> { - const int samples = std::max(128, rc.width * 2); - std::vector<wxPoint2DDouble> poly; - poly.reserve(samples + 1); - for (int s = 0; s <= samples; ++s) { - const double x = double(s) / samples; - const double y0 = sample_curve_y(x); - const double vy = to_visual_y(curve_idx, y0); - poly.push_back(data_to_px_f(x, vy)); + // Draw unselected first so the selected curve sits on top. + const int other = 1 - m_selected_curve; + for (const int idx : {other, m_selected_curve}) { + std::vector<wxPoint2DDouble> pts = build_polyline(idx); + if (pts.empty()) + continue; + curves.push_back({std::move(pts), color_for_curve(idx), idx == m_selected_curve ? kStrokeSelected : kStrokeUnselected}); } - return poly; - }; - // Only the geometry goes through the graphics context: dc.DrawLines() takes integer wxPoint - // and would quantize the curve back to whole pixels. The pen is still set on the dc, which - // forwards it here while keeping its own cached state in sync for later dc drawing. - auto draw_polyline = [&](const std::vector<wxPoint2DDouble>& poly, const wxColour& col, int stroke_dip) { - dc.SetPen(wxPen(col, FromDIP(stroke_dip))); - gc->StrokeLines(poly.size(), poly.data()); - }; - - // Outline only when the curve color is perceptually close to the background; otherwise - // the plain filament color reads fine and the extra stroke would look heavy. - auto needs_outline = [&](const wxColour& c) { - return calc_color_distance(c, bg) < kBgSimilarThreshold; - }; - - auto draw_one = [&](int curve_idx, int stroke_dip) { - const auto poly = build_polyline(curve_idx); - const wxColour col = color_for_curve(curve_idx); - if (needs_outline(col)) - draw_polyline(poly, outline_color, stroke_dip + kOutlineExtraDip); - draw_polyline(poly, col, stroke_dip); - }; - - // Draw unselected first so the selected curve sits on top. - const int other = 1 - m_selected_curve; - draw_one(other, kStrokeUnselected); - draw_one(m_selected_curve, kStrokeSelected); - - // Control points (selected curve only): hollow circle with axis-color border, theme-aware fill. - // Drawn on the graphics context with a sub-pixel center so the ring stays centered on the - // curve instead of drifting up to half a pixel off it; pen and brush go through the dc for - // the same reason as in draw_polyline above. - const double r = FromDIP(kPointRadius); - dc.SetPen(wxPen(axis_color, 1)); - dc.SetBrush(wxBrush(point_fill)); - for (size_t i = 0; i < m_points.size(); ++i) { - const double vy = to_visual_y(m_selected_curve, m_points[i].y); - const wxPoint2DDouble p = data_to_px_f(m_points[i].x, vy); - gc->DrawEllipse(p.m_x - r, p.m_y - r, r * 2, r * 2); + // Control points (selected curve only). + anchors.reserve(m_points.size()); + for (size_t i = 0; i < m_points.size(); ++i) { + const double vy = to_visual_y(m_selected_curve, m_points[i].y); + anchors.push_back(data_to_px_f(m_points[i].x, vy)); + } } + + const MixedGradientTheme theme{bg, grid_color, axis_color, label_muted, label_strong, outline_color, point_fill}; + draw_mixed_gradient_plot(raw_dc, GetClientSize(), curves, anchors, theme); } void GradientCurveEditor::on_left_down(wxMouseEvent& evt) diff --git a/src/slic3r/GUI/HMS.cpp b/src/slic3r/GUI/HMS.cpp index 5471c16064..f00e661df2 100644 --- a/src/slic3r/GUI/HMS.cpp +++ b/src/slic3r/GUI/HMS.cpp @@ -46,7 +46,7 @@ int get_hms_info_version(std::string& version) std::string url = (boost::format("https://%1%/GetVersion.php?%2%") % hms_host % query_params).str(); Slic3r::Http http = Slic3r::Http::get(url); http.timeout_max(10) - .on_complete([&result, &version](std::string body, unsigned status){ + .on_complete([&version](std::string body, unsigned status){ try { json j = json::parse(body); if (j.contains("ver")) { @@ -95,7 +95,7 @@ int HMSQuery::download_hms_related(const std::string& hms_type, const std::strin BOOST_LOG_TRIVIAL(info) << "hms: download url = " << url; Slic3r::Http http = Slic3r::Http::get(url); - http.on_complete([this, receive_json, hms_type, &to_save_local, &j, & local_version](std::string body, unsigned status) { + http.on_complete([receive_json, hms_type, &to_save_local, &j, & local_version](std::string body, unsigned status) { try { j = json::parse(body); if (j.contains("result")) { diff --git a/src/slic3r/GUI/HMSPanel.hpp b/src/slic3r/GUI/HMSPanel.hpp index 49910590b8..25ac56de96 100644 --- a/src/slic3r/GUI/HMSPanel.hpp +++ b/src/slic3r/GUI/HMSPanel.hpp @@ -25,7 +25,6 @@ class HMSNotifyItem : public wxPanel wxStaticBitmap *m_bitmap_notify; wxStaticBitmap *m_bitmap_arrow; wxStaticText * m_hms_content; - wxHtmlWindow * m_html; wxPanel * m_staticline; wxBitmap m_img_notify_lv1; diff --git a/src/slic3r/GUI/IMSlider.hpp b/src/slic3r/GUI/IMSlider.hpp index 45e4d6ccb8..d28a65c1ff 100644 --- a/src/slic3r/GUI/IMSlider.hpp +++ b/src/slic3r/GUI/IMSlider.hpp @@ -216,7 +216,6 @@ private: long m_extra_style; float m_label_koef{1.0}; - float m_zero_layer_height = 0.0f; std::vector<double> m_values; TickCodeInfo m_ticks; std::vector<double> m_layers_times; diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 6b74b71af1..c0cc7bdb5a 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -265,8 +265,7 @@ arrangement::ArrangePolygon estimate_wipe_tower_info(int plate_index, std::set<i int extruder_size = extruder_ids.size(); Vec3d wipe_tower_size, wipe_tower_pos; - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - auto arrange_poly = ppl.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(full_config, plate_index, wipe_tower_pos, wipe_tower_size, nozzle_nums, extruder_size); + auto arrange_poly = ppl.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(full_config, plate_index, wipe_tower_pos, wipe_tower_size, extruder_size); arrange_poly.bed_idx = plate_index; return arrange_poly; } diff --git a/src/slic3r/GUI/Jobs/BindJob.hpp b/src/slic3r/GUI/Jobs/BindJob.hpp index af89e2fc1b..1e8aa91d6f 100644 --- a/src/slic3r/GUI/Jobs/BindJob.hpp +++ b/src/slic3r/GUI/Jobs/BindJob.hpp @@ -20,7 +20,6 @@ class BindJob : public Job std::string m_sec_link; std::string m_ssdp_version; bool m_job_finished{ false }; - int m_print_job_completed_id = 0; bool m_improved{false}; public: diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index a9a66cb96f..5364cb5648 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -184,7 +184,7 @@ void FillBedJob::prepare() ap.poly = m_selected.front().poly; ap.bed_idx = PartPlateList::MAX_PLATES_COUNT; ap.itemid = -1; - ap.setter = [this, mi, offset](const ArrangePolygon &p) { + ap.setter = [this, offset](const ArrangePolygon &p) { ModelObject *mo = m_plater->model().objects[m_object_idx]; ModelObject *obj; if (m_instances) { diff --git a/src/slic3r/GUI/Jobs/PlaterWorker.hpp b/src/slic3r/GUI/Jobs/PlaterWorker.hpp index d38a57b6a6..f22bd6d511 100644 --- a/src/slic3r/GUI/Jobs/PlaterWorker.hpp +++ b/src/slic3r/GUI/Jobs/PlaterWorker.hpp @@ -79,9 +79,12 @@ class PlaterWorker: public Worker { steady_clock::time_point finalize_end = steady_clock::now(); long long finalize_duration = duration_cast<milliseconds>(finalize_end - finalize_start).count(); + // Bound first so typeid's operand is not a call. typeid evaluates it for a + // polymorphic type, which clang reports as -Wpotentially-evaluated-expression. + const Job &job = *m_job; BOOST_LOG_TRIVIAL(info) << std::fixed // do not use scientific notations - << "Job '" << typeid(*m_job).name() << "' " + << "Job '" << typeid(job).name() << "' " << "spend " << m_process_duration + finalize_duration << "ms " << "(process " << m_process_duration << "ms + finalize " << finalize_duration << "ms)"; diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index d79deb955b..dae05494e3 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -135,7 +135,6 @@ void PrintJob::process(Ctl &ctl) { /* display info */ std::string msg; - wxString error_str; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); AppConfig* config = wxGetApp().app_config; @@ -402,9 +401,7 @@ void PrintJob::process(Ctl &ctl) &is_try_lan_mode, &is_try_lan_mode_failed, &msg, - &error_str, &curr_percent, - &error_text, StagePercentPoint ](int stage, int code, std::string info) { @@ -491,7 +488,7 @@ void PrintJob::process(Ctl &ctl) DeviceManager* dev = wxGetApp().getDeviceManager(); MachineObject* obj = dev->get_selected_machine(); - auto wait_fn = [this, &ctl, curr_percent, &obj](int state, std::string job_info) { + auto wait_fn = [&ctl, &obj](int state, std::string job_info) { BOOST_LOG_TRIVIAL(info) << "print_job: get_job_info = " << job_info; if (!obj->is_support_wait_sending_finish) { diff --git a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp index f97b03bf62..7f8219008f 100644 --- a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp +++ b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp @@ -55,7 +55,7 @@ void RotoptimizeJob::process(Ctl &ctl) sla::RotOptimizeParams{} .accuracy(m_accuracy) .print_config(&m_default_print_cfg) - .statucb([this, &prev_status, &ctl/*, &statustxt*/](int s) + .statucb([&ctl/*, &statustxt*/](int s) { return !ctl.was_canceled(); }); diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index bb52367188..67ce02b476 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -213,7 +213,6 @@ void SendJob::process(Ctl &ctl) params.password = m_access_code; params.use_ssl_for_ftp = m_local_use_ssl_for_ftp; params.use_ssl_for_mqtt = m_local_use_ssl; - wxString error_text; std::string msg_text; const int StagePercentPoint[(int)PrintingStageFinished + 1] = { @@ -227,7 +226,7 @@ void SendJob::process(Ctl &ctl) }; auto update_fn = [this, &ctl, - &msg, &curr_percent, &error_text, StagePercentPoint](int stage, int code, std::string info) { + &msg, &curr_percent, StagePercentPoint](int stage, int code, std::string info) { if (stage == SendingPrintJobStage::PrintingStageCreate) { if (this->connection_type == "lan") { msg = _u8L("Sending G-code file over LAN"); diff --git a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp index 5a531065f3..3e634e0337 100644 --- a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp +++ b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp @@ -27,7 +27,6 @@ class UpgradeNetworkJob : public Job wxWindow * m_event_handle{nullptr}; std::function<void()> m_success_fun{nullptr}; bool m_job_finished{ false }; - int m_print_job_completed_id = 0; InstallProgressFn pro_fn { nullptr }; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index ed513c425f..2f882e35aa 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -174,6 +174,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl + "O", L("Open Project") }, { ctrl + "S", L("Save Project") }, { ctrl + shift + "S", L("Save Project as")}, + { ctrl + shift + "E", L("Publish 3MF") }, // File>Import { ctrl + "I", L("Import geometry data from STL/STEP/3MF/OBJ/AMF files") }, // File>Export diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 5f7d69244e..167b2b4cda 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -39,7 +39,6 @@ #include "Plater.hpp" #include "WebViewDialog.hpp" #include "../Utils/Process.hpp" -#include "format.hpp" // BBS #include "PartPlate.hpp" #include "Preferences.hpp" @@ -49,11 +48,9 @@ #include "../Utils/NetworkAgentFactory.hpp" #include "../Utils/PrintHost.hpp" -#include <fstream> -#include <string_view> - #include "GUI_App.hpp" #include "UnsavedChangesDialog.hpp" +#include "PublishSettingsDialog.hpp" #include "MsgDialog.hpp" #include "Notebook.hpp" #include "GUI_Factories.hpp" @@ -743,10 +740,14 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ if (m_plater) { m_plater->add_file(); } return; } + if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'E') { + if (can_export_model()) publish_project(); + return; + } evt.Skip(); }); - Bind(wxEVT_SHOW, [this](wxShowEvent &evt) { + Bind(wxEVT_SHOW, [](wxShowEvent &evt) { DeviceManager *manger = wxGetApp().getDeviceManager(); if (manger) { evt.IsShown() ? manger->start_refresher() : manger->stop_refresher(); @@ -1739,6 +1740,22 @@ bool MainFrame::save_project_as(const wxString& filename) return ret; } +void MainFrame::publish_project() +{ + if (m_plater == nullptr) + return; + // Seed the dialog from the session selection (a remembered state or a freshly loaded + // published 3MF); a null pointer means "fresh", keeping the dirty defaults. + std::vector<std::string> pending_keys; + std::vector<Slic3r::PublishedMaterialEntry> pending_material; + const bool has_prior = m_plater->get_pending_published(pending_keys, pending_material); + PublishSettingsDialog dlg(this, has_prior ? &pending_keys : nullptr, has_prior ? &pending_material : nullptr); + if (dlg.ShowModal() != wxID_OK) + return; + m_plater->set_pending_published(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); + m_plater->export_published_3mf(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); +} + bool MainFrame::can_upload() const { return true; @@ -2834,6 +2851,20 @@ void MainFrame::init_menubar_as_editor() [this](){return m_plater != nullptr && can_save_as(); }, this); #endif + // BBS: publish + fileMenu->AppendSeparator(); + auto publish_handler = [this](wxCommandEvent&) { publish_project(); }; + +#ifndef __APPLE__ + append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + publish_handler, "menu_publish", nullptr, + [this](){return can_export_model(); }, this); +#else + append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + publish_handler, "", nullptr, + [this](){return can_export_model(); }, this); +#endif + fileMenu->AppendSeparator(); @@ -2850,12 +2881,12 @@ void MainFrame::init_menubar_as_editor() [this](wxCommandEvent&) { if (m_plater) { m_plater->add_model(); } }, "", nullptr, [this](){return can_add_models(); }, this); #endif - append_menu_item(import_menu, wxID_ANY, _L("Import Zip Archive") + dots, _L("Load models contained within a zip archive"), + append_menu_item(import_menu, wxID_ANY, _L("Import ZIP Archive") + dots, _L("Load models contained within a ZIP archive"), [this](wxCommandEvent&) { if (m_plater) m_plater->import_zip_archive(); }, "menu_import", nullptr, [this]() { return can_add_models(); }); append_menu_item(import_menu, wxID_ANY, _L("Import Configs") + dots /*+ "\t" + ctrl + "I"*/, _L("Load configs"), [this](wxCommandEvent&) { load_config_file(); }, "menu_import", nullptr, - [this](){return true; }, this); + [](){return true; }, this); append_submenu(fileMenu, import_menu, wxID_ANY, _L("Import"), ""); @@ -2968,7 +2999,7 @@ void MainFrame::init_menubar_as_editor() _L("Duplicate the current plate"),[this](wxCommandEvent&) { m_plater->duplicate_plate(); }, - "menu_remove", nullptr, [this](){return true;}, this); + "menu_remove", nullptr, [](){return true;}, this); editMenu->AppendSeparator(); #else // BBS undo @@ -3068,10 +3099,10 @@ void MainFrame::init_menubar_as_editor() "", nullptr, [this](){return can_clone(); }, this); editMenu->AppendSeparator(); append_menu_item(editMenu, wxID_ANY, _L("Duplicate Current Plate"), - _L("Duplicate the current plate"),[this, handle_key_event](wxCommandEvent&) { + _L("Duplicate the current plate"),[this](wxCommandEvent&) { m_plater->duplicate_plate(); }, - "", nullptr, [this](){return true;}, this); + "", nullptr, [](){return true;}, this); editMenu->AppendSeparator(); #endif @@ -3135,13 +3166,13 @@ void MainFrame::init_menubar_as_editor() //BBS perspective view wxWindowID camera_id_base = wxWindow::NewControlId(int(wxID_CAMERA_COUNT)); auto perspective_item = append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), - [this](wxCommandEvent&) { + [](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", true); wxGetApp().update_ui_from_settings(); }, nullptr); //BBS orthogonal view auto orthogonal_item = append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), - [this](wxCommandEvent&) { + [](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", false); wxGetApp().update_ui_from_settings(); }, nullptr); @@ -3157,7 +3188,7 @@ void MainFrame::init_menubar_as_editor() m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return is_prepare_or_preview_tab(); }, - [this]() { return wxGetApp().app_config->get_bool("auto_perspective"); }, this); + []() { return wxGetApp().app_config->get_bool("auto_perspective"); }, this); viewMenu->AppendSeparator(); append_menu_check_item(viewMenu, wxID_ANY, _L("Show &G-code Window") + sep + "C", _L("Show G-code window in Preview scene."), @@ -3166,7 +3197,7 @@ void MainFrame::init_menubar_as_editor() m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return m_tabpanel->GetSelectedPageName() == TAB_ID_PREVIEW; }, - [this]() { return wxGetApp().show_gcode_window(); }, this); + []() { return wxGetApp().show_gcode_window(); }, this); append_menu_check_item( viewMenu, wxID_ANY, _L("Show 3D Navigator"), _L("Show 3D navigator in Prepare and Preview scene."), @@ -3175,7 +3206,7 @@ void MainFrame::init_menubar_as_editor() m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return is_prepare_or_preview_tab(); }, - [this]() { return wxGetApp().show_3d_navigator(); }, this); + []() { return wxGetApp().show_3d_navigator(); }, this); append_menu_check_item(viewMenu, wxID_ANY, _L("Show Gridlines"), _L("Show Gridlines on plate"), [this](wxCommandEvent&) { @@ -3183,7 +3214,7 @@ void MainFrame::init_menubar_as_editor() m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return is_prepare_or_preview_tab(); }, - [this]() { return wxGetApp().show_plate_gridlines(); }, this); + []() { return wxGetApp().show_plate_gridlines(); }, this); append_menu_item( viewMenu, wxID_ANY, _L("Reset Window Layout"), _L("Reset to default window layout"), @@ -3212,7 +3243,7 @@ void MainFrame::init_menubar_as_editor() m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return m_tabpanel->GetSelectedPageName() == TAB_ID_PREPARE; }, - [this]() { return wxGetApp().show_outline(); }, this); + []() { return wxGetApp().show_outline(); }, this); /*viewMenu->AppendSeparator(); append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Wireframe") + "\t" + ctrl + shift + _L("Enter"), _L("Show wireframes in 3D scene."), @@ -3338,11 +3369,11 @@ void MainFrame::init_menubar_as_editor() //parent_menu->Insert(0, about_item); append_menu_item( parent_menu, wxID_ANY, _L(about_title), "", - [this](wxCommandEvent &) { Slic3r::GUI::about();}, + [](wxCommandEvent &) { Slic3r::GUI::about();}, "", nullptr, []() { return true; }, this, 0); append_menu_item( parent_menu, wxID_ANY, _L("Preferences") + "\t" + ctrl + ",", "", - [this](wxCommandEvent &) { + [](wxCommandEvent &) { wxGetApp().open_preferences(); }, "", nullptr, []() { return true; }, this, 1); @@ -3361,7 +3392,7 @@ void MainFrame::init_menubar_as_editor() append_menu_item( m_topbar->GetTopMenu(), wxID_ANY, _L("Preferences") + "\t" + ctrl + "P", "", - [this](wxCommandEvent &) { + [](wxCommandEvent &) { // Orca: Use GUI_App::open_preferences instead of direct call so windows associations are updated on exit wxGetApp().open_preferences(); }, @@ -3393,14 +3424,14 @@ void MainFrame::init_menubar_as_editor() into_u8(_L("Syncing presets from cloud\u2026"))); wxGetApp().restart_sync_user_preset(); }, "", nullptr, - [this]() { + []() { return wxGetApp().is_user_login() && !wxGetApp().app_config->get_stealth_mode(); }, this); top_menu->AppendSeparator(); append_menu_item( top_menu, wxID_ANY, _L("Plugins") + "\t", "", - [this](wxCommandEvent &) { + [](wxCommandEvent &) { wxGetApp().open_plugins_dialog(); }, "", nullptr, []() { return true; }, this); @@ -3501,7 +3532,7 @@ void MainFrame::init_menubar_as_editor() [this]() {return m_plater->is_view3D_shown();; }, this); // help - append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Calibration Guide"), _L("Calibration Guide"), [this](wxCommandEvent &) + append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Calibration Guide"), _L("Calibration Guide"), [](wxCommandEvent &) { wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/calibration_guide", wxBROWSER_NEW_WINDOW); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); @@ -3530,13 +3561,13 @@ void MainFrame::init_menubar_as_editor() into_u8(_L("Syncing presets from cloud\u2026"))); wxGetApp().restart_sync_user_preset(); }, "", nullptr, - [this]() { + []() { return wxGetApp().is_user_login() && !wxGetApp().app_config->get_stealth_mode(); }, this); fileMenu->AppendSeparator(); append_menu_item( - fileMenu, wxID_ANY, _L("Plugins"), "", [this](wxCommandEvent&) { wxGetApp().open_plugins_dialog(); }, "", nullptr, + fileMenu, wxID_ANY, _L("Plugins"), "", [](wxCommandEvent&) { wxGetApp().open_plugins_dialog(); }, "", nullptr, []() { return true; }, this); fileMenu->AppendSeparator(); @@ -3640,7 +3671,7 @@ void MainFrame::init_menubar_as_editor() [this]() {return m_plater->is_view3D_shown();; }, this); // help append_menu_item(calib_menu, wxID_ANY, _L("Calibration Guide"), _L("Calibration Guide"), - [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/calibration_guide", wxBROWSER_NEW_WINDOW); }, "", nullptr, + [](wxCommandEvent&) { wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/calibration_guide", wxBROWSER_NEW_WINDOW); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); m_menubar->Append(calib_menu,wxString::Format("&%s", _L("Calibration"))); @@ -4212,15 +4243,23 @@ std::wstring MainFrame::FileHistory::GetThumbnailUrl(int index) const return wss.str(); } +bool MainFrame::FileHistory::GetPublished(int index) const +{ + return index >= 0 && index < static_cast<int>(m_published_files.size()) && m_published_files[index]; +} + void MainFrame::FileHistory::AddFileToHistory(const wxString &file) { if (this->m_fileMaxFiles == 0) return; wxFileHistory::AddFileToHistory(file); - if (m_load_called) + if (m_load_called) { m_thumbnails.push_front(bbs_3mf_get_thumbnail(into_u8(file).c_str())); - else + m_published_files.push_front(bbs_3mf_is_published(into_u8(file))); + } else { m_thumbnails.push_front(""); + m_published_files.push_front(false); + } } void MainFrame::FileHistory::RemoveFileFromHistory(size_t i) @@ -4229,6 +4268,7 @@ void MainFrame::FileHistory::RemoveFileFromHistory(size_t i) return; wxFileHistory::RemoveFileFromHistory(i); m_thumbnails.erase(m_thumbnails.begin() + i); + m_published_files.erase(m_published_files.begin() + i); } size_t MainFrame::FileHistory::FindFileInHistory(const wxString & file) @@ -4244,6 +4284,7 @@ void MainFrame::FileHistory::LoadThumbnails() if (!thumbnail.empty()) { m_thumbnails[i] = thumbnail; } + m_published_files[i] = bbs_3mf_is_published(into_u8(GetHistoryFile(i))); } }); m_load_called = true; @@ -4264,6 +4305,7 @@ void MainFrame::get_recent_projects(boost::property_tree::wptree &tree, int imag std::wstring proj = m_recent_projects.GetHistoryFile(i).ToStdWstring(); item.put(L"project_name", proj.substr(proj.find_last_of(L"/\\") + 1)); item.put(L"path", proj); + item.put(L"published", m_recent_projects.GetPublished(i) ? L"1" : L"0"); boost::system::error_code ec; std::time_t t = boost::filesystem::last_write_time(proj, ec); if (!ec) { @@ -4488,10 +4530,9 @@ std::string MainFrame::get_dir_name(const wxString &full_name) const // ---------------------------------------------------------------------------- SettingsDialog::SettingsDialog(MainFrame* mainframe) -:DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "settings_dialog"), +:DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "settings_dialog") //: DPIDialog(mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, // wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX, "settings_dialog"), - m_main_frame(mainframe) { if (wxGetApp().is_gcode_viewer()) return; diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 2052860d80..44e0547f50 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -94,7 +94,6 @@ class SettingsDialog : public DPIDialog//DPIDialog { //wxNotebook* m_tabpanel { nullptr }; Notebook* m_tabpanel{ nullptr }; - MainFrame* m_main_frame { nullptr }; wxMenuBar* m_menubar{ nullptr }; public: SettingsDialog(MainFrame* mainframe); @@ -179,6 +178,7 @@ class MainFrame : public DPIFrame { FileHistory(int max) : wxFileHistory(max) {} std::wstring GetThumbnailUrl(int index) const; + bool GetPublished(int index) const; virtual void AddFileToHistory(const wxString &file); virtual void RemoveFileFromHistory(size_t i); @@ -189,6 +189,7 @@ class MainFrame : public DPIFrame void SetMaxFiles(int max); private: std::deque<std::string> m_thumbnails; + std::deque<bool> m_published_files; // parallel to m_thumbnails: is it a published 3mf? bool m_load_called = false; }; @@ -342,6 +343,8 @@ public: bool can_upload() const; void save_project(); bool save_project_as(const wxString& filename = wxString()); + // Open the Publish dialog and export the selected settings as a published 3MF. + void publish_project(); void add_to_recent_projects(const wxString& filename); void get_recent_projects(boost::property_tree::wptree &tree, int images); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 71fbcb054b..29c8c9f664 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -71,7 +71,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl3 *media_ctrl, const w auto ip = str.find(' ', ik); if (ip == wxString::npos) ip = str.Length(); auto v = str.Mid(ik, ip - ik); - if (k == "T:" && v.Length() == 8) { + if (strcmp(k, "T:") == 0 && v.Length() == 8) { long h = 0,m = 0,s = 0; v.Left(2).ToLong(&h); v.Mid(3, 2).ToLong(&m); @@ -494,13 +494,13 @@ void MediaPlayCtrl::ToggleStream() DownloadProgressDialog2(MediaPlayCtrl *ctrl) : DownloadProgressDialog(_L("Downloading Virtual Camera Tools")), ctrl(ctrl) {} struct UpgradeNetworkJob2 : UpgradeNetworkJob { - UpgradeNetworkJob2(std::shared_ptr<ProgressIndicator> pri) : UpgradeNetworkJob() { + UpgradeNetworkJob2() { name = "cameratools"; package_name = "camera_tools.zip"; } }; - std::shared_ptr<UpgradeNetworkJob> make_job(std::shared_ptr<ProgressIndicator> pri) - { return std::make_shared<UpgradeNetworkJob2>(pri); } + std::unique_ptr<UpgradeNetworkJob> make_job() override + { return std::make_unique<UpgradeNetworkJob2>(); } void on_finish() override { ctrl->CallAfter([ctrl = this->ctrl] { ctrl->ToggleStream(); }); diff --git a/src/slic3r/GUI/MixedFilamentDialog.cpp b/src/slic3r/GUI/MixedFilamentDialog.cpp index 902c12d27b..8176a76202 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.cpp +++ b/src/slic3r/GUI/MixedFilamentDialog.cpp @@ -126,7 +126,6 @@ MixedFilamentDialog::MixedFilamentDialog(wxWindow* parent, const std::vector<std::string>& physical_types) : DPIDialog(parent, wxID_ANY, _L("Add Mixed Filament"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) - , m_edit_mode(false) , m_physical_colors(physical_colors) , m_physical_names(physical_names) , m_physical_types(physical_types) @@ -157,7 +156,6 @@ MixedFilamentDialog::MixedFilamentDialog(wxWindow* parent, : DPIDialog(parent, wxID_ANY, _L("Edit Mixed Filament"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_result(existing) - , m_edit_mode(true) , m_physical_colors(physical_colors) , m_physical_names(physical_names) , m_physical_types(physical_types) @@ -847,23 +845,8 @@ wxBoxSizer* MixedFilamentDialog::create_ratio_slider() m_ratio_bar->Bind(wxEVT_PAINT, [this](wxPaintEvent&) { wxBufferedPaintDC dc(m_ratio_bar); wxSize sz = m_ratio_bar->GetClientSize(); - - wxColour col_a = comp_colour(0), col_b = comp_colour(1); - - for (int x = 0; x < sz.GetWidth(); ++x) { - double t = (double)x / sz.GetWidth(); - wxColour c = blend_colors(col_a, col_b, 1.0 - t); - dc.SetPen(wxPen(c)); - dc.DrawLine(x, 0, x, sz.GetHeight()); - } - - int div_x = (int)(ratio(1) / 100.0 * sz.GetWidth()); - // Fixed in both themes, like the triangle picker's drag handle: the divider is drawn over - // blended filament colour, so it has to keep its contrast against data rather than chrome. - dc.SetPen(wxPen(wxColour(80, 80, 80), FromDIP(4))); - dc.DrawLine(div_x, 0, div_x, sz.GetHeight()); - dc.SetPen(wxPen(*wxWHITE, FromDIP(2))); - dc.DrawLine(div_x, 0, div_x, sz.GetHeight()); + draw_mixed_ratio_blend_bar(dc, wxRect(0, 0, sz.GetWidth(), sz.GetHeight()), + comp_colour(0), comp_colour(1), ratio(1) / 100.0); }); m_ratio_bar->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) { @@ -919,52 +902,8 @@ wxBoxSizer* MixedFilamentDialog::create_ratio_slider() } // ---- Triangle (ternary) ratio picker ---- - -// Barycentric coordinate utilities -struct TriPoint { double x, y; }; - -static double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c) -{ - return (b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y); -} - -static bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) -{ - double total = tri_signed_area2(v0, v1, v2); - if (std::abs(total) < 1e-9) return false; - double s0 = tri_signed_area2(p, v1, v2) / total; - double s1 = tri_signed_area2(v0, p, v2) / total; - double s2 = 1.0 - s0 - s1; - return s0 >= -0.001 && s1 >= -0.001 && s2 >= -0.001; -} - -static void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, - double& w0, double& w1, double& w2) -{ - double total = std::abs(tri_signed_area2(v0, v1, v2)); - if (total < 1e-9) { w0 = w1 = w2 = 1.0 / 3.0; return; } - w0 = std::abs(tri_signed_area2(p, v1, v2)) / total; - w1 = std::abs(tri_signed_area2(v0, p, v2)) / total; - w2 = 1.0 - w0 - w1; - w0 = std::clamp(w0, 0.0, 1.0); - w1 = std::clamp(w1, 0.0, 1.0); - w2 = std::clamp(w2, 0.0, 1.0); - double s = w0 + w1 + w2; - if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } -} - -static TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) -{ - double w0, w1, w2; - tri_barycentric(p, v0, v1, v2, w0, w1, w2); - w0 = std::clamp(w0, 0.0, 1.0); - w1 = std::clamp(w1, 0.0, 1.0); - w2 = std::clamp(w2, 0.0, 1.0); - double s = w0 + w1 + w2; - if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } - return {w0 * v0.x + w1 * v1.x + w2 * v2.x, - w0 * v0.y + w1 * v1.y + w2 * v2.y}; -} +// The barycentric utilities (TriPoint, tri_contains, tri_barycentric, tri_clamp) live in +// FilamentBitmapUtils so the Publish dialog can mirror this picker read-only. wxBoxSizer* MixedFilamentDialog::create_triangle_picker() { @@ -998,72 +937,15 @@ wxBoxSizer* MixedFilamentDialog::create_triangle_picker() wxSize sz = m_triangle_panel->GetClientSize(); auto [v0, v1, v2] = get_vertices(); - wxColour tri_bg = StateColor::darkModeColorFor(*wxWHITE); - dc.SetBrush(wxBrush(tri_bg)); - dc.SetPen(*wxTRANSPARENT_PEN); - dc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); - - wxColour c0 = comp_colour(0), c1 = comp_colour(1), c2 = comp_colour(2); - - const bool cache_valid = m_tri_cache_bmp.IsOk() && - m_tri_cache_size == sz && - m_tri_cache_c0 == c0 && m_tri_cache_c1 == c1 && m_tri_cache_c2 == c2; - - if (!cache_valid) { - int min_y = (int)std::min({v0.y, v1.y, v2.y}); - int max_y = (int)std::max({v0.y, v1.y, v2.y}); - int min_x = (int)std::min({v0.x, v1.x, v2.x}); - int max_x = (int)std::max({v0.x, v1.x, v2.x}); - - m_tri_cache_bmp = wxBitmap(sz.GetWidth(), sz.GetHeight(), 24); - wxMemoryDC mdc(m_tri_cache_bmp); - mdc.SetBrush(wxBrush(tri_bg)); - mdc.SetPen(*wxTRANSPARENT_PEN); - mdc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); - - for (int py = min_y; py <= max_y; ++py) { - for (int px = min_x; px <= max_x; ++px) { - TriPoint p = {(double)px, (double)py}; - if (!tri_contains(p, v0, v1, v2)) continue; - double w0, w1, w2; - tri_barycentric(p, v0, v1, v2, w0, w1, w2); - unsigned char mr, mg, mb; - if (w0 + w1 > 1e-6) { - float t01 = static_cast<float>(w1 / (w0 + w1)); - Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), - c1.Red(), c1.Green(), c1.Blue(), - t01, &mr, &mg, &mb); - float t2 = static_cast<float>(w2); - Slic3r::filament_mixer_lerp(mr, mg, mb, - c2.Red(), c2.Green(), c2.Blue(), - t2, &mr, &mg, &mb); - } else { - mr = c2.Red(); mg = c2.Green(); mb = c2.Blue(); - } - mdc.SetPen(wxPen(wxColour(mr, mg, mb))); - mdc.DrawPoint(px, py); - } - } - - mdc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#CECECE")), 1)); - mdc.SetBrush(*wxTRANSPARENT_BRUSH); - wxPoint pts[3] = {{(int)v0.x, (int)v0.y}, {(int)v1.x, (int)v1.y}, {(int)v2.x, (int)v2.y}}; - mdc.DrawPolygon(3, pts); - - mdc.SelectObject(wxNullBitmap); - m_tri_cache_c0 = c0; m_tri_cache_c1 = c1; m_tri_cache_c2 = c2; - m_tri_cache_size = sz; - } - - dc.DrawBitmap(m_tri_cache_bmp, 0, 0); - - // Drag handle (always redrawn on top of cached bitmap) - double hx = m_tri_wx * v0.x + m_tri_wy * v1.x + m_tri_wz * v2.x; - double hy = m_tri_wx * v0.y + m_tri_wy * v1.y + m_tri_wz * v2.y; - int handle_r = FromDIP(5); - dc.SetBrush(*wxWHITE_BRUSH); - dc.SetPen(wxPen(wxColour("#262E30"), FromDIP(2))); - dc.DrawCircle((int)hx, (int)hy, handle_r); + // Draw the background, cached barycentric fill, outline and drag-handle marker through the + // shared picker painter (same geometry the read-only Publish preview uses). + draw_mixed_triangle_picker(dc, sz, + {comp_colour(0), comp_colour(1), comp_colour(2)}, + {m_tri_wx, m_tri_wy, m_tri_wz}, + {StateColor::darkModeColorFor(*wxWHITE), + StateColor::darkModeColorFor(wxColour("#CECECE")), + StateColor::darkModeColorFor(wxColour("#262E30")), + StateColor::darkModeColorFor(COLOR_LABEL_MUTED)}); if (m_result.ratios.size() >= 3) { dc.SetFont(::Label::Body_10); diff --git a/src/slic3r/GUI/MixedFilamentDialog.hpp b/src/slic3r/GUI/MixedFilamentDialog.hpp index ea8ac5ad16..381896494e 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.hpp +++ b/src/slic3r/GUI/MixedFilamentDialog.hpp @@ -115,7 +115,6 @@ private: wxColour comp_colour(size_t i) const; MixedFilamentResult m_result; - bool m_edit_mode{false}; std::vector<std::string> m_physical_colors; std::vector<std::string> m_physical_names; std::vector<std::string> m_physical_types; @@ -170,10 +169,6 @@ private: // Triangle picker drag point (barycentric weights) double m_tri_wx{0.333}, m_tri_wy{0.333}, m_tri_wz{0.334}; - // Cached triangle color bitmap (invalidated when colors or size change) - wxBitmap m_tri_cache_bmp; - wxColour m_tri_cache_c0, m_tri_cache_c1, m_tri_cache_c2; - wxSize m_tri_cache_size; std::array<RatioLabelPanel*, 3> m_triangle_ratio_labels{nullptr, nullptr, nullptr}; }; diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 13688d6526..9252b04559 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -78,7 +78,6 @@ private: Tabbook* m_tabpanel{ nullptr }; wxSizer* m_main_sizer{ nullptr }; - AddMachinePanel* m_status_add_machine_panel; StatusPanel* m_status_info_panel; MediaFilePanel* m_media_file_panel; UpgradePanel* m_upgrade_panel; @@ -86,8 +85,6 @@ private: /* side tools */ SideTools* m_side_tools{nullptr}; - wxStaticBitmap* m_bitmap_arrow; - wxStaticBitmap* m_bitmap_wifi_signal; SelectMachinePopup m_select_machine; /* images */ diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 11709501ac..8ed91d461f 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -498,7 +498,7 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); static ImVec2 last_win_size(0.0f, 0.0f); bool shown = true; - if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse || ImGuiWindowFlags_NoTitleBar)) { + if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar)) { if (shown) { ImVec2 win_size = ImGui::GetWindowSize(); if (last_win_size.x != win_size.x || last_win_size.y != win_size.y) { diff --git a/src/slic3r/GUI/MsgDialog.hpp b/src/slic3r/GUI/MsgDialog.hpp index 90fd160310..ed8079d88c 100644 --- a/src/slic3r/GUI/MsgDialog.hpp +++ b/src/slic3r/GUI/MsgDialog.hpp @@ -177,7 +177,6 @@ public: // Generic rich message dialog, used intead of wxRichMessageDialog class RichMessageDialog : public MsgDialog { - wxCheckBox* m_checkBox{ nullptr }; wxString m_checkBoxText; bool m_checkBoxValue{ false }; @@ -416,7 +415,6 @@ private: wxString m_new_keys; Button * m_update_btn = nullptr; Button * m_later_btn = nullptr; - wxStaticText *m_msg_text = nullptr; }; diff --git a/src/slic3r/GUI/MultiMachine.cpp b/src/slic3r/GUI/MultiMachine.cpp index f5ffd1319f..c0e84f40e9 100644 --- a/src/slic3r/GUI/MultiMachine.cpp +++ b/src/slic3r/GUI/MultiMachine.cpp @@ -217,7 +217,7 @@ std::vector<DeviceItem*> selected_machines(const std::vector<DeviceItem*>& dev_i SortItem::SortItem() { - sort_map.emplace(std::make_pair(SortRule::SR_None, [this](const DeviceItem* d1, const DeviceItem* d2) { + sort_map.emplace(std::make_pair(SortRule::SR_None, [](const DeviceItem* d1, const DeviceItem* d2) { return d1->state_dev_name > d2->state_dev_name; })); sort_map.emplace(std::make_pair(SortRule::SR_DEV_NAME, [this](const DeviceItem* d1, const DeviceItem* d2) { diff --git a/src/slic3r/GUI/MultiMachineManagerPage.cpp b/src/slic3r/GUI/MultiMachineManagerPage.cpp index d6531cc8d4..792c23fb13 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.cpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.cpp @@ -19,7 +19,7 @@ MultiMachineItem::MultiMachineItem(wxWindow* parent, MachineObject* obj) Bind(wxEVT_LEAVE_WINDOW, &MultiMachineItem::OnLeaveWindow, this); Bind(wxEVT_LEFT_DOWN, &MultiMachineItem::OnLeftDown, this); Bind(wxEVT_MOTION, &MultiMachineItem::OnMove, this); - Bind(EVT_MULTI_DEVICE_VIEW, [this, obj](auto& e) { + Bind(EVT_MULTI_DEVICE_VIEW, [obj](auto& e) { wxGetApp().mainframe->jump_to_monitor(obj->get_dev_id()); if (wxGetApp().mainframe->m_monitor->get_status_panel()->get_media_play_ctrl()) { wxGetApp().mainframe->m_monitor->get_status_panel()->get_media_play_ctrl()->jump_to_play(); diff --git a/src/slic3r/GUI/MultiMachineManagerPage.hpp b/src/slic3r/GUI/MultiMachineManagerPage.hpp index 2576e36f12..9b5655a9ee 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.hpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.hpp @@ -79,7 +79,6 @@ private: wxBoxSizer* m_main_sizer{nullptr}; wxBoxSizer* m_sizer_machine_list{nullptr}; wxScrolledWindow* m_machine_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // table head wxPanel* m_table_head_panel{ nullptr }; @@ -99,8 +98,6 @@ private: int m_total_count{ 0 }; int m_count_page_item{ 10 }; - bool prev{ false }; - bool next{ false }; Button* btn_last_page{ nullptr }; Button* btn_next_page{ nullptr }; wxStaticText* st_page_number{ nullptr }; diff --git a/src/slic3r/GUI/MultiMachinePage.cpp b/src/slic3r/GUI/MultiMachinePage.cpp index 88d03007b9..dd67e099a0 100644 --- a/src/slic3r/GUI/MultiMachinePage.cpp +++ b/src/slic3r/GUI/MultiMachinePage.cpp @@ -80,7 +80,7 @@ void MultiMachinePage::init_tabpanel() sizer_side_tools->Add(m_side_tools, 1, wxEXPAND, 0); m_tabpanel = new Tabbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, sizer_side_tools, wxNB_LEFT | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME); m_tabpanel->SetBackgroundColour(wxColour("#FEFFFF")); - m_tabpanel->Bind(wxEVT_BOOKCTRL_PAGE_CHANGED, [this](wxBookCtrlEvent& e) {; }); + m_tabpanel->Bind(wxEVT_BOOKCTRL_PAGE_CHANGED, [](wxBookCtrlEvent& e) {; }); m_local_task_manager = new LocalTaskManagerPage(m_tabpanel); m_cloud_task_manager = new CloudTaskManagerPage(m_tabpanel); diff --git a/src/slic3r/GUI/MultiMachinePage.hpp b/src/slic3r/GUI/MultiMachinePage.hpp index 0572c30d1b..724eeed2a9 100644 --- a/src/slic3r/GUI/MultiMachinePage.hpp +++ b/src/slic3r/GUI/MultiMachinePage.hpp @@ -81,7 +81,6 @@ private: AppConfig* app_config; Label* m_label{ nullptr }; wxScrolledWindow* scroll_macine_list{ nullptr }; - wxBoxSizer* m_sizer_body{ nullptr }; wxBoxSizer* sizer_machine_list{ nullptr }; std::map<std::string, DevicePickItem*> m_device_items; int m_selected_count{0}; diff --git a/src/slic3r/GUI/MultiTaskManagerPage.cpp b/src/slic3r/GUI/MultiTaskManagerPage.cpp index bca2de8761..48a7fbe43e 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.cpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.cpp @@ -783,7 +783,7 @@ void LocalTaskManagerPage::refresh_user_device(bool clear) mtitem->m_send_time = task_state_info->get_sent_time(); mtitem->state_local_task = task_state_info->state(); - task_state_info->set_state_changed_fn([this, mtitem](TaskState state, int percent) { + task_state_info->set_state_changed_fn([mtitem](TaskState state, int percent) { mtitem->state_local_task = state; if (state == TaskState::TS_SEND_COMPLETED) { diff --git a/src/slic3r/GUI/MultiTaskManagerPage.hpp b/src/slic3r/GUI/MultiTaskManagerPage.hpp index 0f676d06b3..f1b35ca2aa 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.hpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.hpp @@ -99,7 +99,6 @@ private: wxBoxSizer* page_sizer{ nullptr }; wxBoxSizer* m_sizer_task_list{ nullptr }; wxScrolledWindow* m_task_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // table head wxPanel* m_table_head_panel{ nullptr }; @@ -113,7 +112,6 @@ private: Button* m_action{ nullptr }; // ctrl button for all - int m_sel_number{0}; wxPanel* m_ctrl_btn_panel{ nullptr }; wxBoxSizer* m_btn_sizer{ nullptr }; Button* btn_stop_all{ nullptr }; @@ -160,15 +158,12 @@ private: wxBoxSizer* m_sizer_task_list{ nullptr }; wxBoxSizer* m_main_sizer{ nullptr }; wxScrolledWindow* m_task_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // Flipping pages int m_current_page{ 0 }; int m_total_page{0}; int m_total_count{ 0 }; int m_count_page_item{ 10 }; - bool prev{ false }; - bool next{ false }; Button* btn_last_page{ nullptr }; Button* btn_next_page{ nullptr }; wxStaticText* st_page_number{ nullptr }; @@ -191,7 +186,6 @@ private: Button* m_action{ nullptr }; // ctrl button for all - int m_sel_number; wxPanel* m_ctrl_btn_panel{ nullptr }; wxBoxSizer* m_btn_sizer{ nullptr }; Button* btn_pause_all{ nullptr }; diff --git a/src/slic3r/GUI/NetworkPluginDialog.cpp b/src/slic3r/GUI/NetworkPluginDialog.cpp index bc898d0d24..42e1fc5fc5 100644 --- a/src/slic3r/GUI/NetworkPluginDialog.cpp +++ b/src/slic3r/GUI/NetworkPluginDialog.cpp @@ -156,14 +156,14 @@ void NetworkPluginDownloadDialog::create_update_available_ui(const std::string& auto daa_chk = new CheckBox(this); daa_chk->SetValue(cfg->is_network_update_prompt_disabled()); - daa_chk->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e){ + daa_chk->Bind(wxEVT_TOGGLEBUTTON, [](wxCommandEvent& e){ auto cfg = wxGetApp().app_config; cfg->set_network_update_prompt_disabled(e.IsChecked()); cfg->save(); }); auto daa_str = new Label(this, _L("Don't Ask Again")); - auto on_toggle = [this, daa_chk]() { + auto on_toggle = [daa_chk]() { daa_chk->SetValue(!daa_chk->GetValue()); wxCommandEvent evt(wxEVT_TOGGLEBUTTON, daa_chk->GetId()); evt.SetEventObject(daa_chk); diff --git a/src/slic3r/GUI/NetworkTestDialog.cpp b/src/slic3r/GUI/NetworkTestDialog.cpp index 78f395febc..53876d9f97 100644 --- a/src/slic3r/GUI/NetworkTestDialog.cpp +++ b/src/slic3r/GUI/NetworkTestDialog.cpp @@ -268,7 +268,7 @@ void NetworkTestDialog::start_test_url(TestJob job, wxString name, wxString url) int result = -1; http.timeout_max(10) - .on_complete([this, &result](std::string body, unsigned status) { + .on_complete([&result](std::string body, unsigned status) { try { if (status == 200) { result = 0; diff --git a/src/slic3r/GUI/Notebook.cpp b/src/slic3r/GUI/Notebook.cpp index 673508454a..67c1831e4d 100644 --- a/src/slic3r/GUI/Notebook.cpp +++ b/src/slic3r/GUI/Notebook.cpp @@ -56,7 +56,7 @@ ButtonsListCtrl::ButtonsListCtrl(wxWindow *parent, wxBoxSizer* side_tools) : // BBS: disable custom paint //this->Bind(wxEVT_PAINT, &ButtonsListCtrl::OnPaint, this); - Bind(wxEVT_SYS_COLOUR_CHANGED, [this](auto& e){ + Bind(wxEVT_SYS_COLOUR_CHANGED, [](auto& e){ }); } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 5e83ad845f..2ee875901c 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -3083,7 +3083,7 @@ bool NotificationManager::push_notification_data(std::unique_ptr<NotificationMan } bool retval = false; if (this->activate_existing(notification.get())) { - if (m_initialized) { // ignore update action - it cant be initialized if canvas and imgui context is not ready + if (m_initialized && m_imgui_ready) { if (notification->get_type() == NotificationType::SlicingWarning) { m_pop_notifications.back()->append(notification->get_data().ori_text); } else { @@ -3129,6 +3129,10 @@ void NotificationManager::stop_delayed_notifications_of_type(const NotificationT void NotificationManager::render_notifications(GLCanvas3D &canvas, float overlay_width, float bottom_margin, float right_margin) { + // Notifications render inside an ImGui frame, so the font atlas is built from this point on + // and pushed notifications may safely measure their text. + m_imgui_ready = true; + sort_notifications(); float bottom_up_last_y = bottom_margin; // ORCA dont scale margins @@ -3339,17 +3343,7 @@ size_t NotificationManager::get_notification_count() const void NotificationManager::bbl_show_plateinfo_notification(const std::string &text) { NotificationData data{NotificationType::BBLPlateInfo, NotificationLevel::PrintInfoNotificationLevel, BBL_NOTICE_MAX_INTERVAL, text}; - - for (std::unique_ptr<PopNotification> ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBLPlateInfo) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique<NotificationManager::PopNotification>(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + push_notification_data(data, 0); } void NotificationManager::bbl_close_3mf_warn_notification() @@ -3360,20 +3354,10 @@ void NotificationManager::bbl_close_3mf_warn_notification() } } -void NotificationManager::bbl_show_3mf_warn_notification(const std::string &text) +void NotificationManager::bbl_show_3mf_warn_notification(const std::string &text, NotificationLevel level) { - NotificationData data{NotificationType::BBL3MFInfo, NotificationLevel::ErrorNotificationLevel, BBL_NOTICE_MAX_INTERVAL, text}; - - for (std::unique_ptr<PopNotification> ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBL3MFInfo) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique<NotificationManager::PopNotification>(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + NotificationData data{NotificationType::BBL3MFInfo, level, BBL_NOTICE_MAX_INTERVAL, text}; + push_notification_data(data, 0); } void NotificationManager::bbl_close_plateinfo_notification() @@ -3388,17 +3372,7 @@ void NotificationManager::bbl_close_plateinfo_notification() void NotificationManager::bbl_show_preview_only_notification(const std::string &text) { NotificationData data{NotificationType::BBLPreviewOnlyMode, NotificationLevel::WarningNotificationLevel, 0, text}; - - for (std::unique_ptr<PopNotification> ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBLPreviewOnlyMode) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique<NotificationManager::PopNotification>(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + push_notification_data(data, 0); } void NotificationManager::bbl_close_preview_only_notification() diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index bf0a5cfe1a..cb65524dac 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -378,7 +378,9 @@ public: void bbl_close_plateinfo_notification(); //BBS-- 3mf warning - void bbl_show_3mf_warn_notification(const std::string &text); + // level defaults to the historical error styling; callers reporting informational + // 3MF load notices (published settings) pass WarningNotificationLevel instead. + void bbl_show_3mf_warn_notification(const std::string &text, NotificationLevel level = NotificationLevel::ErrorNotificationLevel); void bbl_close_3mf_warn_notification(); //BBS--preview only mode @@ -1052,6 +1054,11 @@ private: bool m_is_dark = false; // set by init(), until false notifications are only added not updated and frame is not requested after push bool m_initialized{ false }; + // set by render_notifications() on the first rendered frame. m_initialized only proves the + // manager exists, not that the ImGui context can measure text: the font atlas is built lazily + // in ImGuiWrapper::new_frame() on the first GL render, so updating a notification before that + // (PopNotification::init -> count_spaces -> ImGui::CalcTextSize) dereferences a null font. + bool m_imgui_ready{ false }; // Target for wxWidgets events sent by clicking on the hyperlink available at some notifications. wxEvtHandler* m_evt_handler; // Cache of IDs to identify and reuse ImGUI windows. @@ -1076,7 +1083,10 @@ private: NotificationType::ProgressBar, NotificationType::PrintHostUpload, NotificationType::SimplifySuggestion, - NotificationType::ValidateWarning + NotificationType::ValidateWarning, + // A published file load can produce several distinct 3MF warnings (invalid values, + // skipped settings, changed slots); let them stack rather than clobber each other. + NotificationType::BBL3MFInfo }; //prepared (basic) notifications // non-static so its not loaded too early. If static, the translations wont load correctly. diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 2ee94dbeeb..4fce046162 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -158,7 +158,7 @@ wxPoint OG_CustomCtrl::get_pos(const Line& line, Field* field_in/* = nullptr*/) ctrl_line.height = size.y; }; - auto add_buttons_width = [&h_pos, this] (int blinking_button_width) { + auto add_buttons_width = [&h_pos] (int blinking_button_width) { #ifndef DISABLE_BLINKING # ifndef DISABLE_UNDO_SYS h_pos += 3 * blinking_button_width; diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index 47f62aa168..ef5d4ba9d2 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -86,8 +86,6 @@ ObjColorDialog::ObjColorDialog(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE /* | wxRESIZE_BORDER*/) - , m_filament_ids(in_out.filament_ids) - , m_first_extruder_id(in_out.first_extruder_id) { auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); @@ -254,7 +252,7 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c m_color_cluster_num_by_user_ebox->Bind(wxEVT_TEXT_ENTER, on_apply_color_cluster_text_modify); m_color_cluster_num_by_user_ebox->Bind(wxEVT_SPINCTRL, on_apply_color_cluster_text_modify); - m_color_cluster_num_by_user_ebox->Bind(wxEVT_CHAR, [this](wxKeyEvent &e) { + m_color_cluster_num_by_user_ebox->Bind(wxEVT_CHAR, [](wxKeyEvent &e) { int keycode = e.GetKeyCode(); wxString input_char = wxString::Format("%c", keycode); long value; diff --git a/src/slic3r/GUI/ObjColorDialog.hpp b/src/slic3r/GUI/ObjColorDialog.hpp index 19ed1dcb24..34f9eb5de5 100644 --- a/src/slic3r/GUI/ObjColorDialog.hpp +++ b/src/slic3r/GUI/ObjColorDialog.hpp @@ -94,7 +94,6 @@ private: std::vector<int> m_cluster_map_filaments;//show middle int m_max_filament_index = 0; std::vector<wxColour> m_cluster_colours;//from_algo and show left - bool m_can_add_filament{true}; bool m_deal_thumbnail_flag{false}; std::vector<wxColour> m_new_add_colors; std::vector<wxColour> m_new_add_final_colors; @@ -123,8 +122,6 @@ private: wxBoxSizer * m_main_sizer = nullptr; wxBoxSizer * m_buttons_sizer = nullptr; std::unordered_map<int, Button *> m_button_list; - std::vector<unsigned char>& m_filament_ids; - unsigned char & m_first_extruder_id; }; #endif // _WIPE_TOWER_DIALOG_H_ \ No newline at end of file diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index c808545145..b20d16aca9 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -199,7 +199,7 @@ public: OptionsGroup(wxWindow *_parent, const wxString &title, const wxString &icon, bool is_tab_opt = false, column_t extra_clmn = nullptr); - ~OptionsGroup() { clear(true); } + virtual ~OptionsGroup() { clear(true); } wxGridSizer* get_grid_sizer() { return m_grid_sizer; } const std::vector<Line>& get_lines() { return m_lines; } diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index 7d054d8a1b..a0834666ad 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -128,7 +128,7 @@ wxBoxSizer *TipsDialog::create_item_checkbox(wxString title, wxWindow *parent, w m_show_again = wxGetApp().app_config->has(param); checkbox->SetValue(m_show_again); - checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, checkbox, param](wxCommandEvent &e) { + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, param](wxCommandEvent &e) { m_show_again = m_show_again ? false : true; e.Skip(); }); @@ -290,11 +290,11 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c m_compare_btn = new ScalableButton(m_top_panel, wxID_ANY, "compare", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); m_compare_btn->SetToolTip(_L("Compare presets")); - m_compare_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { wxGetApp().mainframe->diff_dialog.show(); })); + m_compare_btn->Bind(wxEVT_BUTTON, ([](wxCommandEvent e) { wxGetApp().mainframe->diff_dialog.show(); })); m_setting_btn = new ScalableButton(m_top_panel, wxID_ANY, "table", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); m_setting_btn->SetToolTip(_L("View all object's settings")); - m_setting_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &) { wxGetApp().plater()->PopupObjectTable(-1, -1, {0, 0}); }); + m_setting_btn->Bind(wxEVT_BUTTON, [](wxCommandEvent &) { wxGetApp().plater()->PopupObjectTable(-1, -1, {0, 0}); }); m_highlighter.set_timer_owner(this, 0); this->Bind(wxEVT_TIMER, [this](wxTimerEvent &) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 59a857816e..90e2c96ab6 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1,5 +1,6 @@ #include <cstddef> #include <algorithm> +#include <limits> #include <numeric> #include <vector> #include <string> @@ -20,6 +21,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Polygon.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Geometry.hpp" @@ -157,7 +159,7 @@ PartPlate::PartPlate() init(); } -PartPlate::PartPlate(PartPlateList *partplate_list, Vec3d origin, int width, int depth, int height, Plater* platerObj, Model* modelObj, bool printable, PrinterTechnology tech) +PartPlate::PartPlate(PartPlateList *partplate_list, Vec3d origin, int width, int depth, double height, Plater* platerObj, Model* modelObj, bool printable, PrinterTechnology tech) :m_partplate_list(partplate_list), m_plater(platerObj), m_model(modelObj), printer_technology(tech), m_origin(origin), m_width(width), m_depth(depth), m_height(height), m_printable(printable) { init(); @@ -1531,8 +1533,23 @@ std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode) const if (check_objects_empty_and_gcode3mf(plate_extruders)) { return plate_extruders; } - // if 3mf file - const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + return get_extruders(conside_custom_gcode, wxGetApp().preset_bundle->prints.get_edited_preset().config, wxGetApp().preset_bundle->project_config); +} + +// The plate's filaments, with the global keys read from the given configs rather than the +// application's presets: the wipe tower estimate is also called under the CLI, which has no +// application object. get_extruders(bool) passes the edited presets; a full config serves both. +std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const +{ + std::vector<int> plate_extruders; + // A plate from a sliced .gcode.3mf holds no objects, so report the filaments the G-code + // used. check_objects_empty_and_gcode3mf does this for get_extruders(bool), but reaches + // the plater, which the CLI has none of; slice_filaments_info is only filled for such a plate. + if (m_model->objects.empty()) { + for (const FilamentInfo &info : slice_filaments_info) + plate_extruders.push_back(info.id + 1); + return plate_extruders; + } int glb_support_intf_extr = glb_config.opt_int("support_interface_filament"); int glb_support_extr = glb_config.opt_int("support_filament"); int glb_outer_wall_extr = glb_config.opt_int("outer_wall_filament_id"); @@ -1549,7 +1566,9 @@ std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode) const glb_support |= glb_config.opt_int("raft_layers") > 0; for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!contain_instance_totally(obj_idx, 0)) + // Any instance on the plate counts, as PrintApply does: after an arrange, instance 0 + // can sit on a different plate. + if (!contain_any_instance_totally(obj_idx)) continue; ModelObject* mo = m_model->objects[obj_idx]; @@ -1662,7 +1681,7 @@ std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode) const if (conside_custom_gcode) { //BBS int nums_extruders = 0; - if (const ConfigOptionStrings *color_option = dynamic_cast<const ConfigOptionStrings *>(wxGetApp().preset_bundle->project_config.option("filament_colour"))) { + if (const ConfigOptionStrings *color_option = dynamic_cast<const ConfigOptionStrings *>(project_config.option("filament_colour"))) { nums_extruders = color_option->values.size(); if (m_model->plates_custom_gcodes.find(m_plate_index) != m_model->plates_custom_gcodes.end()) { for (auto item : m_model->plates_custom_gcodes.at(m_plate_index).gcodes) { @@ -1681,9 +1700,8 @@ std::vector<int> PartPlate::get_extruders(bool conside_custom_gcode) const // is never loaded into a tray, so callers (AMS mapping, filament checks) must see the // physical filaments it resolves to instead. { - auto& project_config = wxGetApp().preset_bundle->project_config; - auto* is_mixed_opt = project_config.option<ConfigOptionBools>("filament_is_mixed"); - auto* comp_strs_opt = project_config.option<ConfigOptionStrings>("filament_mixed_components"); + const auto* is_mixed_opt = project_config.option<ConfigOptionBools>("filament_is_mixed"); + const auto* comp_strs_opt = project_config.option<ConfigOptionStrings>("filament_mixed_components"); if (is_mixed_opt && comp_strs_opt && has_any_mixed_filament(is_mixed_opt->values)) { std::vector<unsigned int> ext_0based; for (int e : plate_extruders) @@ -1757,26 +1775,25 @@ std::vector<int> PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D else obj_support = glb_support; - if (!obj_support) - continue; + if (obj_support) { + int obj_support_intf_extr = 0; + const ConfigOption* support_intf_extr_opt = object->config.option("support_interface_filament"); + if (support_intf_extr_opt != nullptr) + obj_support_intf_extr = support_intf_extr_opt->getInt(); + if (obj_support_intf_extr != 0) + plate_extruders.push_back(obj_support_intf_extr); + else if (glb_support_intf_extr != 0) + plate_extruders.push_back(glb_support_intf_extr); - int obj_support_intf_extr = 0; - const ConfigOption* support_intf_extr_opt = object->config.option("support_interface_filament"); - if (support_intf_extr_opt != nullptr) - obj_support_intf_extr = support_intf_extr_opt->getInt(); - if (obj_support_intf_extr != 0) - plate_extruders.push_back(obj_support_intf_extr); - else if (glb_support_intf_extr != 0) - plate_extruders.push_back(glb_support_intf_extr); - - int obj_support_extr = 0; - const ConfigOption* support_extr_opt = object->config.option("support_filament"); - if (support_extr_opt != nullptr) - obj_support_extr = support_extr_opt->getInt(); - if (obj_support_extr != 0) - plate_extruders.push_back(obj_support_extr); - else if (glb_support_extr != 0) - plate_extruders.push_back(glb_support_extr); + int obj_support_extr = 0; + const ConfigOption* support_extr_opt = object->config.option("support_filament"); + if (support_extr_opt != nullptr) + obj_support_extr = support_extr_opt->getInt(); + if (obj_support_extr != 0) + plate_extruders.push_back(obj_support_extr); + else if (glb_support_extr != 0) + plate_extruders.push_back(glb_support_extr); + } int obj_outer_wall_extr = 0; if (const ConfigOption* wall_opt = object->config.option("outer_wall_filament_id"); wall_opt != nullptr) @@ -2312,113 +2329,97 @@ bool PartPlate::check_compatible_of_nozzle_and_filament(const DynamicPrintConfig return wipe_tower_size; }*/ -Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, const double w, const double wipe_volume, int extruder_count, int plate_extruder_size, bool use_global_objects, bool enable_wrapping_detection) const +WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintConfig &config, int plate_extruder_size, bool use_global_objects) const { - Vec3d wipe_tower_size; - double layer_height = 0.08f; // hard code layer height - double max_height = 0.f; - wipe_tower_size.setZero(); + // The CLI calls this too, so the plate's filaments are derived from the passed config: + // get_extruders(bool) reads the same keys off wxGetApp()'s presets, which the CLI has none of. + // An explicit count is a floor: init-time and arrange estimates size an empty plate for that + // many generic filaments, the lowest ids not already on the plate. + std::vector<int> plate_extruders = get_extruders(true, config, config); + for (int id = 1; int(plate_extruders.size()) < plate_extruder_size; ++id) + if (std::find(plate_extruders.begin(), plate_extruders.end(), id) == plate_extruders.end()) + plate_extruders.push_back(id); + // The wipe tower filament joins the tool ordering even when unused (Print::extruders), so + // validation counts it - but only where there is a tower to join, which is the + // has_wipe_tower() half of that guard. + const ConfigOption *wipe_tower_filament_opt = config.option("wipe_tower_filament"); + const ConfigOption *enable_prime_tower_opt = config.option("enable_prime_tower"); + const int wipe_tower_filament = wipe_tower_filament_opt != nullptr ? wipe_tower_filament_opt->getInt() : 0; + if (enable_prime_tower_opt != nullptr && enable_prime_tower_opt->getBool() && plate_extruders.size() > 1 && wipe_tower_filament > 0 && + std::find(plate_extruders.begin(), plate_extruders.end(), wipe_tower_filament) == plate_extruders.end()) + plate_extruders.push_back(wipe_tower_filament); + if (plate_extruders.empty()) + return WipeTowerFootprint(); - const ConfigOption* layer_height_opt = config.option("layer_height"); - if (layer_height_opt) - layer_height = layer_height_opt->getFloat(); - - // empty plate - if (plate_extruder_size == 0) - { - std::vector<int> plate_extruders = get_extruders(true); - plate_extruder_size = plate_extruders.size(); - } - if (plate_extruder_size == 0) - return wipe_tower_size; - - for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!use_global_objects && !contain_instance_totally(obj_idx, 0)) + // Tallest object on this plate and the thinnest layer it is sliced at, resolved per object + // as PrintObject resolves them (override, else preset) and over this plate's objects only - + // seeding from the global value, or folding in an off-plate override, diverges from Print. + const ConfigOption *layer_height_opt = config.option("layer_height"); + const double global_layer_height = layer_height_opt != nullptr ? layer_height_opt->getFloat() : 0.08; + double max_height = 0.; + double layer_height = std::numeric_limits<double>::max(); + for (int obj_idx = 0; obj_idx < int(m_model->objects.size()); ++obj_idx) { + const ModelObject *object = m_model->objects[obj_idx]; + if (!use_global_objects && !contain_any_instance_totally(obj_idx)) continue; - - BoundingBoxf3 bbox = m_model->objects[obj_idx]->bounding_box_exact(); - max_height = std::max(bbox.size().z(), max_height); - } - wipe_tower_size(2) = max_height; - //const DynamicPrintConfig &dconfig = wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto timelapse_type = config.option<ConfigOptionEnum<TimelapseType>>("timelapse_type"); - bool need_wipe_tower = (timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false) | enable_wrapping_detection; - double extra_spacing = config.option("prime_tower_infill_gap")->getFloat() / 100.; - const ConfigOptionEnum<WipeTowerWallType>* use_rib_wall_opt = config.option<ConfigOptionEnum<WipeTowerWallType>>("wipe_tower_wall_type"); - bool use_rib_wall = use_rib_wall_opt ? use_rib_wall_opt->value == WipeTowerWallType::wtwRib: false; - double rib_width = config.option("wipe_tower_rib_width")->getFloat(); - double depth; - double filament_change_volume=0.; - { - std::vector<double> filament_change_lengths; - auto filament_change_lengths_opt = m_print->config().option<ConfigOptionFloats>("filament_change_length"); - if (filament_change_lengths_opt) filament_change_lengths = filament_change_lengths_opt->values; - double length = filament_change_lengths.empty() ? 0 : *std::max_element(filament_change_lengths.begin(), filament_change_lengths.end()); - double diameter = 1.75; - std::vector<double> diameters; - auto filament_diameter_opt = m_print->config().option<ConfigOptionFloats>("filament_diameter"); - if (filament_diameter_opt) diameters = filament_diameter_opt->values; - diameter = diameters.empty() ? diameter : *std::max_element(diameters.begin(), diameters.end()); - filament_change_volume = length * PI * diameter * diameter / 4.; - } - double volume = wipe_volume * (extruder_count == 2 ? plate_extruder_size : (plate_extruder_size - 1)); - if (extruder_count == 2) volume += filament_change_volume * (int) (plate_extruder_size / 2); - // Read from the passed plate config — m_print may not have been applied yet - // (fresh plates, CLI), in which case its PrintConfig still holds defaults. - const auto *purge_opt = config.option<ConfigOptionBool>("purge_in_prime_tower"); - const auto *semm_opt = config.option<ConfigOptionBool>("single_extruder_multi_material"); - const bool semm_flush = purge_opt && purge_opt->value && semm_opt && semm_opt->value; - if (semm_flush) volume = WipeTower2::estimate_semm_flush_volume(config, plate_extruder_size); - if (use_rib_wall) { - depth = std::sqrt(volume / layer_height * extra_spacing); - if (need_wipe_tower || plate_extruder_size > 1) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - double volume_depth = depth; - depth = std::max((double) min_wipe_tower_depth, depth); - rib_width = std::min(rib_width, depth / 2); - depth = rib_width / std::sqrt(2) + std::max(depth + m_print->config().wipe_tower_extra_rib_length.value, volume_depth); - wipe_tower_size(0) = wipe_tower_size(1) = depth; + // Per instance, to match PrintObject::size(); the union over instances differs once + // they are rotated apart. The cached convex hull has the mesh's z extent and is cheap + // enough for every scene reload. + for (int inst_idx = 0; inst_idx < int(object->instances.size()); ++inst_idx) { + if (!use_global_objects && !contain_instance_totally(obj_idx, inst_idx)) + continue; + max_height = std::max(max_height, object->instance_convex_hull_bounding_box(inst_idx, true).size().z()); } + const ConfigOption *object_layer_height = object->config.option("layer_height"); + layer_height = std::min(layer_height, object_layer_height != nullptr ? object_layer_height->getFloat() : global_layer_height); } - else { - depth = volume / (layer_height * w); - // The flush volumes already hold the spacing between wipes. - if (!semm_flush) depth *= extra_spacing; - if (need_wipe_tower || depth > EPSILON) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double)min_wipe_tower_depth, depth); - } - wipe_tower_size(0) = w; - wipe_tower_size(1) = depth; - } + if (layer_height == std::numeric_limits<double>::max()) + layer_height = global_layer_height; - return wipe_tower_size; + std::vector<unsigned int> filament_ids; + for (int id : plate_extruders) + if (id > 0) + filament_ids.push_back(static_cast<unsigned int>(id - 1)); + return Slic3r::estimate_wipe_tower_footprint(config, resolve_wipe_tower_type(config), filament_ids, layer_height, max_height); } -arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int extruder_count, int plate_extruder_size, bool use_global_objects) const +arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size, bool use_global_objects) const { float x = dynamic_cast<const ConfigOptionFloats*>(config.option("wipe_tower_x"))->get_at(plate_index); float y = dynamic_cast<const ConfigOptionFloats*>(config.option("wipe_tower_y"))->get_at(plate_index); - float w = dynamic_cast<const ConfigOptionFloat*>(config.option("prime_tower_width"))->value; //float a = dynamic_cast<const ConfigOptionFloat*>(config.option("wipe_tower_rotation_angle"))->value; - float v = dynamic_cast<const ConfigOptionFloat*>(config.option("prime_volume"))->value; - float tower_brim_width = dynamic_cast<const ConfigOptionFloat*>(config.option("prime_tower_brim_width"))->value; - const ConfigOptionBool * wrapping_opt = dynamic_cast<const ConfigOptionBool *>(config.option("enable_wrapping_detection")); - bool enable_wrapping = (wrapping_opt != nullptr) && wrapping_opt->value; - wt_size = estimate_wipe_tower_size(config, w, v, extruder_count, plate_extruder_size, use_global_objects, enable_wrapping); + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(config, plate_extruder_size, use_global_objects); + wt_size = Vec3d(footprint.width, footprint.depth, footprint.height); int plate_width=m_width, plate_depth=m_depth; - w = wt_size(0); // effective width; differs from prime_tower_width when the rib wall squares the tower + float w = wt_size(0); // effective width; differs from prime_tower_width when the rib wall squares the tower float depth = wt_size(1); - float margin = WIPE_TOWER_MARGIN + tower_brim_width, wp_brim_width = 0.f; - const ConfigOption* wipe_tower_brim_width_opt = config.option("prime_tower_brim_width"); - if (wipe_tower_brim_width_opt) { - wp_brim_width = wipe_tower_brim_width_opt->getFloat(); - if (wp_brim_width < 0) wp_brim_width = WipeTower::get_auto_brim_by_height((float) wt_size.z()); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; - } - - x = std::clamp(x, margin, (float)plate_width - w - margin - wp_brim_width); - y = std::clamp(y, margin, (float)plate_depth - depth - margin - wp_brim_width); + // Resolved brim, not the raw option: "Auto" (-1) would yield a margin of 0 and let the + // clamp put the brim off the bed. Matches set_default_wipe_tower_pos_for_plate. + float wp_brim_width = float(footprint.brim_width); + // A Type2 stabilization cone bulges past the body box like a brim does - fold its worst-axis + // bulge into the same margin. + const BoundingBox outline = get_extents(estimate_wipe_tower_first_layer_outline(config, resolve_wipe_tower_type(config), w, depth, wt_size.z())); + wp_brim_width += float(std::max({0., unscaled(outline.max.x()) - w, unscaled(outline.max.y()) - depth, -unscaled(outline.min.x()), -unscaled(outline.min.y())})); + // A position valid by WIPE_TOWER_MARGIN is the user's choice and stays untouched; an + // invalid one is re-placed with the comfort margin (falling back to the validity bounds + // on cramped plates). std::clamp is UB if lo > hi, so keep every hi >= lo. + const float margin = WIPE_TOWER_MARGIN + wp_brim_width; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; + const float x_hi = std::max(margin, (float) plate_width - w - margin); + const float y_hi = std::max(margin, (float) plate_depth - depth - margin); + const float margin_c = (float) WIPE_TOWER_AUTO_MARGIN + wp_brim_width; + float x_lo_c = margin_c, x_hi_c = (float) plate_width - w - margin_c; + if (x_lo_c > x_hi_c) { x_lo_c = margin; x_hi_c = x_hi; } + float y_lo_c = margin_c, y_hi_c = (float) plate_depth - depth - margin_c; + if (y_lo_c > y_hi_c) { y_lo_c = margin; y_hi_c = y_hi; } + // Drag clamps reach this limit through the volume's bounding box (post-slice: the real + // mesh, a couple of mm inside this reserved estimate), so a drop can land slightly out + // of bounds — snap it onto the bound; only far-out positions get the comfort re-place. + const float tol = 5.f; + if (x < margin - tol || x > x_hi + tol) x = std::clamp(x, x_lo_c, x_hi_c); + else x = std::clamp(x, margin, x_hi); + if (y < margin - tol || y > y_hi + tol) y = std::clamp(y, y_lo_c, y_hi_c); + else y = std::clamp(y, margin, y_hi); wt_pos(0) = x; wt_pos(1) = y; wt_pos(2) = 0.f; @@ -2473,7 +2474,7 @@ void PartPlate::clear(bool clear_sliced_result) /* size and position related functions*/ //set position and size -void PartPlate::set_pos_and_size(Vec3d& origin, int width, int depth, int height, bool with_instance_move, bool do_clear) +void PartPlate::set_pos_and_size(Vec3d& origin, int width, int depth, double height, bool with_instance_move, bool do_clear) { bool size_changed = false; //size changed means the machine changed bool pos_changed = false; @@ -2756,6 +2757,20 @@ bool PartPlate::contain_instance_totally(int obj_id, int instance_id) const return result; } +//judge whether any of the object's instances is totally included in plate or not +bool PartPlate::contain_any_instance_totally(int obj_id) const +{ + if (obj_id < 0 || obj_id >= int(m_model->objects.size())) + return false; + + const ModelObject *object = m_model->objects[obj_id]; + for (int instance_id = 0; instance_id < int(object->instances.size()); ++instance_id) + if (contain_instance_totally(obj_id, instance_id)) + return true; + + return false; +} + //check whether instance is outside the plate or not bool PartPlate::check_outside(int obj_id, int instance_id, BoundingBoxf3* bounding_box) { @@ -2772,10 +2787,10 @@ bool PartPlate::check_outside(int obj_id, int instance_id, BoundingBoxf3* boundi if (instance_box.min.z() < SINKING_Z_THRESHOLD) { // Orca: For sinking object, we use a more expensive algorithm so part below build plate won't be considered - // m_plater is null in CLI mode. - if (m_plater && plate_box.intersects(instance_box)) { + // m_height mirrors the printer's printable height and is set in CLI mode too, unlike m_plater. + if (plate_box.intersects(instance_box)) { // TODO: FIXME: this does not take exclusion area into account - const BuildVolume build_volume(get_shape(), m_plater->build_volume().printable_height(), m_extruder_areas, m_extruder_heights); + const BuildVolume build_volume(get_shape(), m_height, m_extruder_areas, m_extruder_heights); const auto state = instance->calc_print_volume_state(build_volume); outside = state == ModelInstancePVS_Partly_Outside; } @@ -4099,7 +4114,7 @@ void PartPlate::on_filament_deleted(int filament_count, int filament_id) /* PartPlate List related functions*/ -PartPlateList::PartPlateList(int width, int depth, int height, Plater* platerObj, Model* modelObj, PrinterTechnology tech) +PartPlateList::PartPlateList(int width, int depth, double height, Plater* platerObj, Model* modelObj, PrinterTechnology tech) :m_plate_width(width), m_plate_depth(depth), m_plate_height(height), m_plater(platerObj), m_model(modelObj), printer_technology(tech), unprintable_plate(this, Vec3d(0.0 + width * (1. + LOGICAL_PART_PLATE_GAP), 0.0, 0.0), width, depth, height, platerObj, modelObj, false, tech) { @@ -4489,26 +4504,16 @@ void PartPlateList::set_default_wipe_tower_pos_for_plate(int plate_idx, bool ini f_volume_maps = wxGetApp().preset_bundle->get_default_nozzle_volume_types_for_filaments(filament_maps); } DynamicPrintConfig full_config = wxGetApp().preset_bundle->full_config(false, filament_maps, f_volume_maps); - float w = dynamic_cast<const ConfigOptionFloat *>(full_config.option("prime_tower_width"))->value; - float v = dynamic_cast<const ConfigOptionFloat *>(full_config.option("prime_volume"))->value; - bool enable_wrapping = false; - const ConfigOptionBool *wrapping_opt = dynamic_cast<const ConfigOptionBool *>(full_config.option("enable_wrapping_detection")); - if (wrapping_opt) enable_wrapping = wrapping_opt->value; - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - Vec3d wipe_tower_size = part_plate->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, init_pos ? 2 : 0, false, enable_wrapping); + WipeTowerFootprint footprint = part_plate->estimate_wipe_tower_footprint(full_config, init_pos ? 2 : 0); - if (!init_pos && (is_approx(wipe_tower_size(0), 0.0) || is_approx(wipe_tower_size(1), 0.0))) { - wipe_tower_size = part_plate->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, 2, false, enable_wrapping); + if (!init_pos && (is_approx(footprint.width, 0.0) || is_approx(footprint.depth, 0.0))) { + footprint = part_plate->estimate_wipe_tower_footprint(full_config, 2); } + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); - // Compute brim-aware margin: brim extends outward from tower position - float brim_width = 0.f; - const ConfigOptionFloat *brim_opt = full_config.option<ConfigOptionFloat>("prime_tower_brim_width"); - if (brim_opt) { - brim_width = brim_opt->value; - if (brim_width < 0) brim_width = WipeTower::get_auto_brim_by_height((float) wipe_tower_size.z()); - } - const float margin = WIPE_TOWER_MARGIN + brim_width; + // Brim-aware margin: the brim extends outward from the tower position. + const float brim_width = float(footprint.brim_width); + const float margin = WIPE_TOWER_AUTO_MARGIN + brim_width; // clamp wipe tower position within plate boundaries { @@ -4544,7 +4549,7 @@ void PartPlateList::set_default_wipe_tower_pos_for_plate(int plate_idx, bool ini } //this may be happened after machine changed -void PartPlateList::reset_size(int width, int depth, int height, bool reload_objects, bool update_shapes) +void PartPlateList::reset_size(int width, int depth, double height, bool reload_objects, bool update_shapes) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(":before size: plate_width %1%, plate_depth %2%, plate_height %3%") % m_plate_width % m_plate_depth % m_plate_height; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(":after size: plate_width %1%, plate_depth %2%, plate_height %3%") % width % depth % height; @@ -6699,7 +6704,7 @@ int PartPlateList::load_gcode_files() //BoundingBoxf3 print_volume = m_plate_list[i]->get_bounding_box(false); //print_volume.max(2) = this->m_plate_height; //print_volume.min(2) = -1e10; - m_model->update_print_volume_state({m_plate_list[i]->get_shape(), (double)this->m_plate_height, m_plate_list[i]->get_extruder_areas(), m_plate_list[i]->get_extruder_heights() }); + m_model->update_print_volume_state({m_plate_list[i]->get_shape(), this->m_plate_height, m_plate_list[i]->get_extruder_areas(), m_plate_list[i]->get_extruder_heights() }); if (!m_plate_list[i]->load_gcode_from_file(m_plate_list[i]->m_gcode_path_from_3mf)) ret ++; diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 5760320b49..6d7eb18beb 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -11,6 +11,7 @@ #include "libslic3r/GCode/GCodeProcessor.hpp" #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/Slicing.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/Arrange.hpp" #include "Plater.hpp" #include "libslic3r/Model.hpp" @@ -96,7 +97,7 @@ private: Vec3d m_origin; int m_width; int m_depth; - int m_height; + double m_height; float m_height_to_lid; float m_height_to_rod; bool m_printable; @@ -227,7 +228,7 @@ public: static void load_render_colors(); PartPlate(); - PartPlate(PartPlateList *partplate_list, Vec3d origin, int width, int depth, int height, Plater* platerObj, Model* modelObj, bool printable=true, PrinterTechnology tech = ptFFF); + PartPlate(PartPlateList *partplate_list, Vec3d origin, int width, int depth, double height, Plater* platerObj, Model* modelObj, bool printable=true, PrinterTechnology tech = ptFFF); ~PartPlate(); bool operator<(PartPlate&) const; @@ -328,7 +329,7 @@ public: Vec3d get_center_origin(); /* size and position related functions*/ //set position and size - void set_pos_and_size(Vec3d& origin, int width, int depth, int height, bool with_instance_move, bool do_clear = true); + void set_pos_and_size(Vec3d& origin, int width, int depth, double height, bool with_instance_move, bool do_clear = true); // BBS Vec2d get_size() const { return Vec2d(m_width, m_depth); } @@ -339,11 +340,16 @@ public: Vec3d get_origin() { return m_origin; } //Vec3d calculate_wipe_tower_size(const DynamicPrintConfig &config, const double w, const double wipe_volume, int plate_extruder_size = 0, bool use_global_objects = false) const; - Vec3d estimate_wipe_tower_size(const DynamicPrintConfig & config, const double w, const double wipe_volume, int extruder_count = 1, int plate_extruder_size = 0, bool use_global_objects = false, bool enable_wrapping_detection = false) const; - arrangement::ArrangePolygon estimate_wipe_tower_polygon(const DynamicPrintConfig & config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int extruder_count = 1, int plate_extruder_size = 0, bool use_global_objects = false) const; + // plate_extruder_size: a floor on the filaments purged on the plate; its own are always + // counted, so 0 sizes for exactly those. + // use_global_objects skips the containment test, which the CLI needs before objects are + // assigned to plates - the layer height is then the project's thinnest, which over-reserves. + WipeTowerFootprint estimate_wipe_tower_footprint(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; + arrangement::ArrangePolygon estimate_wipe_tower_polygon(const DynamicPrintConfig & config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size = 0, bool use_global_objects = false) const; bool check_objects_empty_and_gcode3mf(std::vector<int> &result) const; // get used filaments from config, 1 based idx std::vector<int> get_extruders(bool conside_custom_gcode = false) const; + std::vector<int> get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const; std::vector<int> get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config) const; std::vector<int> get_extruders_without_support(bool conside_custom_gcode = false) const; // get used filaments from gcode result, 1 based idx @@ -366,6 +372,8 @@ public: bool contain_instance_totally(ModelObject* object, int instance_id) const; //judge whether instance is totally included in plate or not bool contain_instance_totally(int obj_id, int instance_id) const; + //judge whether any of the object's instances is totally included in plate or not + bool contain_any_instance_totally(int obj_id) const; //judge whether the plate's origin is at the left of instance or not bool is_left_top_of(int obj_id, int instance_id); @@ -590,7 +598,7 @@ class PartPlateList : public ObjectBase int m_plate_width; int m_plate_depth; - int m_plate_height; + double m_plate_height; float m_height_to_lid; float m_height_to_rod; @@ -675,16 +683,6 @@ public: offset = Vec2d(0, 0); } - TexturePart(const TexturePart& part) { - this->x = part.x; - this->y = part.y; - this->w = part.w; - this->h = part.h; - this->offset = part.offset; - this->buffer = part.buffer; - this->filename = part.filename; - this->texture = part.texture; - } void update_pos(float xx, float yy, float ww, float hh) { x = xx; y = yy; @@ -708,12 +706,12 @@ public: static bool is_load_cali_texture; static bool is_load_extruder_only_area_textures; - PartPlateList(int width, int depth, int height, Plater* platerObj, Model* modelObj, PrinterTechnology tech = ptFFF); + PartPlateList(int width, int depth, double height, Plater* platerObj, Model* modelObj, PrinterTechnology tech = ptFFF); PartPlateList(Plater* platerObj, Model* modelObj, PrinterTechnology tech = ptFFF); ~PartPlateList(); //this may be happened after machine changed - void reset_size(int width, int depth, int height, bool reload_objects = true, bool update_shapes = false); + void reset_size(int width, int depth, double height, bool reload_objects = true, bool update_shapes = false); //clear all the instances in the plate, but keep the plates void clear(bool delete_plates = false, bool release_print_list = false, bool except_locked = false, int plate_index = -1); //clear all the instances in the plate, and delete the plates, only keep the first default plate @@ -727,7 +725,7 @@ public: //get the plate stride double plate_stride_x(); double plate_stride_y(); - void get_plate_size(int& width, int& depth, int& height) { + void get_plate_size(int& width, int& depth, double& height) { width = m_plate_width; depth = m_plate_depth; height = m_plate_height; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2b1a558fe9..a28add0e4d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1,12 +1,10 @@ #include "Plater.hpp" #include "../Utils/NetworkAgent.hpp" -#include "../Utils/NetworkAgentFactory.hpp" #include "libslic3r/Config.hpp" #include "libslic3r_version.h" #include <cstddef> #include <algorithm> -#include <chrono> #include <numeric> #include <limits> #include <optional> @@ -16,8 +14,6 @@ #include <vector> #include <string> #include <regex> -#include <future> -#include <thread> #include <atomic> #include <mutex> #include <boost/algorithm/string.hpp> @@ -69,7 +65,6 @@ #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Model.hpp" -#include "libslic3r/SLA/Hollowing.hpp" #include "libslic3r/SLA/SupportPoint.hpp" #include "libslic3r/SLA/ReprojectPointsOnMesh.hpp" #include "libslic3r/Polygon.hpp" @@ -78,16 +73,15 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/PublishSettings.hpp" #include "slic3r/Utils/CrealityPrint.hpp" #include "libslic3r/ClipperUtils.hpp" -#include "libslic3r/ObjColorUtils.hpp" // For stl export #include "libslic3r/CSGMesh/ModelToCSGMesh.hpp" #include "libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp" #include "GUI.hpp" #include "GUI_App.hpp" -#include "GuiColor.hpp" #include "GUI_ObjectList.hpp" #ifdef __WXGTK__ #include "LinuxDisplayBackend.hpp" @@ -123,7 +117,6 @@ #include "SendMultiMachinePage.hpp" #include "SendToPrinter.hpp" #include "PublishDialog.hpp" -#include "ModelMall.hpp" #include "ConfigWizard.hpp" #include "SyncAmsInfoDialog.hpp" #include "../Utils/ASCIIFolding.hpp" @@ -149,7 +142,6 @@ #include "ParamsDialog.hpp" #include "ImageDPIFrame.hpp" #include "Widgets/Label.hpp" -#include "Widgets/RoundedRectangle.hpp" #include "Widgets/RadioGroup.hpp" #include "Widgets/CheckBox.hpp" #include "Widgets/Button.hpp" @@ -1340,7 +1332,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title if (index >= 0) label_flow->SetMinSize({FromDIP(80), -1}); auto combo_flow = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); combo_flow->GetDropDown().SetUseContentWidth(true); - combo_flow->Bind(wxEVT_COMBOBOX, [this, index, combo_flow](wxCommandEvent &evt) { + combo_flow->Bind(wxEVT_COMBOBOX, [index, combo_flow](wxCommandEvent &evt) { auto printer_tab = dynamic_cast<TabPrinter *>(wxGetApp().get_tab(Preset::TYPE_PRINTER)); NozzleVolumeType volume_type = NozzleVolumeType(intptr_t(combo_flow->GetClientData(evt.GetInt()))); printer_tab->set_extruder_volume_type(index, volume_type); @@ -1400,7 +1392,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title btn_up = new ScalableButton(this, wxID_ANY, "page_up", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 14); btn_up->SetBackgroundColour(*wxWHITE); - btn_up->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) { + btn_up->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &evt) { if (page_cur > 0) --page_cur; update_ams(); @@ -1408,7 +1400,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title btn_up->Hide(); btn_down = new ScalableButton(this, wxID_ANY, "page_down", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 14); btn_down->SetBackgroundColour(*wxWHITE); - btn_down->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) { + btn_down->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &evt) { if (page_cur + 1 < page_num) ++page_cur; update_ams(); @@ -2025,7 +2017,7 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material, bool is_man if (!this->plater) return false; - this->plater->update_objects_position_when_select_preset([&obj, machine_preset]() { + this->plater->update_objects_position_when_select_preset([machine_preset]() { Tab *printer_tab = GUI::wxGetApp().get_tab(Preset::Type::TYPE_PRINTER); printer_tab->select_preset(machine_preset->name); }); @@ -2170,7 +2162,7 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material, bool is_man void Sidebar::priv::update_sync_status(const MachineObject *obj) { StateColor not_synced_colour(std::pair<wxColour, int>(wxColour("#009688"), StateColor::Normal)); - auto clear_all_sync_status = [this, ¬_synced_colour]() { + auto clear_all_sync_status = [this]() { panel_printer_preset->ShowBadge(false); panel_printer_bed->ShowBadge(false); panel_nozzle_dia->ShowBadge(false); // ORCA add support for nozzle sync @@ -2474,7 +2466,7 @@ Sidebar::Sidebar(Plater *parent) p->m_printer_icon = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer"); p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END); - p->m_printer_icon->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + p->m_printer_icon->Bind(wxEVT_BUTTON, [](wxCommandEvent& e) { //auto wizard_t = new ConfigWizard(wxGetApp().mainframe); //wizard_t->run(ConfigWizard::RR_USER, ConfigWizard::SP_CUSTOM); }); @@ -2495,7 +2487,7 @@ Sidebar::Sidebar(Plater *parent) }); p->m_printer_setting = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "settings"); - p->m_printer_setting->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { + p->m_printer_setting->Bind(wxEVT_BUTTON, [](wxCommandEvent &e) { // p->editing_filament = -1; // wxGetApp().params_dialog()->Popup(); // wxGetApp().get_tab(Preset::TYPE_FILAMENT)->restore_last_select_item(); @@ -2610,8 +2602,8 @@ Sidebar::Sidebar(Plater *parent) p->image_printer->SetBackgroundColour(bg_color); p->combo_printer->SetBackgroundColour(bg_color); // paints margins instead combo background }; - p->combo_printer->Bind(wxEVT_SET_FOCUS, [this, printer_focus_bg](auto& e) {printer_focus_bg(true ); e.Skip();}); - p->combo_printer->Bind(wxEVT_KILL_FOCUS, [this, printer_focus_bg](auto& e) {printer_focus_bg(false); e.Skip();}); + p->combo_printer->Bind(wxEVT_SET_FOCUS, [printer_focus_bg](auto& e) {printer_focus_bg(true ); e.Skip();}); + p->combo_printer->Bind(wxEVT_KILL_FOCUS, [printer_focus_bg](auto& e) {printer_focus_bg(false); e.Skip();}); /* ORCA This part moved to titlebar p->btn_connect_printer = new ScalableButton(p->panel_printer_preset, wxID_ANY, "monitor_signal_strong"); @@ -2688,8 +2680,8 @@ Sidebar::Sidebar(Plater *parent) p->label_nozzle_type->SetBackgroundColour(bg_color); p->combo_nozzle_dia->SetBackgroundColour(bg_color); // paints margins instead combo background }; - p->combo_nozzle_dia->Bind(wxEVT_SET_FOCUS, [this, nozzle_focus_bg](auto& e) {nozzle_focus_bg(true ); e.Skip();}); - p->combo_nozzle_dia->Bind(wxEVT_KILL_FOCUS, [this, nozzle_focus_bg](auto& e) {nozzle_focus_bg(false); e.Skip();}); + p->combo_nozzle_dia->Bind(wxEVT_SET_FOCUS, [nozzle_focus_bg](auto& e) {nozzle_focus_bg(true ); e.Skip();}); + p->combo_nozzle_dia->Bind(wxEVT_KILL_FOCUS, [nozzle_focus_bg](auto& e) {nozzle_focus_bg(false); e.Skip();}); p->label_nozzle_type = new Label(p->panel_nozzle_dia, "Brass", LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END | wxALIGN_CENTRE_HORIZONTAL); p->label_nozzle_type->SetFont(Label::Body_10); @@ -2763,8 +2755,8 @@ Sidebar::Sidebar(Plater *parent) p->image_printer_bed->SetBackgroundColour(bg_color); p->combo_printer_bed->SetBackgroundColour(bg_color); // paints margins instead combo background }; - p->combo_printer_bed->Bind(wxEVT_SET_FOCUS, [this, bed_focus_bg](auto& e) {bed_focus_bg(true ); e.Skip();}); - p->combo_printer_bed->Bind(wxEVT_KILL_FOCUS, [this, bed_focus_bg](auto& e) {bed_focus_bg(false); e.Skip();}); + p->combo_printer_bed->Bind(wxEVT_SET_FOCUS, [bed_focus_bg](auto& e) {bed_focus_bg(true ); e.Skip();}); + p->combo_printer_bed->Bind(wxEVT_KILL_FOCUS, [bed_focus_bg](auto& e) {bed_focus_bg(false); e.Skip();}); // highlight border on hover auto printer_bed_hovered = std::make_shared<std::unordered_set<wxWindow*>>(); @@ -2978,7 +2970,7 @@ Sidebar::Sidebar(Plater *parent) ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); add_btn->SetToolTip(_L("Add one filament")); - add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e){ + add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e){ add_filament(); update_filaments_counter(); }); @@ -2988,7 +2980,7 @@ Sidebar::Sidebar(Plater *parent) ScalableButton* del_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "delete_filament"); del_btn->SetToolTip(_L("Remove last filament")); - del_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) { + del_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { delete_filament(); update_filaments_counter(); }); @@ -3002,7 +2994,7 @@ Sidebar::Sidebar(Plater *parent) ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 16); // ORCA match icon size with other icons as 16x16 ams_btn->SetToolTip(_L("Synchronize filament list from AMS")); - ams_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) { + ams_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { sync_ams_list(); }); @@ -3667,8 +3659,8 @@ void Sidebar::update_presets(Preset::Type preset_type) // so extruders without an explicit sub-nozzle count never offer Hybrid. A nullable-int // nil is INT_MAX (> 1) and would otherwise falsely pass the gate, so exclude it too. if (boost::algorithm::contains(extruder_variants->values[index], type + " " + nozzle_volumes_def->enum_labels[i]) || - extruder_max_nozzle_count->get_at(index) > 1 && extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && - nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid) { + (extruder_max_nozzle_count->get_at(index) > 1 && extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && + nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid)) { if (nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == NozzleVolumeType::nvtHighFlow &&(diameter == "0.2" || is_skip_high_flow_printer(printer_model))) continue; @@ -3682,7 +3674,7 @@ void Sidebar::update_presets(Preset::Type preset_type) extruder.combo_flow->SetSelection(select); }; - auto update_extruder_diameter = [&diameters, &diameter, &nozzle_diameter](int extruder_index,ExtruderGroup & extruder) { + auto update_extruder_diameter = [&diameters, &nozzle_diameter](int extruder_index,ExtruderGroup & extruder) { extruder.combo_diameter->Clear(); int select = -1; // ORCA get the actual nozzle diameter from printer config @@ -3988,16 +3980,16 @@ void Sidebar::update_mixed_filament_list() p->m_panel_mixed_warning->Show(false); // Show/dismiss 3D canvas notification for broken mixed filaments - if (has_mixed && !broken_set.empty()) { - auto* notify = wxGetApp().plater()->get_notification_manager(); - if (notify) + auto* notify = plater->get_notification_manager(); + GLCanvas3D* view3d_canvas = plater->get_view3D_canvas3D(); + if(view3d_canvas && view3d_canvas->is_initialized() && notify){ + if (has_mixed && !broken_set.empty()) { notify->push_notification(NotificationType::BBLMixedFilamentBroken, NotificationManager::NotificationLevel::ErrorNotificationLevel, _u8L("Mixed filament has invalid or mismatched components. Please re-edit affected entries.")); - } else { - auto* notify = wxGetApp().plater()->get_notification_manager(); - if (notify) + } else { notify->close_notification_of_type(NotificationType::BBLMixedFilamentBroken); + } } if (has_mixed) { @@ -6712,6 +6704,12 @@ struct Plater::priv SendToPrinterDialog* m_send_to_sdcard_dlg = nullptr; PublishDialog *m_publish_dlg = nullptr; + // Session-level stash of the last published selection. Written on publish and on + // loading a published 3MF; read when the Publish dialog is opened. + bool m_has_pending_published{false}; + std::vector<std::string> m_pending_published_keys; + std::vector<Slic3r::PublishedMaterialEntry> m_pending_material_keys; + // Data Slic3r::DynamicPrintConfig *config; // FIXME: leak? Slic3r::Print fff_print; @@ -6936,7 +6934,10 @@ struct Plater::priv // BBS: backup & restore using LoadProgressCallback = std::function<bool(int, const wxString&)>; - std::vector<size_t> load_files(const std::vector<fs::path>& input_files, LoadStrategy strategy, bool ask_multi = false); + std::vector<size_t> load_files(const std::vector<fs::path>& input_files, + LoadStrategy strategy, + bool ask_multi = false, + bool* published_out = nullptr); std::vector<size_t> load_model_objects(const ModelObjectPtrs& model_objects, bool allow_negative_z = false, bool split_object = false, bool auto_drop = true); // Texture-to-color import: a mesh loaded with UVs + a texture map gets its faces clustered @@ -6964,7 +6965,7 @@ struct Plater::priv std::function<bool()> cancel_callback = {}); fs::path get_export_file_path(GUI::FileType file_type); - wxString get_export_file(GUI::FileType file_type); + wxString get_export_file(GUI::FileType file_type, const wxString& title = {}, bool published = false); // BBS void load_auxiliary_files(); @@ -7497,7 +7498,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // Keep tracking the current sidebar size, by storing it using `best_size`, which will be stored // in the config and re-applied when the app is opened again. - this->sidebar->Bind(wxEVT_IDLE, [&sidebar, this](wxIdleEvent& e) { + this->sidebar->Bind(wxEVT_IDLE, [&sidebar](wxIdleEvent& e) { if (sidebar.IsShown() && sidebar.IsDocked() && sidebar.rect.GetWidth() > 0) { sidebar.BestSize(sidebar.rect.GetWidth(), sidebar.best_size.GetHeight()); } @@ -7796,8 +7797,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGetApp().removable_drive_manager()->init(this->q); #ifdef _WIN32 //Trigger enumeration of removable media on Win32 notification. - this->q->Bind(EVT_VOLUME_ATTACHED, [this](VolumeAttachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); - this->q->Bind(EVT_VOLUME_DETACHED, [this](VolumeDetachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); + this->q->Bind(EVT_VOLUME_ATTACHED, [](VolumeAttachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); + this->q->Bind(EVT_VOLUME_DETACHED, [](VolumeDetachedEvent &evt) { wxGetApp().removable_drive_manager()->volumes_changed(); }); #endif /* _WIN32 */ } @@ -8272,13 +8273,17 @@ void read_binary_stl(const std::string& filename, std::string& model_id, std::st } // BBS: backup & restore -std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_files, LoadStrategy strategy, bool ask_multi) +std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_files, + LoadStrategy strategy, + bool ask_multi, + bool* published_out) { std::vector<size_t> empty_result; bool dlg_cont = true; bool is_user_cancel = false; bool translate_old = false; - int current_width = 0, current_depth = 0, current_height = 0, project_filament_count = 1; + int current_width = 0, current_depth = 0, project_filament_count = 1; + double current_height = 0; if (input_files.empty()) return std::vector<size_t>(); @@ -8351,10 +8356,10 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ const float INPUT_FILES_RATIO = 0.7; const float INIT_MODEL_RATIO = 0.75; const float CENTER_AROUND_ORIGIN_RATIO = 0.8; + const float LOAD_MODEL_RATIO = 0.9; for (size_t i = 0; i < input_files.size(); ++i) { - int file_percent = 0; #ifdef _WIN32 auto path = input_files[i]; @@ -8392,6 +8397,11 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ DynamicPrintConfig config; Semver file_version; En3mfType en_3mf_file_type = En3mfType::From_BBS; + // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; + // on load keep the user's current presets and overlay only those keys. Declared + // here (outside the config block below) so it stays alive for the embedded-preset + // gate, the metadata strip and the preset overlay after the block closes. + PublishedConfig published_config; { DynamicPrintConfig config_loaded; @@ -8403,7 +8413,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ q->skip_thumbnail_invalid = true; model = Slic3r::Model::read_from_archive(path.string(), &config_loaded, &config_substitutions, en_3mf_file_type, strategy, &plate_data, &project_presets, &file_version, - [this, &dlg, real_filename, &progress_percent, &file_percent, stage_percent, INPUT_FILES_RATIO, total_files, i, + [&dlg, real_filename, &progress_percent, stage_percent, INPUT_FILES_RATIO, total_files, i, &is_user_cancel](int import_stage, int current, int total, bool &cancel) { bool cont = true; float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)stage_percent[import_stage] + (float)current * (float)(stage_percent[import_stage + 1] - stage_percent[import_stage]) /(float) total) / (float)total_files; @@ -8419,6 +8429,107 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_or_orca_3mf %3%, file_version %4% \n") % plate_data.size() % project_presets.size() % (en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) % file_version.to_string(); + // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; + // on load keep the user's current presets and overlay only those keys. Parsed + // here (before the version/fallback chain below) because a published file has + // no project_settings.config: its values travel in the published_config + // metadata payload, which must fill config_loaded before the chain decides + // whether to import geometry only. + if (model.model_info != nullptr) { + auto published_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_TAG); + if (published_it != model.model_info->metadata_items.end() && is_published_3mf_flag(published_it->second)) { + published_config.published = true; + auto keys_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_KEYS_TAG); + if (keys_it != model.model_info->metadata_items.end()) { + try { + auto j = nlohmann::json::parse(keys_it->second); + if (j.is_array()) + for (const auto& k : j) + if (k.is_string()) + published_config.published_keys.emplace_back(k.get<std::string>()); + } catch (...) { + // Ignore malformed published_keys; the project still loads normally. + } + } + + auto material_keys_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_MATERIAL_TAG); + if (material_keys_it != model.model_info->metadata_items.end()) { + try { + auto jm = nlohmann::json::parse(material_keys_it->second); + if (jm.is_array()) + for (const auto& m : jm) { + try { + // Malformed entries are isolated so one bad item + // cannot discard valid entries that follow it. + if (!m.is_object()) + continue; + PublishedMaterialEntry entry; + const auto mat_it = m.find("material"); + if (mat_it != m.end() && mat_it->is_object()) { + const auto& mat = *mat_it; + if (mat.contains("filament_type") && mat["filament_type"].is_string()) + entry.filament_type = mat["filament_type"].get<std::string>(); + if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) + entry.filament_vendor = mat["filament_vendor"].get<std::string>(); + if (mat.contains("filament_id") && mat["filament_id"].is_string()) + entry.filament_id = mat["filament_id"].get<std::string>(); + if (mat.contains("setting_id") && mat["setting_id"].is_string()) + entry.setting_id = mat["setting_id"].get<std::string>(); + if (mat.contains("name") && mat["name"].is_string()) + entry.preset_name = mat["name"].get<std::string>(); + } + if (m.contains("slot") && m["slot"].is_number_integer()) + entry.slot = m["slot"].get<int>(); + const auto entry_keys_it = m.find("keys"); + if (entry_keys_it != m.end() && entry_keys_it->is_array()) + for (const auto& k : *entry_keys_it) + if (k.is_string()) + entry.keys.emplace_back(k.get<std::string>()); + // Fields always written by the current exporter. + if (m.contains("full") && m["full"].is_boolean()) + entry.full = m["full"].get<bool>(); + const auto entry_full_keys_it = m.find("full_keys"); + if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) + for (const auto& k : *entry_full_keys_it) + if (k.is_string()) + entry.full_keys.emplace_back(k.get<std::string>()); + if (m.contains("publish_type") && m["publish_type"].is_boolean()) + entry.publish_type = m["publish_type"].get<bool>(); + if (m.contains("type") && m["type"].is_string()) + entry.publish_type_value = m["type"].get<std::string>(); + if (m.contains("publish_color") && m["publish_color"].is_boolean()) + entry.publish_color = m["publish_color"].get<bool>(); + if (m.contains("color") && m["color"].is_string()) + entry.color = m["color"].get<std::string>(); + published_config.material_keys.emplace_back(std::move(entry)); + } catch (const nlohmann::json::exception&) { + // Ignore only this malformed material entry. + } + } + } catch (const nlohmann::json::exception&) { + // Ignore malformed published_material_keys; the project still loads normally. + } + } + + // Rebuild the published values from the metadata payload: a published + // file carries no project_settings.config, so config_loaded is filled + // from here; a missing or malformed payload leaves it empty and the + // fallback chain below imports the geometry only. + auto payload_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_CONFIG_TAG); + if (payload_it != model.model_info->metadata_items.end()) { + try { + ConfigSubstitutions payload_substitutions = + config_loaded.load_from_ini_string(payload_it->second, ForwardCompatibilitySubstitutionRule::Enable); + config_substitutions.substitutions.insert(config_substitutions.substitutions.end(), + std::make_move_iterator(payload_substitutions.begin()), + std::make_move_iterator(payload_substitutions.end())); + } catch (...) { + // Ignore malformed published_config; the project still loads normally. + } + } + } + } + // 1. add extruder for prusa model if the number of existing extruders is not enough // 2. add extruder for BBS or Other model if only import geometry if (en_3mf_file_type == En3mfType::From_Prusa || (load_model && !load_config)) { @@ -8582,7 +8693,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ text += "\n"; log_and_show_3mf_info(text, bambu_project_title); } - } else if (load_config) { + } else if (load_config && !published_config.published) { // BambuStudio version is older or same as our SLIC3R_VERSION wxString text = _L("The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer."); log_and_show_3mf_info(text, bambu_project_title); @@ -8642,7 +8753,9 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } Semver old_version(1, 5, 9); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && (file_version < old_version) && load_model && load_config && !config_loaded.empty()) { + // A published 3MF has no project config to migrate: skip the old-version + // translations even if a slicer tag slipped through classification. + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && (file_version < old_version) && !published_config.published && load_model && load_config && !config_loaded.empty()) { translate_old = true; partplate_list.get_plate_size(current_width, current_depth, current_height); } @@ -8664,8 +8777,10 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } } - // BBS:: project embedded presets - if ((project_presets.size() > 0) && load_config) { + // BBS:: project embedded presets (skipped for published projects: the author's + // embedded presets must not pollute the receiver's library, the overlay applies + // the published keys to the receiver's own presets instead). + if ((project_presets.size() > 0) && load_config && !published_config.published) { // load project embedded presets PresetsConfigSubstitutions preset_substitutions; PresetBundle & preset_bundle = *wxGetApp().preset_bundle; @@ -8721,6 +8836,19 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } } + // BBS: a "published" 3MF loads as a new project: its path must not become the + // project filename (Save/Ctrl-S would overwrite the shared file), and the + // published metadata is consumed above and stripped so a later save is a normal + // unpublished 3MF. + if (published_out != nullptr && published_config.published) + *published_out = true; + if (published_config.published && load_config && this->model.model_info != nullptr) { + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_KEYS_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_MATERIAL_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_CONFIG_TAG); + } + if (load_config) { if (!config.empty()) { Preset::normalize(config); @@ -8729,7 +8857,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ { // BBS: modify the prime tower params for old version file Semver old_version3(2, 0, 0); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && file_version < old_version3) { + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && !published_config.published && file_version < old_version3) { double old_filament_prime_volume = 0.; int filament_count = 0; { @@ -8779,7 +8907,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } auto choise = wxGetApp().app_config->get("no_warn_when_modified_gcodes"); - if (choise.empty() || choise != "true") { + if (!published_config.published && (choise.empty() || choise != "true")) { // BBS: first validate the printer // validate the system profiles std::set<std::string> modified_gcodes; @@ -8824,7 +8952,56 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ if (wipe_tower_y_opt) file_wipe_tower_y = *wipe_tower_y_opt; - preset_bundle->load_config_model(filename.string(), std::move(config), file_version); + // Convert the printer's filament ids to Orca ids before loading. + if (auto* agent = wxGetApp().getAgent()) { + if (auto* ids = config.opt<ConfigOptionStrings>("filament_ids")) + for (std::string& id : ids->values) + id = agent->to_orca_filament_id(id); + } + preset_bundle->load_config_model(filename.string(), std::move(config), file_version, &published_config); + + // Mixed-filament definitions that collided with one of the + // receiver's real slots were relocated during the preset load. + // Re-point the freshly parsed model's extruder references and + // color painting from the author's slot numbers to where each + // definition landed, so volumes colored with a mix follow it. + // Runs before the objects are handed over to the plater below. + if (load_model && !published_config.mixed_slot_relocations.empty()) + Slic3r::remap_model_filament_slots(model, published_config.mixed_slot_relocations); + + // BBS: notify the user about published settings that could not be applied. + if (!published_config.skipped_keys.empty()) { + NotificationManager* notify_manager = q->get_notification_manager(); + std::string message = _u8L("Some published settings could not be applied:"); + for (const std::string& key : published_config.skipped_keys) + message += "\n-" + key; + // Informational: the load succeeded, these keys were skipped. + notify_manager + ->bbl_show_3mf_warn_notification(message, + NotificationManager::NotificationLevel::WarningNotificationLevel); + } + + // BBS: notify the user about slot materials that were replaced while + // loading a published project (type mismatch / no same-type match). + if (!published_config.material_replacements.empty()) { + NotificationManager* notify_manager = q->get_notification_manager(); + std::string message = _u8L("Some filament slots were changed:"); + for (const std::string& replacement : published_config.material_replacements) + message += "\n-" + replacement; + // Informational: the load succeeded, the slots were adapted. + notify_manager + ->bbl_show_3mf_warn_notification(message, + NotificationManager::NotificationLevel::WarningNotificationLevel); + } + + // Remember the imported published selection so the Publish dialog is + // pre-seeded with the file's settings. Stored after the load so any + // per-slot relocations are already reflected in material_keys. + if (published_config.published) { + this->m_has_pending_published = true; + this->m_pending_published_keys = published_config.published_keys; + this->m_pending_material_keys = published_config.material_keys; + } ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); if (bed_type_opt != nullptr) { @@ -8965,7 +9142,13 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ dynamic_map->value = false; } // Update filament combobox after loading config - wxGetApp().plater()->sidebar().update_presets(Preset::TYPE_FILAMENT); + if (published_config.published) { + q->update_filament_colors_in_full_config(); + wxGetApp().plater()->sidebar().update_all_preset_comboboxes(); + wxGetApp().plater()->sidebar().update_dynamic_filament_list(); + } else { + wxGetApp().plater()->sidebar().update_presets(Preset::TYPE_FILAMENT); + } // The loaded project supplies nozzle_volume_type; refresh the sidebar // nozzle-count badges against it. if (auto *nozzle_volumes = wxGetApp().preset_bundle->project_config.option<ConfigOptionEnumsGeneric>("nozzle_volume_type")) { @@ -8986,7 +9169,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ Semver file_version; //ObjImportColorFn obj_color_fun=nullptr; - auto obj_color_fun = [this, &path](ObjDialogInOut &in_out) { + auto obj_color_fun = [&path](ObjDialogInOut &in_out) { if (!boost::iends_with(path.string(), ".obj")) { return; } const std::vector<std::string> extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); @@ -9003,7 +9186,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ if (angle <= 0) angle = 0.5; bool split_compound = wxGetApp().app_config->get_bool("is_split_compound"); model = Slic3r::Model:: read_from_step(path.string(), strategy, - [this, &dlg, real_filename, &progress_percent, &file_percent, step_percent, INPUT_FILES_RATIO, total_files, i](int load_stage, int current, int total, bool &cancel) + [&dlg, real_filename, &progress_percent, step_percent, INPUT_FILES_RATIO, total_files, i](int load_stage, int current, int total, bool &cancel) { bool cont = true; float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)step_percent[load_stage] + (float)current * (float)(step_percent[load_stage + 1] - step_percent[load_stage]) / (float)total) / (float)total_files; @@ -9017,7 +9200,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ if (!isUtf8StepFile) { const auto no_warn = wxGetApp().app_config->get_bool("step_not_utf8_no_warn"); if (!no_warn) { - MessageDialog dlg(nullptr, _L("Component name(s) inside step file not in UTF8 format!") + "\n\n" + _L("Because of unsupported text encoding, garbage characters may appear!"), + MessageDialog dlg(nullptr, _L("Component name(s) inside step file not in UTF-8 format!") + "\n\n" + _L("Because of unsupported text encoding, garbage characters may appear!"), wxString(SLIC3R_APP_FULL_NAME " - ") + _L("Attention!"), wxOK | wxICON_INFORMATION); dlg.show_dsa_button(_L("Remember my choice.")); dlg.ShowModal(); @@ -9027,7 +9210,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } } }, - [this, &path, &is_user_cancel, &linear, &angle, &split_compound](Slic3r::Step& file, double& linear_value, double& angle_value, bool& is_split)-> int { + [&is_user_cancel, &linear, &angle, &split_compound](Slic3r::Step& file, double& linear_value, double& angle_value, bool& is_split)-> int { if (wxGetApp().app_config->get_bool("enable_step_mesh_setting")) { StepMeshDialog mesh_dlg(nullptr, file, linear, angle); if (mesh_dlg.ShowModal() == wxID_OK) { @@ -9048,7 +9231,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ }else { model = Slic3r::Model:: read_from_file( path.string(), nullptr, nullptr, strategy, &plate_data, &project_presets, &is_xxx, &file_version, nullptr, - [this, &dlg, real_filename, &progress_percent, &file_percent, INPUT_FILES_RATIO, total_files, i, &designer_model_id, &designer_country_code](int current, int total, bool &cancel, std::string &mode_id, std::string &code) + [&dlg, real_filename, &progress_percent, INPUT_FILES_RATIO, total_files, i, &designer_model_id, &designer_country_code](int current, int total, bool &cancel, std::string &mode_id, std::string &code) { designer_model_id = mode_id; designer_country_code = code; @@ -9130,7 +9313,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ else if (model.looks_like_saved_in_meters()) { // BBS do not handle look like in meters MessageDialog dlg(q, - format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\n Do you want to scale to millimeters\?"), + format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\nDo you want to scale to millimeters\?"), from_path(filename)), _L("Object too small"), wxICON_QUESTION | wxYES_NO); int answer = dlg.ShowModal(); @@ -9138,7 +9321,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_ } else if (model.looks_like_imperial_units()) { // BBS do not handle look like in meters MessageDialog dlg(q, - format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\n Do you want to scale to millimeters\?"), + format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\nDo you want to scale to millimeters\?"), from_path(filename)), _L("Object too small"), wxICON_QUESTION | wxYES_NO); int answer = dlg.ShowModal(); @@ -9718,7 +9901,7 @@ fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) return output_file; } -wxString Plater::priv::get_export_file(GUI::FileType file_type) +wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& title, bool published) { wxString wildcard; switch (file_type) { @@ -9760,8 +9943,11 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type) } case FT_3MF: { - output_file.replace_extension("3mf"); - dlg_title = _L("Save file as"); + // A published export is suggested as "<name>.published.3mf" so the role is visible in the + // dialog and in the recent-files list. This is only a pre-filled suggestion; the user's + // typed filename wins, keeping a plain ".3mf" output fully valid. + output_file.replace_extension(published ? "published.3mf" : "3mf"); + dlg_title = title.empty() ? _L("Save file as") : title; break; } case FT_OBJ: @@ -9999,6 +10185,11 @@ void Plater::priv::reset(bool apply_presets_change) clear_warnings(); + // A new project must not inherit the previous project's published selection (Feature A/B). + m_has_pending_published = false; + m_pending_published_keys.clear(); + m_pending_material_keys.clear(); + set_project_filename(""); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: empty"; @@ -11294,7 +11485,7 @@ void Plater::priv::reload_from_disk() // load one file at a time for (size_t i = 0; i < input_paths.size(); ++i) { const auto& path = input_paths[i].string(); - auto obj_color_fun = [this, &path](ObjDialogInOut &in_out) { + auto obj_color_fun = [&path](ObjDialogInOut &in_out) { if (!boost::iends_with(path, ".obj")) { return; } const std::vector<std::string> extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); ObjColorDialog color_dlg(nullptr, in_out, extruder_colours, Sidebar::should_show_SEMM_buttons()); @@ -15099,14 +15290,15 @@ void Plater::load_project(wxString const& filename2, if (strategy & LoadStrategy::Restore) input_paths.push_back(into_u8(originfile)); - std::vector<size_t> res = load_files(input_paths, strategy); + bool loaded_published = false; + std::vector<size_t> res = load_files(input_paths, strategy, false, &loaded_published); reset_project_dirty_initial_presets(); update_project_dirty_from_presets(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); // if res is empty no data has been loaded - if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) { + if (!res.empty() && !loaded_published && (load_restore || !(strategy & LoadStrategy::Silence))) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { @@ -15117,6 +15309,15 @@ void Plater::load_project(wxString const& filename2, if (using_exported_file()) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " using ecported set project filename: " << filename; p->set_project_filename(filename); + } else if (loaded_published && !res.empty()) { + // A "published" 3MF loads as a new project: its path must not become the project + // filename (Save/Ctrl-S prompts for a destination instead of overwriting it); + // reset() already cleared the project name, so restore the default title and keep + // the file in recents. Only on a successful load (res not empty): a failed or + // cancelled load must not pollute "Recently opened". + p->set_project_name(_L("Untitled")); + if (!filename.IsEmpty()) + wxGetApp().mainframe->add_to_recent_projects(filename); } } @@ -15265,7 +15466,7 @@ void Plater::import_model_id(wxString download_info) p->project.reset(); /* prepare project and profile */ - boost::thread import_thread = Slic3r::create_thread([&percent, &cont, &cancel, &retry_count, max_retries, &msg, &target_path, &download_ok, download_url, &filename] { + boost::thread import_thread = Slic3r::create_thread([&percent, &cont, &retry_count, &msg, &target_path, &download_ok, download_url, &filename] { // Orca: NetworkAgent is not needed and only prevents this from running // NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); @@ -15372,7 +15573,7 @@ void Plater::import_model_id(wxString download_info) msg = wxString::Format(_L("Project downloaded %d%%"), percent); } }) - .on_error([&msg, &cont, &retry_count, max_retries](std::string body, std::string error, unsigned http_status) { + .on_error([&msg, &cont, &retry_count](std::string body, std::string error, unsigned http_status) { (void)body; BOOST_LOG_TRIVIAL(error) << format("Error getting: `%1%`: HTTP %2%, %3%", body, @@ -16268,6 +16469,7 @@ void Plater::calib_retraction(const Calib_Params& params) obj->config.set_key_value("wall_sequence", new ConfigOptionEnum<WallSequence>(WallSequence::InnerOuter)); obj->config.set_key_value("overhang_reverse", new ConfigOptionBool(false)); obj->config.set_key_value("precise_z_height", new ConfigOptionBool(false)); + obj->config.set_key_value("seam_slope_type", new ConfigOptionEnum<SeamScarfType>(SeamScarfType::None)); changed_objects({ 0 }); @@ -16773,22 +16975,12 @@ void Plater::force_update_all_plate_thumbnails() } // BBS: backup -std::vector<size_t> Plater::load_files(const std::vector<fs::path>& input_files, LoadStrategy strategy, bool ask_multi) { +std::vector<size_t> Plater::load_files(const std::vector<fs::path>& input_files, LoadStrategy strategy, bool ask_multi, bool* published_out) { //BBS: wish to reset state when load a new file p->m_slice_all_only_has_gcode = false; //BBS: wish to reset all plates stats item selected state when load a new file p->preview->get_canvas3d()->reset_select_plate_toolbar_selection(); - return p->load_files(input_files, strategy, ask_multi); -} - -// To be called when providing a list of files to the GUI slic3r on command line. -std::vector<size_t> Plater::load_files(const std::vector<std::string>& input_files, LoadStrategy strategy, bool ask_multi) -{ - std::vector<fs::path> paths; - paths.reserve(input_files.size()); - for (const std::string& path : input_files) - paths.emplace_back(path); - return p->load_files(paths, strategy, ask_multi); + return p->load_files(input_files, strategy, ask_multi, published_out); } bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) @@ -18017,7 +18209,6 @@ void Plater::send_gcode_finish(wxString name) auto out_str = GUI::format(_L("The file %s has been sent to the printer's storage space and can be viewed on the printer."), name); p->notification_manager->push_exporting_finished_notification(out_str, "", false); } - void Plater::export_core_3mf() { wxString path = p->get_export_file(FT_3MF); @@ -18026,6 +18217,182 @@ void Plater::export_core_3mf() export_3mf(path_u8, SaveStrategy::Silence); } +// Export the current project as a "published" 3MF: a pure export that never touches the +// project's file name, dirty state, backup path or title, and attaches the published metadata +// to the model only for the duration of the export (a later Save Project is a normal 3MF). +int Plater::export_published_3mf(const std::vector<std::string>& published_keys, + const std::vector<Slic3r::PublishedMaterialEntry>& material_keys) +{ + wxString path = p->get_export_file(FT_3MF, _L("Publish 3MF file as:"), true); + if (path.empty() || path == "<cancel>") + return wxID_CANCEL; + + nlohmann::json j = nlohmann::json::array(); + for (const std::string& key : published_keys) + j.push_back(key); + nlohmann::json jm = nlohmann::json::array(); + for (const Slic3r::PublishedMaterialEntry& e : material_keys) + jm.push_back({{"material", + {{"filament_type", e.filament_type}, + {"filament_vendor", e.filament_vendor}, + {"filament_id", e.filament_id}, + {"setting_id", e.setting_id}, + {"name", e.preset_name}}}, + {"slot", e.slot}, + {"keys", e.keys}, + {"full", e.full}, + {"full_keys", e.full_keys}, + {"publish_type", e.publish_type}, + {"type", e.publish_type_value}, + {"publish_color", e.publish_color}, + {"color", e.color}}); + + Model& model = this->model(); + // Save the previous metadata so it can be restored after the export, keeping the in-memory + // project pristine (the published flag lives only in the exported file). + const bool had_model_info = (model.model_info != nullptr); + const bool had_published = had_model_info && + (model.model_info->metadata_items.find(ORCA_PUBLISHED_TAG) != model.model_info->metadata_items.end()); + const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_KEYS_TAG) != + model.model_info->metadata_items.end()); + const bool had_material_keys = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_MATERIAL_TAG) != + model.model_info->metadata_items.end()); + const bool had_payload = had_model_info && + (model.model_info->metadata_items.find(ORCA_PUBLISHED_CONFIG_TAG) != model.model_info->metadata_items.end()); + const std::string prev_published = had_published ? model.model_info->metadata_items.at(ORCA_PUBLISHED_TAG) : std::string(); + const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_KEYS_TAG) : + std::string(); + const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_MATERIAL_TAG) : + std::string(); + const std::string prev_payload = had_payload ? model.model_info->metadata_items.at(ORCA_PUBLISHED_CONFIG_TAG) : std::string(); + + // export_3mf() assigns archive paths to previously unsaved SVGs. Preserve those fields too, + // otherwise a publish changes what a later normal project save writes. + std::vector<std::pair<std::string*, std::string>> previous_svg_paths; + for (ModelObject* object : model.objects) + for (ModelVolume* volume : object->volumes) + if (volume != nullptr && volume->emboss_shape.has_value() && volume->emboss_shape->svg_file.has_value()) { + std::string* path_in_3mf = &volume->emboss_shape->svg_file->path_in_3mf; + previous_svg_paths.emplace_back(path_in_3mf, *path_in_3mf); + } + + auto restore_temporary_state = [&]() { + for (const auto& [path_in_3mf, previous_path] : previous_svg_paths) + *path_in_3mf = previous_path; + + if (!had_model_info) { + model.model_info = nullptr; + } else { + if (had_published) + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = prev_published; + else + model.model_info->metadata_items.erase(ORCA_PUBLISHED_TAG); + if (had_published_keys) + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = prev_published_keys; + else + model.model_info->metadata_items.erase(ORCA_PUBLISHED_KEYS_TAG); + if (had_material_keys) + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = prev_material_keys; + else + model.model_info->metadata_items.erase(ORCA_PUBLISHED_MATERIAL_TAG); + if (had_payload) + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = prev_payload; + else + model.model_info->metadata_items.erase(ORCA_PUBLISHED_CONFIG_TAG); + } + }; + bool state_restored = false; + auto restore_now = [&]() { + if (state_restored) + return; + restore_temporary_state(); + state_restored = true; + }; + ScopeGuard restore_guard(restore_now); + + if (model.model_info == nullptr) + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = j.dump(); + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = jm.dump(); + + int ret = -1; + try { + // Minimal published export: filter full_config to the published keys, material keys, + // identity fields and plate geometry keys, and omit the project config file, the + // project-embedded preset dumps and the OrcaSlicer version tag from the archive. The + // filtered values are serialized into the published_config metadata payload instead, so + // OrcaSlicer versions without the publish feature fall back to importing the geometry only + // (keeping the receiver's presets) while new versions rebuild the config from the payload. + DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + std::string payload; + for (const std::string& key : filtered_cfg.keys()) { + // A value containing a newline would break the INI written below (read_ini throws), + // so load_from_ini_string discards the whole settings block on import. Skip such + // keys instead of silently dropping every setting. + std::string value = filtered_cfg.opt_serialize(key); + if (value.find('\n') != std::string::npos) { + BOOST_LOG_TRIVIAL(warning) << "publish: dropping key \"" << key + << "\" from the published payload (value contains a newline)"; + continue; + } + payload += key + " = " + value + "\n"; + } + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = std::move(payload); + + // Same file layout as save_project(), plus Silence (so export_3mf does not set the project + // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. + auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); + if (full_pathnames) + save_strategy = save_strategy | SaveStrategy::FullPathSources; + ret = export_3mf(into_path(path), save_strategy, -1, nullptr); + } catch (...) { + restore_now(); + MessageDialog(this, + _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs " + "have the file open."), + _L("Publish"), wxOK | wxICON_WARNING) + .ShowModal(); + return wxID_CANCEL; + } + + if (ret < 0) { + restore_now(); + MessageDialog(this, + _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs " + "have the file open."), + _L("Publish"), wxOK | wxICON_WARNING) + .ShowModal(); + return wxID_CANCEL; + } + restore_now(); + + // Register the exported file in the "Recently opened" list + wxGetApp().mainframe->add_to_recent_projects(path); + + return wxID_YES; +} + +bool Plater::get_pending_published(std::vector<std::string>& out_keys, + std::vector<Slic3r::PublishedMaterialEntry>& out_material) const +{ + if (!p->m_has_pending_published) + return false; + out_keys = p->m_pending_published_keys; + out_material = p->m_pending_material_keys; + return true; +} + +void Plater::set_pending_published(const std::vector<std::string>& published_keys, + const std::vector<Slic3r::PublishedMaterialEntry>& material_keys) +{ + p->m_has_pending_published = true; + p->m_pending_published_keys = published_keys; + p->m_pending_material_keys = material_keys; +} + Preset *get_printer_preset(const MachineObject *obj) { if (!obj) @@ -18670,6 +19037,8 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy nozzle_diameter_str = nozzle_diameter_option->serialize(); std::string printer_model_id = preset_bundle.printers.get_edited_preset().get_printer_type(&preset_bundle); + // The printer reads slice_info.config and knows only its own catalog ids. + auto* id_agent = preset_bundle.is_bbl_vendor() ? wxGetApp().getAgent() : nullptr; for (int i = 0; i < plate_data_list.size(); i++) { PlateData *plate_data = plate_data_list[i]; @@ -18679,6 +19048,8 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy std::string display_filament_type; it->type = cfg.get_filament_type(display_filament_type, it->id); it->filament_id = filament_id_opt ? filament_id_opt->get_at(it->id) : ""; + if (id_agent) + it->filament_id = id_agent->from_orca_filament_id(it->filament_id); it->color = filament_color ? filament_color->get_at(it->id) : "#FFFFFF"; // save filament info used in curr plate int index = p->partplate_list.get_curr_plate_index(); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 5308deec61..26cd06978b 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -407,9 +407,7 @@ public: bool preview_zip_archive(const boost::filesystem::path& archive_path); // BBS: restore - std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false); - // To be called when providing a list of files to the GUI slic3r on command line. - std::vector<size_t> load_files(const std::vector<std::string>& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false); + std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false, bool* published_out = nullptr); // to be called on drag and drop bool load_files(const wxArrayString& filenames); @@ -519,6 +517,13 @@ public: void export_gcode_3mf(bool export_all = false); void send_gcode_finish(wxString name); void export_core_3mf(); + // Export a "published" 3MF embedding the author-selected settings in the file metadata; a + // pure export that leaves the in-memory project untouched. + int export_published_3mf(const std::vector<std::string>& published_keys, const std::vector<Slic3r::PublishedMaterialEntry>& material_keys); + // Session-level stash of the last published selection, seeded into the Publish dialog on + // open and written on publish or on loading a published 3MF + bool get_pending_published(std::vector<std::string>& out_keys, std::vector<Slic3r::PublishedMaterialEntry>& out_material) const; + void set_pending_published(const std::vector<std::string>& published_keys, const std::vector<Slic3r::PublishedMaterialEntry>& material_keys); static TriangleMesh combine_mesh_fff(const ModelObject& mo, int instance_id, std::function<void(const std::string&)> notify_func = {}); void export_stl(bool extended = false, bool selection_only = false, bool multi_stls = false, FileType file_type = FT_STL); //BBS: remove amf diff --git a/src/slic3r/GUI/PluginPickerDialog.cpp b/src/slic3r/GUI/PluginPickerDialog.cpp index d0c387b0c0..194dbaaf07 100644 --- a/src/slic3r/GUI/PluginPickerDialog.cpp +++ b/src/slic3r/GUI/PluginPickerDialog.cpp @@ -16,7 +16,6 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, const std::vector<Slic3r::PluginDescriptor>& plugins) : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_plugins(plugins) - , m_capability_mode(false) { build_ui(plugin_type_label); CentreOnParent(); @@ -27,7 +26,6 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, std::vector<CapabilityEntry> capabilities) : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_capabilities(std::move(capabilities)) - , m_capability_mode(true) { build_capability_ui(plugin_type_label); CentreOnParent(); diff --git a/src/slic3r/GUI/PluginPickerDialog.hpp b/src/slic3r/GUI/PluginPickerDialog.hpp index 0d676eb04d..95f00689c3 100644 --- a/src/slic3r/GUI/PluginPickerDialog.hpp +++ b/src/slic3r/GUI/PluginPickerDialog.hpp @@ -50,7 +50,6 @@ private: wxStaticText* m_description { nullptr }; std::vector<Slic3r::PluginDescriptor> m_plugins; std::vector<CapabilityEntry> m_capabilities; - bool m_capability_mode { false }; }; }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 8f3ac17f7c..08483f3100 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -347,7 +347,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS wxLanguage supported_languages[]{ wxLANGUAGE_ENGLISH, wxLANGUAGE_CHINESE_SIMPLIFIED, - wxLANGUAGE_CHINESE, + wxLANGUAGE_CHINESE_TRADITIONAL, wxLANGUAGE_GERMAN, wxLANGUAGE_CZECH, wxLANGUAGE_FRENCH, @@ -407,7 +407,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_CHINESE_SIMPLIFIED)) { language_name = wxString::FromUTF8("\xe4\xb8\xad\xe6\x96\x87\x28\xe7\xae\x80\xe4\xbd\x93\x29"); } - else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_CHINESE)) { + else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_CHINESE_TRADITIONAL)) { language_name = wxString::FromUTF8("\xe4\xb8\xad\xe6\x96\x87\x28\xe7\xb9\x81\xe9\xab\x94\x29"); } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_SPANISH)) { @@ -519,7 +519,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS } } - auto check = [this](bool yes_or_no) { + auto check = [](bool yes_or_no) { // if (yes_or_no) // return true; int act_btns = ActionButtons::SAVE; @@ -1200,7 +1200,7 @@ wxBoxSizer* PreferencesDialog::create_item_button(wxString title, wxString title m_button_download->SetStyle(title2 == _L("Clear") ? ButtonStyle::Alert : ButtonStyle::Regular, ButtonType::Parameter); m_button_download->SetToolTip(tooltip2.IsEmpty() ? tooltip : tooltip2); // use label tooltip if button tooltip empty - m_button_download->Bind(wxEVT_BUTTON, [this, onclick](auto &e) { onclick(); }); + m_button_download->Bind(wxEVT_BUTTON, [onclick](auto &e) { onclick(); }); m_sizer->Add(m_button_download, 0, wxALIGN_CENTER_VERTICAL); @@ -1490,7 +1490,7 @@ void PreferencesDialog::create() m_sizer_body = new wxBoxSizer(wxVERTICAL); m_pref_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | wxTR_FULL_ROW_HIGHLIGHT); - m_pref_tabs->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable right select + m_pref_tabs->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable right select m_pref_tabs->SetFont(Label::Body_14); create_items(); diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index f78af21a99..ac419073d7 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -873,10 +873,15 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset auto fila_type = Preset::remove_suffix_modified(GetValue().ToUTF8().data()); bool is_official = boost::algorithm::starts_with(fila_type, "Bambu"); if (is_official) { - // Get filament_id from filament_presets + // Get filament_id from filament_presets. FilamentPickerDialog looks up + // filaments_color_codes.json, which is downloaded from Bambu and keyed by the + // printer's own ids, so translate our OF id (the "GFA00" fallback is already one). const std::string& preset_name = m_preset_bundle->filament_presets[m_filament_idx]; const Preset* selected_preset = m_collection->find_preset(preset_name); - wxString fila_id = selected_preset ? wxString::FromUTF8(selected_preset->filament_id) : "GFA00"; + auto* agent = wxGetApp().getAgent(); + wxString fila_id = "GFA00"; + if (selected_preset) + fila_id = wxString::FromUTF8(agent ? agent->from_orca_filament_id(selected_preset->filament_id) : selected_preset->filament_id); FilamentColor fila_color = get_cur_color_info(); // Show filament picker dialog @@ -1653,7 +1658,7 @@ void TabPresetComboBox::OnSelect(wxCommandEvent &evt) default: break; } if (sp != ConfigWizard::SP_WELCOME) { - wxTheApp->CallAfter([this, sp]() { + wxTheApp->CallAfter([sp]() { run_wizard(sp); }); } @@ -1949,7 +1954,7 @@ GUI::CalibrateFilamentComboBox::CalibrateFilamentComboBox(wxWindow *parent) { clr_picker->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); clr_picker->SetToolTip(""); - clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {}); + clr_picker->Bind(wxEVT_BUTTON, [](wxCommandEvent& e) {}); } GUI::CalibrateFilamentComboBox::~CalibrateFilamentComboBox() diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 669468d852..2b4d212d0f 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -2062,7 +2062,7 @@ void CrealityPrintHostSendDialog::init() } for (auto* c : m_slot_combos) { - c->Bind(wxEVT_COMBOBOX, [this, ext_slot_idx](wxCommandEvent& e) { + c->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& e) { int sel = e.GetSelection(); if (sel >= 0 && sel < (int)m_printer_slots.size() && m_printer_slots[sel].box_id == 0) { diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 0b280fe923..8ec6909c8c 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -164,7 +164,7 @@ void PrinterFileSystem::ListAllFiles() req["storage"] = m_file_storage; req["api_version"] = 2; req["notify"] = "DETAIL"; - SendRequest<FileList>(LIST_INFO, req, [this, type = m_file_type](json const& resp, FileList & list, auto) -> int { + SendRequest<FileList>(LIST_INFO, req, [type = m_file_type](json const& resp, FileList & list, auto) -> int { json files = resp["file_lists"]; for (auto& f : files) { std::string name = f["name"]; @@ -1230,7 +1230,7 @@ boost::uint32_t PrinterFileSystem::RequestMediaAbility(int api_version) req["api_version"] = api_version; return SendRequest<MediaAbilityList>( - REQUEST_MEDIA_ABILITY, req, [this](const json &resp, MediaAbilityList &list, auto) -> int { + REQUEST_MEDIA_ABILITY, req, [](const json &resp, MediaAbilityList &list, auto) -> int { json abliity_list = resp["storage"]; list = abliity_list.get<MediaAbilityList>(); return 0; diff --git a/src/slic3r/GUI/PrivacyUpdateDialog.cpp b/src/slic3r/GUI/PrivacyUpdateDialog.cpp index ef4dac9b13..92d6d6c8c7 100644 --- a/src/slic3r/GUI/PrivacyUpdateDialog.cpp +++ b/src/slic3r/GUI/PrivacyUpdateDialog.cpp @@ -97,7 +97,7 @@ PrivacyUpdateDialog::PrivacyUpdateDialog(wxWindow* parent, wxWindowID id, const this->on_hide(); }); - Bind(wxEVT_CLOSE_WINDOW, [this](wxCloseEvent& e) {e.Veto(); }); + Bind(wxEVT_CLOSE_WINDOW, [](wxCloseEvent& e) {e.Veto(); }); if (btn_style != CONFIRM_AND_CANCEL) m_button_cancel->Hide(); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp new file mode 100644 index 0000000000..16b0b6201c --- /dev/null +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -0,0 +1,2198 @@ +#include "PublishSettingsDialog.hpp" + +#include "GUI_App.hpp" +#include "MainFrame.hpp" +#include "MsgDialog.hpp" +#include "I18N.hpp" +#include "Tab.hpp" +#include "ConfigValueFormatter.hpp" +#include "FilamentBitmapUtils.hpp" +#include "Widgets/Label.hpp" +#include "Widgets/TextInput.hpp" +#include "Widgets/DialogButtons.hpp" +#include "Widgets/StaticLine.hpp" +#include "Widgets/StateColor.hpp" + +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Preset.hpp" +#include "libslic3r/PublishSettings.hpp" +#include "libslic3r/FilamentMixer.hpp" +#include "libslic3r/Model.hpp" + +#include <boost/algorithm/string/trim.hpp> +#include <wx/display.h> +#include <wx/utils.h> +#include <wx/dcbuffer.h> +#include <wx/dcmemory.h> +#include <wx/dcgraph.h> +#include <wx/image.h> +#include <set> +#include <algorithm> +#include <cmath> +#include <cstring> +#include <memory> +#include <numeric> +#include <tuple> +#include <utility> + +namespace Slic3r { namespace GUI { +namespace { + +// Menu ids for show_menu(): dedicated range so the popup cannot collide with application-level +// bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). +enum { + kPublishSelectAll = wxID_HIGHEST + 1, + kPublishDeselectAll, + kPublishSelectVisible, + kPublishDeselectVisible, + kPublishFilterSelected, + kPublishFilterNonSelected +}; + +// Tree-style flags shared by the outer tabs and every group's inner tabs. +constexpr long s_tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | + wxTR_FULL_ROW_HIGHLIGHT; + +// The author's hex colour for a filament slot (empty when the slot is out of range); shared by +// the header chip, the inner-tab chip and the DPI rescale paths. +std::string filament_color_hex(const DynamicPrintConfig& full, size_t slot) +{ + if (const auto* colours = full.opt<ConfigOptionStrings>("filament_colour")) + if (slot < colours->size()) + return colours->get_at(slot); + return std::string(); +} + +PublishMaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& full) +{ + PublishMaterialIdentity identity; + if (const auto* types = full.opt<ConfigOptionStrings>("filament_type")) + if (slot < types->size()) + identity.type = types->get_at(slot); + if (const auto* vendors = full.opt<ConfigOptionStrings>("filament_vendor")) + if (slot < vendors->size()) + identity.vendor = vendors->get_at(slot); + if (const auto* ids = full.opt<ConfigOptionStrings>("filament_ids")) + if (slot < ids->size()) + identity.id = ids->get_at(slot); + return identity; +} + +// "Generic PLA @System" -> "Generic PLA"; mirrors the alias derivation in PresetBundle.cpp. +std::string material_display_name(const std::string& preset_name) +{ + const size_t at = preset_name.find_first_of('@'); + if (at == std::string::npos) + return preset_name; + std::string bare = preset_name.substr(0, at); + boost::trim_right(bare); + return bare.empty() ? preset_name : bare; +} + +// Section title for a filament slot: the resolved preset name, then the filament type, then +// the generic "Material". +wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPrintConfig& full) +{ + if (slot < bundle->filament_presets.size()) { + const Preset* preset = bundle->filaments.find_preset(bundle->filament_presets[slot]); + if (preset != nullptr && !preset->name.empty()) { + // Display the name the sidebar does: the alias (already bare-name + variant-tail + // stripped for root filament presets). + const std::string& display = preset->alias.empty() ? get_preset_bare_name(preset->name) : preset->alias; + return from_u8(material_display_name(display)); + } + } + const PublishMaterialIdentity identity = material_identity(slot, full); + if (!identity.type.empty()) + return from_u8(identity.type); + return _L("Material"); +} + +// The component slots of a mixed filament ("1,2,3"), 1-based, or empty when out of range. +std::vector<unsigned int> mixed_slot_components(const DynamicPrintConfig& full, size_t slot) +{ + const auto* comp_opt = full.opt<ConfigOptionStrings>("filament_mixed_components"); + if (comp_opt == nullptr || slot >= comp_opt->size()) + return {}; + return parse_mixed_components(comp_opt->values[slot]); +} + +// Human-readable label of a mixed filament, mirroring the sidebar's mixed filament rows: the +// 1-based component slot numbers with their blend percentages (or a "->" gradient arrow), +// e.g. "1 (60%) + 2 (40%)". Used as the slot's tab/header title in place of a preset name. +wxString mixed_filament_label(const DynamicPrintConfig& full, size_t slot) +{ + const std::vector<unsigned int> comps = mixed_slot_components(full, slot); + if (comps.empty()) + return _L("Mixed filament"); + const auto* grad_opt = full.opt<ConfigOptionBools>("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + const auto* ratios_opt = full.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios"); + wxString label; + for (size_t i = 0; i < comps.size(); ++i) { + if (i > 0) + label += is_gradient ? wxString::FromUTF8(" \u2192 ") : wxString::FromUTF8(" + "); + label += wxString::Format("%u", comps[i]); + if (!is_gradient) { + double ratio = 100.0 / comps.size(); + if (ratios_opt != nullptr && slot < ratios_opt->size()) { + const std::vector<double> rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + if (i < rs.size()) + ratio = rs[i] * 100.0; + } + label += wxString::Format(" (%d%%)", int(ratio + 0.5)); + } + } + return label; +} + +// Blended representative colour of a mixed slot, computed exactly like the sidebar's swatches +// (recompute_mixed_slot_colors): sublayer slots blend by their ratios, gradient slots by their +// two end colours, broken references fall back to grey. +wxColour mixed_filament_blend_color(const DynamicPrintConfig& full, size_t slot) +{ + std::vector<wxColour> colors; + if (const auto* colours = full.opt<ConfigOptionStrings>("filament_colour")) { + colors.reserve(colours->values.size()); + for (const std::string& hex : colours->values) { + const wxColour c(hex); + colors.push_back(c.IsOk() ? c : wxColour(0, 0, 0)); + } + } + while (colors.size() <= slot) + colors.push_back(wxColour("#D9D9D9")); + recompute_mixed_slot_colors(colors, full); + return slot < colors.size() ? colors[slot] : wxColour("#D9D9D9"); +} + +// The slot's own chip as the main GUI renders it: a curve-sampled gradient swatch for a +// gradient mixed slot, the static blended colour otherwise. Returns wxNullBitmap when nothing +// could be rendered (the caller falls back to a plain label). +wxBitmap mixed_filament_chip_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz) +{ + const std::string label = std::to_string(slot + 1); + const auto* grad_opt = full.opt<ConfigOptionBools>("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + wxBitmap* icon = nullptr; + if (is_gradient) { + // The same curve-sampled ramp the sidebar chips use; an empty ramp (broken definition) + // degrades to a plain fade between the slot's two component colours. + const std::vector<wxColour> ramp = mixed_gradient_ramp(full, slot, swatch_sz); + if (!ramp.empty()) { + icon = get_extruder_color_icon(std::vector<std::string>(), true, label, swatch_sz, swatch_sz, &ramp); + } else { + std::vector<std::string> hexes; + for (const unsigned int comp : mixed_slot_components(full, slot)) { + std::string hex = filament_color_hex(full, size_t(comp) - 1); + if (hex.empty()) + hex = "#D9D9D9"; + hexes.push_back(std::move(hex)); + } + if (hexes.size() >= 2) + icon = get_extruder_color_icon(std::move(hexes), true, label, swatch_sz, swatch_sz); + } + } + if (icon == nullptr) { + const wxColour blend = mixed_filament_blend_color(full, slot); + const std::string blend_hex = blend.IsOk() ? + std::string(wxString::Format("#%02X%02X%02X", blend.Red(), blend.Green(), blend.Blue()).ToUTF8()) : + std::string("#808080"); + icon = get_extruder_color_icon(blend_hex, label, swatch_sz, swatch_sz); + } + return icon != nullptr ? *icon : wxNullBitmap; +} + +// Tab-strip bitmap for a mixed slot: the mix's own chip, then its component swatches each +// followed by their percent share (or a "->" arrow for gradients), mirroring the main GUI's +// sidebar rows - e.g. "[3 purple]: [1 red] 50% + [2 blue] 50%". The whole composition is one +// bitmap because a TabCtrl item cannot interleave images into its text; the tab's text is +// therefore empty. The bitmap is opaque and bakes tab_bg (the tab strip's background colour): +// its texts are rasterized with plain GDI on that solid ground, like the sidebar rows and the +// color chips. Text on a transparent bitmap has to go through the graphics-context route, and +// on MSW that degrades into jagged ClearType-fallback glyphs with fringe halos - the same +// reason draw_mixed_gradient_plot renders into an opaque buffer (FilamentBitmapUtils.cpp). +wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz, const wxColour& tab_bg) +{ + const std::vector<unsigned int> comps = mixed_slot_components(full, slot); + if (comps.empty()) + return wxNullBitmap; + const auto* grad_opt = full.opt<ConfigOptionBools>("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + const auto* ratios_opt = full.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios"); + std::vector<double> ratio_pct(comps.size(), 100.0 / comps.size()); + if (!is_gradient && ratios_opt != nullptr && slot < ratios_opt->size()) { + const std::vector<double> rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + for (size_t i = 0; i < rs.size() && i < comps.size(); ++i) + ratio_pct[i] = rs[i] * 100.0; + } + + const auto* colours = full.opt<ConfigOptionStrings>("filament_colour"); + const wxString lead_sep = wxString::FromUTF8(":"); + const wxString comp_sep = is_gradient ? wxString::FromUTF8("\u2192") : wxString::FromUTF8("+"); + + // Phase 1 (layout): render every swatch and measure every text piece so the composite + // width is known before drawing; the dummy bitmap keeps GetTextExtent reliable. + struct Piece + { + enum Kind { Swatch, Text } kind{Text}; + wxBitmap bmp; + wxString text; + }; + std::vector<Piece> pieces; + bool has_lead = false; + wxBitmap dummy(1, 1); + wxMemoryDC measure_dc; + measure_dc.SelectObject(dummy); + measure_dc.SetFont(::Label::Body_12); + const int gap = wxWindow::FromDIP(4, nullptr); + + auto push_swatch = [&](const std::string& hex, const std::string& label) { + wxBitmap* icon = get_extruder_color_icon(hex, label, swatch_sz, swatch_sz); + if (icon == nullptr) + return; + pieces.push_back({Piece::Swatch, *icon, wxString()}); + }; + auto push_text = [&](const wxString& text) { pieces.push_back({Piece::Text, wxNullBitmap, text}); }; + + { + const wxBitmap chip = mixed_filament_chip_bitmap(full, slot, swatch_sz); + has_lead = chip.IsOk(); + if (has_lead) + pieces.push_back({Piece::Swatch, chip, wxString()}); + } + for (size_t ci = 0; ci < comps.size(); ++ci) { + if (pieces.empty()) + break; + push_text(has_lead && pieces.size() == 1 ? lead_sep : comp_sep); // lead chip may have failed to render + std::string hex = "#D9D9D9"; + if (colours != nullptr && comps[ci] >= 1 && comps[ci] <= colours->size()) + hex = colours->values[comps[ci] - 1]; + const size_t before = pieces.size(); + push_swatch(hex, std::to_string(comps[ci])); + if (pieces.size() == before) + break; // swatch failed: stop cleanly before an orphaned separator/percent pair + if (!is_gradient) { + push_text(wxString::Format("%d%%", int(ratio_pct[ci] + 0.5))); + } + } + if (pieces.empty()) + return wxNullBitmap; + + int width = 0; + for (const Piece& p : pieces) + width += (p.kind == Piece::Swatch ? swatch_sz : measure_dc.GetTextExtent(p.text).x + gap); + + // Phase 2 (draw): opaque, filled with the tab strip's background colour. Text goes through + // the plain DC on every platform (see the function comment for why the alpha route is + // avoided); chip bitmaps keep their own alpha and composite cleanly onto the fill. + wxBitmap composite(width, swatch_sz); + wxMemoryDC memdc; + memdc.SelectObject(composite); + memdc.SetBackground(wxBrush(tab_bg)); + memdc.Clear(); + memdc.SetBackgroundMode(wxTRANSPARENT); + memdc.SetFont(::Label::Body_12); + memdc.SetTextForeground(StateColor::darkModeColorFor(wxColour("#262E30"))); + int x = 0; + for (const Piece& p : pieces) { + if (p.kind == Piece::Swatch) { + memdc.DrawBitmap(p.bmp, x, 0, true); + x += swatch_sz; + } else { + const wxSize tsz = measure_dc.GetTextExtent(p.text); + memdc.DrawText(p.text, x + gap / 2, (swatch_sz - tsz.y) / 2); + x += tsz.x + gap; + } + } + memdc.SelectObject(wxNullBitmap); + return composite; +} + +// The filament slots (0-based) the current project actually uses, across every plate: base and +// MMU-painted volume extruders, per-object layer-range and support/wall/infill filament +// overrides, and custom-gcode tool changes. Used mixed slots are preserved as themselves (so an +// in-use mix is publishable) while their physical components are added too - a mix always ships +// with the materials of its components even if a component is not referenced directly anywhere. +std::set<size_t> project_used_filament_slots(const PresetBundle& bundle, const DynamicPrintConfig& full, const Model& model) +{ + std::set<size_t> used; // 0-based used slots, mixed slots not yet expanded + if (model.objects.empty()) + return used; + + auto add_1based = [&used](int id) { + if (id > 0) + used.insert(size_t(id - 1)); + }; + + const DynamicPrintConfig& print_cfg = bundle.prints.get_edited_preset().config; + const int glb_support_intf = print_cfg.opt_int("support_interface_filament"); + const int glb_support = print_cfg.opt_int("support_filament"); + const int glb_outer_wall = print_cfg.opt_int("outer_wall_filament_id"); + const int glb_inner_wall = print_cfg.opt_int("inner_wall_filament_id"); + const int glb_sparse_infill = print_cfg.opt_int("sparse_infill_filament_id"); + const int glb_internal_solid = print_cfg.opt_int("internal_solid_filament_id"); + const int glb_top_surface = print_cfg.opt_int("top_surface_filament_id"); + const int glb_bottom_surface = print_cfg.opt_int("bottom_surface_filament_id"); + const bool glb_support_on = print_cfg.opt_bool("enable_support") || print_cfg.opt_int("raft_layers") > 0; + + for (ModelObject* mo : model.objects) { + for (ModelVolume* mv : mo->volumes) + for (int e : mv->get_extruders()) + add_1based(e); + + for (const auto& range_entry : mo->layer_config_ranges) + if (const ConfigOption* ext_opt = range_entry.second.option("extruder")) + add_1based(ext_opt->getInt()); + + bool obj_support = glb_support_on; + if (const ConfigOption* s_opt = mo->config.option("enable_support"); s_opt != nullptr) + obj_support = s_opt->getBool(); + else if (const ConfigOption* r_opt = mo->config.option("raft_layers"); r_opt != nullptr) + obj_support = r_opt->getInt() > 0; + + if (obj_support) { + if (const ConfigOption* opt = mo->config.option("support_interface_filament"); opt != nullptr && opt->getInt() != 0) + add_1based(opt->getInt()); + else + add_1based(glb_support_intf); + + if (const ConfigOption* opt = mo->config.option("support_filament"); opt != nullptr && opt->getInt() != 0) + add_1based(opt->getInt()); + else + add_1based(glb_support); + } + + auto obj_id = [&mo](const char* key) { + const ConfigOption* opt = mo->config.option(key); + return (opt != nullptr) ? opt->getInt() : 0; + }; + + int obj_outer_wall = obj_id("outer_wall_filament_id"); + if (obj_outer_wall == 0) + obj_outer_wall = obj_id("inner_wall_filament_id"); + add_1based(obj_outer_wall != 0 ? obj_outer_wall : glb_outer_wall); + + int obj_inner_wall = obj_id("inner_wall_filament_id"); + if (obj_inner_wall == 0) + obj_inner_wall = obj_id("outer_wall_filament_id"); + add_1based(obj_inner_wall != 0 ? obj_inner_wall : glb_inner_wall); + + const int obj_sparse = obj_id("sparse_infill_filament_id"); + add_1based(obj_sparse != 0 ? obj_sparse : glb_sparse_infill); + + const int obj_internal_solid = obj_id("internal_solid_filament_id"); + add_1based(obj_internal_solid != 0 ? obj_internal_solid : glb_internal_solid); + + int obj_top = obj_id("top_surface_filament_id"); + if (obj_top == 0) + obj_top = obj_internal_solid; + add_1based(obj_top != 0 ? obj_top : glb_top_surface); + + int obj_bottom = obj_id("bottom_surface_filament_id"); + if (obj_bottom == 0) + obj_bottom = obj_internal_solid; + add_1based(obj_bottom != 0 ? obj_bottom : glb_bottom_surface); + } + + for (const auto& plate_entry : model.plates_custom_gcodes) + for (const CustomGCode::Item& item : plate_entry.second.gcodes) + if (item.type == CustomGCode::Type::ToolChange) + add_1based(item.extruder); + + // Expand used mixed slots to their physical components and keep each mixed slot itself so the + // dialog shows the mix. A component both used directly and pulled in via a mix is deduped. + const auto* is_mixed_opt = full.opt<ConfigOptionBools>("filament_is_mixed"); + const auto* comp_opt = full.opt<ConfigOptionStrings>("filament_mixed_components"); + if (is_mixed_opt != nullptr && comp_opt != nullptr && has_any_mixed_filament(is_mixed_opt->values)) { + const std::vector<unsigned int> raw(used.begin(), used.end()); + const std::vector<unsigned int> expanded = expand_mixed_filaments(raw, is_mixed_opt->values, comp_opt->values); + std::set<size_t> result(expanded.begin(), expanded.end()); + for (unsigned int s : raw) + if (s < is_mixed_opt->values.size() && is_mixed_opt->values[s]) + result.insert(s); + return result; + } + + return used; +} + +} // namespace + +// Warning shown on OK when an enabled mixed-filament slot relies on a filament that would ship +// without its material. One row per unmet dependency: the mixed slot's colour chip, the +// component filament's colour chip, and the reason. "Cancel" is the safe choice and keeps the +// dialog open; "Publish anyway" continues. +class MixedFilamentWarningDialog : public MsgDialog +{ +public: + MixedFilamentWarningDialog(wxWindow* parent, const DynamicPrintConfig& full, const std::vector<MixedDependencyIssue>& issues) + : MsgDialog(parent, _L("Warning"), wxEmptyString, wxOK | wxCANCEL | wxICON_WARNING) + { + auto* content = new wxBoxSizer(wxVERTICAL); + + auto* intro = new wxStaticText(this, wxID_ANY, _L("Some mixed filaments rely on filaments that will not be published:")); + intro->SetFont(Label::Body_13); + intro->Wrap(FromDIP(400)); + content->Add(intro, 0, wxEXPAND); + content->AddSpacer(FromDIP(10)); + + const int swatch = FromDIP(20); + for (const MixedDependencyIssue& issue : issues) { + auto* row = new wxBoxSizer(wxHORIZONTAL); + + // The mixed slot as just its own chip (gradient-aware, numbered like its tab); + // falls back to a plain label when the chip cannot be built. + const wxString mix_label = wxString::Format(_L("Filament %d (mixed)"), int(issue.mixed_slot) + 1); + const wxBitmap mix_bmp = mixed_filament_chip_bitmap(full, issue.mixed_slot, swatch); + if (mix_bmp.IsOk()) { + auto* bmp = new wxStaticBitmap(this, wxID_ANY, mix_bmp); + bmp->SetToolTip(mix_label); + row->Add(bmp, 0, wxALIGN_CENTER_VERTICAL); + } else { + auto* label = new wxStaticText(this, wxID_ANY, mix_label); + label->SetFont(Label::Body_12); + row->Add(label, 0, wxALIGN_CENTER_VERTICAL); + } + + auto* needs = new wxStaticText(this, wxID_ANY, _L("needs")); + needs->SetFont(Label::Body_12); + needs->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + row->Add(needs, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, FromDIP(6)); + + // The component filament's colour chip, numbered like the tab strips; the slot + // name stays on hover to keep the row itself short. + std::string hex = filament_color_hex(full, issue.component_slot); + if (hex.empty()) + hex = "#D9D9D9"; + if (wxBitmap* chip = get_extruder_color_icon(hex, std::to_string(issue.component_slot + 1), swatch, swatch)) { + auto* comp_bmp = new wxStaticBitmap(this, wxID_ANY, *chip); + comp_bmp->SetToolTip(wxString::Format(_L("Filament %d"), int(issue.component_slot) + 1)); + row->Add(comp_bmp, 0, wxALIGN_CENTER_VERTICAL); + } + + auto* reason = new wxStaticText(this, wxID_ANY, + issue.reason == MixedDependencyIssue::Reason::Disabled ? _L("not enabled") : + _L("material not published")); + reason->SetFont(Label::Body_12); + reason->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#989898"))); + row->Add(reason, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + + content->Add(row, 0, wxLEFT, FromDIP(10)); + content->AddSpacer(FromDIP(6)); + } + + auto* hint = new wxStaticText( + this, wxID_ANY, + _L("To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement.")); + hint->SetFont(Label::Body_12); + hint->Wrap(FromDIP(380)); + content->Add(hint, 0, wxEXPAND | wxTOP, FromDIP(4)); + + content_sizer->Add(content, 0, wxEXPAND); + + SetButtonLabel(wxID_OK, _L("Publish anyway")); + SetButtonLabel(wxID_CANCEL, _L("Cancel"), true); // safe choice gets the focus + + finalize(); + } +}; + +PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_spec(const DynamicPrintConfig& full, size_t slot) +{ + MixedVisualSpec spec; + const std::vector<unsigned int> comps = mixed_slot_components(full, slot); + if (comps.empty()) + return spec; + + const auto* grad_opt = full.opt<ConfigOptionBools>("filament_mixed_gradient"); + spec.is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + + const auto* colours = full.opt<ConfigOptionStrings>("filament_colour"); + for (unsigned int cid : comps) { + std::string hex = "#D9D9D9"; + if (colours != nullptr && cid >= 1 && cid <= colours->size()) + hex = colours->values[cid - 1]; + const wxColour c(hex); + spec.component_colours.push_back(c.IsOk() ? c : wxColour("#D9D9D9")); + } + + if (!spec.is_gradient) { + // Sublayer shares; parse_mixed_ratios already falls back to equal shares and + // normalizes to sum 1. + spec.ratios.assign(comps.size(), 1.0 / comps.size()); + if (const auto* ratios_opt = full.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")) + if (slot < ratios_opt->size()) { + const std::vector<double> rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + if (rs.size() == comps.size()) + spec.ratios = rs; + } + if (comps.size() == 3) + spec.tri_weights = spec.ratios; // the picker's barycentric shares + } else { + const Slic3r::GradientCurve curve = mixed_gradient_curve(full, slot); + constexpr int kSamples = 256; + for (int i = 0; i <= kSamples; ++i) { + const double t = double(i) / kSamples; + spec.gradient_samples.emplace_back(t, sample_gradient_curve(curve, t)); + } + for (const Slic3r::GradientAnchor& anchor : curve.points) + spec.gradient_anchors.emplace_back(anchor.x, anchor.y); + } + + spec.valid = true; + return spec; +} + +PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, + const std::vector<std::string>* published_keys, + const std::vector<Slic3r::PublishedMaterialEntry>* material_keys) + : DPIDialog(parent ? parent : static_cast<wxWindow*>(wxGetApp().mainframe), + wxID_ANY, + _L("Publish 3MF..."), + wxDefaultPosition, + wxDefaultSize, + wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER | wxFULL_REPAINT_ON_RESIZE) + , m_search(this, "search", 16) + , m_menu(this, "filter", 16) +{ + SetBackgroundColour(*wxWHITE); + + // --- filter bar: search box, All/None, menu button --- + wxPanel* f_bar = new wxPanel(this, wxID_ANY); + f_bar->SetBackgroundColour(GetBackgroundColour()); + wxBoxSizer* f_sizer = new wxBoxSizer(wxHORIZONTAL); + + m_filter_box = new TextInput(f_bar, "", "", "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); + m_filter_box->SetIcon(m_search.bmp()); + m_filter_box->SetMinSize(FromDIP(wxSize(200, 24))); + m_filter_box->SetSize(FromDIP(wxSize(-1, 24))); + m_filter_box->SetFocus(); + m_filter_ctrl = m_filter_box->GetTextCtrl(); + m_filter_ctrl->SetFont(Label::Body_13); + m_filter_ctrl->SetSize(wxSize(-1, FromDIP(16))); // centers text vertically + m_filter_ctrl->SetHint(_L("Type to filter...")); + m_filter_ctrl->Bind(wxEVT_TEXT, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_filter_ctrl->Bind(wxEVT_TEXT_ENTER, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_filter_ctrl->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { + if (m_filter_mode != FilterMode::Text) + apply_filter(m_filter_ctrl->GetValue()); + e.Skip(); + }); + f_sizer->Add(m_filter_box, 1, wxEXPAND); + + m_fb_sizer = new wxBoxSizer(wxHORIZONTAL); + auto create_btn = [this, f_bar](wxString title, bool select) { + auto btn = new wxStaticText(f_bar, wxID_ANY, title); + btn->SetForegroundColour("#009687"); + btn->SetCursor(wxCURSOR_HAND); + btn->SetFont(Label::Body_13); + btn->Bind(wxEVT_LEFT_DOWN, [this, select](wxMouseEvent&) { select_all(select); }); + m_fb_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + }; + f_sizer->Add(m_fb_sizer, 0, wxALIGN_CENTER_VERTICAL); + create_btn(_L("All"), true); + create_btn(_L("None"), false); + + // Indicator for the menu's pseudo filters: sits where All/None go while they are hidden. + // Labels reuse the menu entries (no new strings); clicking the chip returns to text + // filtering, keeping the search box contents. + m_pseudo_chip = new wxStaticText(f_bar, wxID_ANY, ""); + m_pseudo_chip->SetForegroundColour("#009687"); + m_pseudo_chip->SetCursor(wxCURSOR_HAND); + m_pseudo_chip->SetFont(Label::Body_13); + m_pseudo_chip->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_pseudo_chip->Hide(); + f_sizer->Add(m_pseudo_chip, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + + m_menu_button = new wxStaticBitmap(f_bar, wxID_ANY, m_menu.bmp()); + m_menu_button->SetCursor(wxCURSOR_HAND); + m_menu_button->Bind(wxEVT_LEFT_DOWN, &PublishSettingsDialog::show_menu, this); + f_sizer->Add(m_menu_button, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + + f_bar->SetSizerAndFit(f_sizer); + + m_outer_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); + m_outer_tabs->SetFont(Label::Body_14); + m_outer_tabs->SetBackgroundColour(GetBackgroundColour()); + + m_outer_host = new wxPanel(this, wxID_ANY); + m_outer_host->SetBackgroundColour(GetBackgroundColour()); + m_outer_host_sizer = new wxBoxSizer(wxVERTICAL); + m_outer_host->SetSizer(m_outer_host_sizer); + + wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); + + wxStaticText* msg = new wxStaticText(this, wxID_ANY, _L("Select which settings to be published in the 3MF file")); + msg->SetFont(Label::Body_13); + msg->Wrap(-1); + w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + + w_sizer->Add(f_bar, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + w_sizer->Add(m_outer_tabs, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + w_sizer->Add(m_outer_host, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + + build_option_model(); + + // Seed from a remembered session selection or a freshly loaded published 3MF (authoritative). + if (published_keys != nullptr || material_keys != nullptr) + apply_selection(published_keys != nullptr ? *published_keys : std::vector<std::string>(), + material_keys != nullptr ? *material_keys : std::vector<Slic3r::PublishedMaterialEntry>()); + + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); + + dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { + // Publish is always allowed: no settings selected means no settings override. Warn only + // when an enabled mixed filament would ship without the material of one of its + // components; "Publish anyway" accepts that and publishes anyway. + if (const std::vector<MixedDependencyIssue> issues = unpublished_mixed_components(); !issues.empty()) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + MixedFilamentWarningDialog warn(this, full, issues); + if (warn.ShowModal() != wxID_OK) + return; // Cancel: dismiss the warning and stay in this dialog + } + EndModal(wxID_OK); + }); + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); + + // Guide links, bottom-left, sharing the footer row with the OK/Cancel buttons (pushed right). + auto make_link = [this](const wxString& label, const char* url) { + wxStaticText* link = new wxStaticText(this, wxID_ANY, label); + link->SetFont(Label::Body_13); + link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); + link->SetCursor(wxCURSOR_HAND); + link->Bind(wxEVT_LEFT_DOWN, [url](wxMouseEvent&) { wxLaunchDefaultBrowser(url, wxBROWSER_NEW_WINDOW); }); + return link; + }; + wxBoxSizer* links_sizer = new wxBoxSizer(wxVERTICAL); + links_sizer->Add(make_link(_L("Publish 3MF Wiki"), "https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html"), 0, wxALIGN_LEFT); + links_sizer->Add(make_link(_L("Publish 3MF Video Guide"), "https://www.youtube.com/@OfficialOrcaSlicer/videos"), 0, + wxTOP | wxALIGN_LEFT, FromDIP(4)); + + wxBoxSizer* footer = new wxBoxSizer(wxHORIZONTAL); + footer->Add(links_sizer, 0, wxALIGN_CENTER_VERTICAL); + footer->AddStretchSpacer(); + footer->Add(dlg_btns, 0, wxALIGN_CENTER_VERTICAL); + w_sizer->Add(footer, 0, wxRIGHT | wxLEFT | wxBOTTOM | wxEXPAND, FromDIP(10)); + + SetSizerAndFit(w_sizer); + fit_to_content(); // initial size only; the dialog is resizable + wxGetApp().UpdateDlgDarkUI(this); + // The dark-UI walk re-colours the tab strips after the compositions were baked; rebuild so + // they carry the theme-resolved background (the sidebar resolves its colours at paint time, + // this dialog bakes, so the bake has to happen after the walk). + refresh_mixed_tab_bitmaps(); +} + +// Size the window to its content: width follows the widest tab strip so no filament tab is +// hidden (TabCtrl::relayout hides overflowing buttons), height scales proportionally. Both +// are floored at the 600x500 base and capped at hard DIP limits - deliberately not the whole +// display - with one last-resort clamp so the dialog can never open larger than the screen. +// Also owns the resize floor: the window cannot be resized below what the tabs need, so +// shrinking never re-hides a filament tab. +void PublishSettingsDialog::fit_to_content() +{ + static const wxSize BASE{600, 500}; + static const wxSize CAP{1300, 850}; + + int strip = m_outer_tabs->GetFullSize(); + for (const SectionGroup& section : m_sections) { + strip = std::max(strip, section.tabs->GetFullSize()); + if (section.mixed_tabs != nullptr) + strip = std::max(strip, section.mixed_tabs->GetFullSize()); + } + + // Minimum width: whatever keeps every tab visible (never below the base). strip is device + // pixels (Button min sizes); BASE/CAP are DIP and converted over. + const int min_w = std::max(strip + 2 * FromDIP(10), FromDIP(BASE.x)); + + // Initial size: prefer proportional growth within the caps. + const int w = std::clamp(min_w, FromDIP(BASE.x), FromDIP(CAP.x)); + const double f = double(w) / FromDIP(BASE.x); + const int h = std::clamp(int(FromDIP(BASE.y) * f), FromDIP(BASE.y), FromDIP(CAP.y)); + + const wxRect area = wxDisplay(this).GetClientArea(); + const int max_w = area.width * 9 / 10; + const int max_h = area.height * 9 / 10; + + SetMinSize(wxSize(std::min(min_w, max_w), std::min(FromDIP(BASE.y), max_h))); + SetSize(std::min(w, max_w), std::min(h, max_h)); +} + +PublishSettingsDialog::~PublishSettingsDialog() {} + +void PublishSettingsDialog::build_option_model() +{ + // Structural / non-publishable keys, shared with the published-3MF overlay path. + const std::set<std::string>& denylist = publish_structural_keys(); + // Base keys already added in the print section (dedup across pages/optgroups). The printer + // section keeps its own printer_added set keyed by the full per-extruder "#N" opt_id, so + // every extruder gets its own row (see Phase 1 below). + std::set<std::string> added; + + PresetBundle* bundle = wxGetApp().preset_bundle; + DynamicPrintConfig full = bundle->full_config(); + + m_info_nonsel = _L("No selected items..."); + m_info_allsel = _L("All items selected..."); + m_info_empty = _L("No matching items..."); + m_info_mix = _L("Mixed filament - published as a whole when \"Enable\" above is selected"); + + // Tab order differs from Section's enum order (Print, Printer, Material): the dialog + // presents Printer, Filament, Process. + m_sections.reserve(3); + const Section tab_order[] = {Section::Printer, Section::Material, Section::Print}; + for (Section kind : tab_order) + section_group_for(kind); + bind_tab_events(); + + // Shared per-option label/value computation; returns false when the option must be skipped + // (denylisted / unknown / empty label). value is the stringified value; unit the translated + // sidetext (may be empty). + auto option_text = [&denylist, &full](const std::string& opt_id, const std::string& pure_key, wxString& label, wxString& value, + wxString& unit) -> bool { + if (denylist.count(pure_key) > 0) + return false; + const ConfigOptionDef* def = print_config_def.get(pure_key); + if (def == nullptr) + return false; + label = _(def->full_label.empty() ? def->label : def->full_label); + if (label.IsEmpty()) + return false; + value = get_string_value(opt_id, full); + unit = _(def->sidetext); + return true; + }; + + // --- Phase 1: printer per-extruder retraction settings (first, mirroring the sidebar's + // Printer group), from the printer tab's "Extruder"/"Extruder N" pages. One inner tab per + // extruder (e.g. "Left Extruder"/"Right Extruder" via Tab::translate_category), each holding + // that extruder's Retraction and Z-Hop rows with per-extruder "#N" values. + { + size_t g = section_group_for(Section::Printer); + std::set<std::string> printer_added; + for (Tab* tab : wxGetApp().tabs_list) { + if (tab->m_type != Preset::TYPE_PRINTER) + continue; + for (const PageShp& page : tab->m_pages) { + if (!page->title().StartsWith("Extruder")) + continue; + // The extruder index of this page: its options are appended with the same + // "#N" opt_index (opt.second.second), so derive the tab's index from the first + // allowlisted option; skip the page when none is found (defensive). + int extruder_idx = -1; + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") + continue; + for (const auto& opt : optgroup->opt_map()) + if (extruder_idx < 0) + extruder_idx = opt.second.second; + if (extruder_idx >= 0) + break; + } + if (extruder_idx < 0) + continue; + const wxString page_title = Tab::translate_category(page->title(), tab->m_type); + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + // Allowlist on the untranslated optgroup title; the "Retraction when + // switching material" group is intentionally skipped. + if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") + continue; + const wxString subcategory = _(optgroup->title); + for (const auto& opt : optgroup->opt_map()) { + const std::string& opt_id = opt.first; + const std::string& pure_key = opt.second.first; + // Rows are keyed by the full per-extruder "#N" opt_id so each extruder + // tab publishes its own value; GetPublishedKeys() emits the checked rows + // as-is. + if (!printer_added.insert(opt_id).second) + continue; + wxString label, value, unit; + if (!option_text(opt_id, pure_key, label, value, unit)) + continue; + size_t cat_index = category_index_for(page_title, Section::Printer, g, size_t(extruder_idx)); + size_t sub_index = subcategory_index_for(cat_index, subcategory, optgroup->icon); + add_row_ui(opt_id, label, value, unit, cat_index, sub_index); + } + } + } + } + } + + // --- Phase 2: per-material sections synthesized from the filament tab's "Setting + // Overrides" page, under the Filament group. + { + size_t g = section_group_for(Section::Material); + Tab* filament_tab = nullptr; + for (Tab* tab : wxGetApp().tabs_list) + if (tab->m_type == Preset::TYPE_FILAMENT) { + filament_tab = tab; + break; + } + if (filament_tab != nullptr) { + const Page* overrides_page = nullptr; + for (const PageShp& page : filament_tab->m_pages) + if (page->title() == "Setting Overrides") { + overrides_page = page.get(); + break; + } + + if (overrides_page != nullptr) { + // Mixed-color slots are virtual: they carry no per-key Material/Retraction + // settings; their "Enable" toggle always embeds the mix definition (components, + // ratios, gradient). Detect them via the project-level flag. + const ConfigOptionBools* is_mixed_opt = full.opt<ConfigOptionBools>("filament_is_mixed"); + // Only the slots the project actually uses: base/MMU-painted volume extruders, + // support/wall/infill overrides and custom-gcode tool changes, plus the physical + // components of any in-use mixed slot. Unused slots get no section at all (and are + // therefore never published). One section per used slot, disambiguated by its + // colour chip and slot identity while showing the bare name. + const std::set<size_t> used_slots = project_used_filament_slots(*bundle, full, wxGetApp().plater()->model()); + for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { + if (used_slots.find(slot) == used_slots.end()) + continue; + const bool is_mixed = is_mixed_opt != nullptr && slot < is_mixed_opt->size() && is_mixed_opt->values[slot]; + const PublishMaterialIdentity identity = material_identity(slot, full); + // A mixed slot's title is its component composition (e.g. "1 (60%) + 2 + // (40%)"), not the cloned preset's name shown in the main GUI. + const wxString title = is_mixed ? mixed_filament_label(full, slot) : material_title(slot, bundle, full); + const size_t category_index = category_index_for(title, Section::Material, g, slot, identity, is_mixed); + + if (is_mixed) { + // A mixed slot publishes as one unit (its definition); nothing to select + // per-key. Its component filaments are auto-enabled + Full Published when + // "Enable" is checked (see on_enable_toggle). Its page still shows what + // would be published: a ratio bar, or the gradient graph. + add_mixed_visual(category_index, make_mixed_visual_spec(full, slot)); + continue; + } + + // Material requirement rows: an optional filament colour and/or a + // vendor-agnostic material type for this slot, in their own optgroup so they + // stay visually separated from the setting rows. + { + const size_t req_sub = subcategory_index_for(category_index, _L("Material"), "custom-gcode_filament"); + add_row_ui("filament_colour", _L("Color"), from_u8(filament_color_hex(full, slot)), wxString(), category_index, + req_sub, RowKind::Color); + std::string type; + if (const auto* types = full.opt<ConfigOptionStrings>("filament_type")) + if (slot < types->size()) + type = types->get_at(slot); + add_row_ui("filament_type", _L("Type"), from_u8(normalize_filament_type(type)), wxString(), category_index, req_sub, + RowKind::Type); + } + + // A material section must not repeat a key; the same key may appear in other + // material sections - that is intended. + std::set<std::string> material_added; + + for (const ConfigOptionsGroupShp& optgroup : overrides_page->m_optgroups) { + // Allowlist on the untranslated optgroup title; "Ironing" is skipped. + if (optgroup->title != "Retraction" && optgroup->title != "Retraction when switching material") + continue; + for (const auto& opt : optgroup->opt_map()) { + // Row keys are base keys; the load side applies them positionally. + const std::string& opt_id = opt.first; + std::string base = publish_base_key(opt_id); + if (!material_added.insert(base).second) + continue; + // Show the value of this slot; fall back to slot 0 if out of range. + std::string value_opt_id = base + "#" + std::to_string(slot); + if (const ConfigOption* opt_cfg = full.option(base)) + if (const auto* vec = dynamic_cast<const ConfigOptionVectorBase*>(opt_cfg)) + if (vec->size() > 0 && slot >= vec->size()) + value_opt_id = base + "#0"; + wxString label, value, unit; + if (!option_text(value_opt_id, base, label, value, unit)) + continue; + size_t sub_index = subcategory_index_for(category_index, _(optgroup->title), optgroup->icon); + add_row_ui(base, label, value, unit, category_index, sub_index); + } + } + } + } + } + } + + // --- Phase 3: process (print) settings; grouping matches the process tab. + { + size_t g = section_group_for(Section::Print); + for (Tab* tab : wxGetApp().tabs_list) { + if (tab->m_type != Preset::TYPE_PRINT) + continue; + size_t page_index = 0; + for (const PageShp& page : tab->m_pages) { + wxString category = Tab::translate_category(page->title(), tab->m_type); + const size_t category_index = category_index_for(category, Section::Print, g, page_index); + + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + for (const auto& opt : optgroup->opt_map()) { + // opt_map() key is the opt_id (may carry "#N"); the value is + // (pure_opt_key, opt_index). + const std::string& opt_id = opt.first; + const std::string& pure_key = opt.second.first; + // A key may appear in more than one page/group; keep the first. + if (!added.insert(pure_key).second) + continue; + wxString label, value, unit; + if (!option_text(opt_id, pure_key, label, value, unit)) + continue; + size_t sub_index = subcategory_index_for(category_index, _(optgroup->title), optgroup->icon); + add_row_ui(opt_id, label, value, unit, category_index, sub_index); + } + } + ++page_index; + } + } + } + + // Pre-check the dirty (modified) settings and mark them bold (per-slot match, across all + // sections; collect_dirty_settings_keys unions the prints, printers and filaments). + // Dirty keys carry a "#N" per-extruder/per-slot suffix (deep_diff), so the base key alone + // cannot distinguish which extruder/filament slot changed: match the row's exact key, and + // for material rows (base key + per-slot value) the base key plus the section's slot. + std::set<std::string> dirty_keys; + for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) + dirty_keys.insert(key); + for (Row& row : m_rows) { + // The Color/Type requirement rows are not "dirty overrides": never auto-checked. + if (row.kind != RowKind::Setting) + continue; + bool dirty = dirty_keys.count(row.key) != 0; + if (!dirty && row.section == Section::Material) + dirty = dirty_keys.count(publish_base_key(row.key) + "#" + std::to_string(m_categories[row.inner_index].filament_slot)) != 0; + row.dirty = dirty; + if (row.dirty) { + row.check->SetValue(true); + set_row_bold(row, true); + } + } + + // Wire the "Enable" checkboxes: toggling one reveals/hides the slot's settings below the + // header (and, for a mixed slot, auto-selects its components). Bind by index so the lambda + // stays valid even if the vector is reallocated later. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].enable_check != nullptr) + m_categories[c].enable_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_enable_toggle(c); }); + + // Wire the "Full Publish" checkboxes (physical slots): toggling one disables/enables the + // material's rows. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].full_check != nullptr) + m_categories[c].full_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_full_toggle(c); }); + + // No filter is active at startup: every row matches until the user types. + for (Row& row : m_rows) + row.matches_filter = true; + apply_visibility(); + + for (Category& category : m_categories) { + category.scroll->FitInside(); + category.list_sizer->Layout(); + } + for (SectionGroup& section : m_sections) + if (!section.categories.empty()) + section.tabs->SelectItem(0); + if (!m_sections.empty()) { + m_outer_tabs->SelectItem(0); + show_outer_page(0); + } + refresh_tab_indicators(); +} + +size_t PublishSettingsDialog::section_group_for(Section kind) +{ + for (size_t i = 0; i < m_sections.size(); ++i) + if (m_sections[i].kind == kind) + return i; + + SectionGroup section; + section.kind = kind; + const size_t new_index = m_sections.size(); + switch (kind) { + case Section::Printer: + section.title = _L("Printer"); + section.icon_name = "printer"; + break; + case Section::Material: + section.title = _L("Filament"); + section.icon_name = "filament"; + break; + case Section::Print: + section.title = _L("Process"); + section.icon_name = "process"; + break; + } + section.icon_bmp = ScalableBitmap(this, section.icon_name, 16); + + section.page = new wxPanel(m_outer_host, wxID_ANY); + section.page->SetBackgroundColour(GetBackgroundColour()); + auto* page_sizer = new wxBoxSizer(wxVERTICAL); + section.tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); + section.tabs->SetFont(Label::Body_14); + section.tabs->SetBackgroundColour(GetBackgroundColour()); + page_sizer->Add(section.tabs, 0, wxEXPAND); + // Mixed-color filament slots get a second tab strip below the physical filament tabs; only + // the Material section has them. + if (kind == Section::Material) { + section.mixed_tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); + section.mixed_tabs->SetFont(Label::Body_14); + section.mixed_tabs->SetBackgroundColour(GetBackgroundColour()); + // The mixed tabs carry full swatch compositions: give them a touch more room than the + // filament tabs so neighbouring compositions stay distinguishable (must precede AppendItem). + section.mixed_tabs->SetItemSpace(FromDIP(3)); + page_sizer->Add(section.mixed_tabs, 0, wxEXPAND | wxTOP, FromDIP(2)); + section.mixed_tabs->Hide(); + } + section.page_host = new wxPanel(section.page, wxID_ANY); + section.page_host->SetBackgroundColour(GetBackgroundColour()); + section.page_host_sizer = new wxBoxSizer(wxVERTICAL); + section.page_host->SetSizer(section.page_host_sizer); + page_sizer->Add(section.page_host, 1, wxEXPAND | wxTOP, FromDIP(4)); + section.page->SetSizer(page_sizer); + + if (section.icon_bmp.bmp().IsOk()) + m_outer_tabs->AppendItem(section.title, section.icon_bmp.bmp()); + else + m_outer_tabs->AppendItem(section.title); + m_outer_host_sizer->Add(section.page, 1, wxEXPAND); + section.page->Hide(); + m_sections.push_back(std::move(section)); + return new_index; +} + +size_t PublishSettingsDialog::category_index_for( + const wxString& title, Section section, size_t group, size_t source_index, const PublishMaterialIdentity& identity, bool is_mixed) +{ + // Dedup across both tab rows (physical + mixed); mixed slots are never duplicated anyway. + auto match = [&](const Category& existing) { + return existing.title == title && existing.section == section && existing.source_index == source_index && + existing.filament_id == identity.id && existing.filament_type == identity.type && + existing.filament_vendor == identity.vendor; + }; + for (size_t i : m_sections[group].categories) + if (match(m_categories[i])) + return i; + for (size_t i : m_sections[group].mixed_categories) + if (match(m_categories[i])) + return i; + + Category category; + category.title = title; + category.section = section; + category.group = group; + category.source_index = source_index; + category.filament_type = identity.type; + category.filament_vendor = identity.vendor; + category.filament_id = identity.id; + category.filament_slot = source_index; + category.is_mixed = is_mixed; + category.page = new wxPanel(m_sections[group].page_host, wxID_ANY); + category.page->SetBackgroundColour(GetBackgroundColour()); + auto* page_sizer = new wxBoxSizer(wxVERTICAL); + + // The physical slot's colour chip decorates the page header and the inner tab; it carries + // the 1-based slot number, mirroring the main GUI's filament swatches. A mixed slot has no + // header at all: its page is just the Enable toggle above the (always visible) definition + // preview - the identification lives in the tab strip's composition bitmap. + std::string hex; + std::string chip_label; + if (section == Section::Material && !is_mixed) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + hex = filament_color_hex(full, source_index); + chip_label = std::to_string(source_index + 1); + } + + if (section == Section::Material) { + if (is_mixed) { + // No chip/title: the lone "Enable" checkbox tops the page. + auto* enable_sizer = new wxBoxSizer(wxHORIZONTAL); + category.enable_check = new wxCheckBox(category.page, wxID_ANY, _L("Enable")); + category.enable_check->SetFont(Label::Body_13); + category.enable_check->SetToolTip(_L("Publish this mixed filament and enable + Full Publish its component filaments")); + enable_sizer->Add(category.enable_check, 0, wxALIGN_CENTER_VERTICAL); + page_sizer->Add(enable_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + } else { + // Line 1: [chip] [title] [Enable]. The Enable checkbox gates the whole slot: while + // it is unchecked nothing below the title is shown and nothing of it is published. + auto* header_sizer = new wxBoxSizer(wxHORIZONTAL); + if (wxBitmap* chip = get_extruder_color_icon(hex, chip_label, FromDIP(20), FromDIP(20))) { + category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); + header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + } + category.title_label = new wxStaticText(category.page, wxID_ANY, title); + category.title_label->SetFont(Label::Head_14); + header_sizer->Add(category.title_label, 0, wxALIGN_CENTER_VERTICAL); + category.enable_check = new wxCheckBox(category.page, wxID_ANY, _L("Enable")); + category.enable_check->SetFont(Label::Body_13); + category.enable_check->SetToolTip(_L("Publish this filament slot in the 3MF file")); + header_sizer->Add(category.enable_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(10)); + page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + + // Line 2: the "Full Publish" toggle, on its own line below the title (hidden until + // the slot is enabled), aligned with the colour chip above it. + auto* full_sizer = new wxBoxSizer(wxHORIZONTAL); + category.full_check = new wxCheckBox(category.page, wxID_ANY, _L("Full Publish")); + category.full_check->SetFont(Label::Body_13); + category.full_check->SetToolTip(_L("Embed the entire filament of this slot in the 3MF file")); + full_sizer->Add(category.full_check, 0, wxALIGN_CENTER_VERTICAL); + category.full_line_item = page_sizer->Add(full_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + } + } + + category.scroll = new wxScrolledWindow(category.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); + category.scroll->SetScrollRate(0, 10); + category.scroll->SetBackgroundColour(GetBackgroundColour()); + category.list_sizer = new wxBoxSizer(wxVERTICAL); + category.scroll->SetSizer(category.list_sizer); + category.scroll->DisableFocusFromKeyboard(); + category.scroll->Bind(wxEVT_RIGHT_DOWN, &PublishSettingsDialog::show_menu, this); + category.info = new wxStaticText(category.scroll, wxID_ANY, is_mixed ? m_info_mix : m_info_empty); + category.info->SetFont(Label::Body_13); + category.list_sizer->Add(category.info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + category.info->Hide(); + page_sizer->Add(category.scroll, 1, wxEXPAND | wxALL, FromDIP(4)); + // A material slot starts disabled: its rows (and its Full Publish line) stay hidden until + // "Enable" is checked. + if (section == Section::Material) + category.scroll->Hide(); + category.page->SetSizer(page_sizer); + category.page->Hide(); + + const size_t category_index = m_categories.size(); + m_categories.push_back(std::move(category)); + // Mixed slots live in a second tab row below the physical filament tabs. + if (is_mixed) + m_sections[group].mixed_categories.push_back(category_index); + else + m_sections[group].categories.push_back(category_index); + if (section == Section::Material) { + TabCtrl* target = is_mixed ? m_sections[group].mixed_tabs : m_sections[group].tabs; + if (is_mixed) { + // The tab's whole composition (mix chip + components + percents) lives in one + // bitmap; the text is empty because a TabCtrl item cannot interleave images into + // its text. + const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20), target->GetBackgroundColour()); + if (tab_bmp.IsOk()) + target->AppendItem(wxString(), tab_bmp); + else + target->AppendItem(title); + } else if (wxBitmap* chip = get_extruder_color_icon(hex, chip_label, FromDIP(20), FromDIP(20))) { + target->AppendItem(title, *chip); + } else { + target->AppendItem(title); + } + } else { + m_sections[group].tabs->AppendItem(title); + } + m_sections[group].page_host_sizer->Add(m_categories[category_index].page, 1, wxEXPAND); + if (is_mixed) { + if (m_sections[group].selected_mixed < 0) + m_sections[group].selected_mixed = 0; + m_sections[group].mixed_tabs->Show(); + } else if (m_sections[group].selected_inner < 0) { + m_sections[group].selected_inner = 0; + } + return category_index; +} + +size_t PublishSettingsDialog::subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon) +{ + Category& category = m_categories[category_index]; + for (size_t i = 0; i < category.subs.size(); ++i) + if (category.subs[i].title == title) + return i; + + Subcategory sub; + sub.title = title; + if (!title.IsEmpty()) { + sub.header = new ::StaticLine(category.scroll, false, title, icon); + sub.header->SetFont(Label::Head_14); + sub.header->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636"))); + auto* wrap = new wxBoxSizer(wxVERTICAL); + wrap->Add(sub.header, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); + sub.item = category.list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(22)); + } + category.subs.push_back(std::move(sub)); + return category.subs.size() - 1; +} + +void PublishSettingsDialog::add_row_ui(const std::string& key, + const wxString& label, + const wxString& value, + const wxString& unit, + size_t category_index, + size_t subcategory_index, + RowKind kind) +{ + Category& category = m_categories[category_index]; + Row row; + row.key = key; + row.label = label; + row.value = value; + row.unit = unit; + row.kind = kind; + row.category = category.title; + row.subcategory = category.subs[subcategory_index].title; + row.section = category.section; + row.section_title = m_sections[category.group].title; + row.outer_index = category.group; + row.inner_index = category_index; + const size_t row_index = m_rows.size(); + m_rows.push_back(std::move(row)); + Row& current = m_rows[row_index]; + current.check = new wxCheckBox(category.scroll, wxID_ANY, label); + current.check->SetFont(Label::Body_13); + current.check->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { refresh_tab_indicators(); }); + auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); + row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); + // The value is read-only text (incl. the Type row: the published type is the slot's + // normalized type, not author-editable). + current.value_label = new wxStaticText(category.scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); + current.value_label->SetFont(Label::Body_13); + current.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); + current.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); + if (kind == RowKind::Color && !value.IsEmpty()) { + // The colour swatch carries this slot's 1-based number, like the main GUI swatches. + const std::string chip_label = std::to_string(category.filament_slot + 1); + if (wxBitmap* chip = get_extruder_color_icon(value.ToStdString(), chip_label, FromDIP(20), FromDIP(20))) { + current.color_chip = new wxStaticBitmap(category.scroll, wxID_ANY, *chip); + row_sizer->Add(current.color_chip, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + } + } + row_sizer->Add(current.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + if (!unit.IsEmpty()) { + current.unit_label = new wxStaticText(category.scroll, wxID_ANY, unit); + current.unit_label->SetFont(Label::Body_13); + current.unit_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + row_sizer->Add(current.unit_label, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + } + current.item = category.list_sizer->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(38)); + category.rows.push_back(row_index); + category.subs[subcategory_index].rows.push_back(row_index); +} + +void PublishSettingsDialog::on_full_toggle(size_t category_index) +{ + Category& cat = m_categories[category_index]; + const bool full = cat.full_check->GetValue(); + for (size_t r : cat.rows) + m_rows[r].check->Enable(!full); + refresh_tab_indicators(); +} + +void PublishSettingsDialog::on_enable_toggle(size_t category_index) +{ + Category& cat = m_categories[category_index]; + const bool enabled = cat.enable_check->GetValue(); + + // A published mixed filament needs its component filaments published too: mark the slots it + // uses as "Enable"d and Full Published so the mix's physical components always ship their + // identities. + if (cat.is_mixed && enabled) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + const std::vector<unsigned int> components = mixed_slot_components(full, cat.filament_slot); + for (const unsigned int component : components) { + // Components are 1-based physical filament indices. + const size_t component_slot = size_t(component) - 1; + for (size_t c = 0; c < m_categories.size(); ++c) { + Category& comp_cat = m_categories[c]; + if (comp_cat.section != Section::Material || comp_cat.is_mixed || comp_cat.filament_slot != component_slot) + continue; + if (comp_cat.enable_check != nullptr) + comp_cat.enable_check->SetValue(true); + if (comp_cat.full_check != nullptr) + comp_cat.full_check->SetValue(true); + on_full_toggle(c); + } + } + } + + // Reveal/hide everything below the slot's header (rows, info, Full Publish line) and refresh + // the visibility of the auto-selected component slots. + apply_visibility(); + if (cat.page != nullptr) + cat.page->GetSizer()->Layout(); + refresh_tab_indicators(); +} + +void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedVisualSpec& spec) +{ + if (category_index >= m_categories.size() || !spec.valid) + return; + Category& category = m_categories[category_index]; + if (category.page == nullptr || category.page->GetSizer() == nullptr || category.scroll == nullptr || spec.component_colours.empty()) + return; + + auto* viz = new wxPanel(category.page, wxID_ANY); + viz->SetBackgroundStyle(wxBG_STYLE_PAINT); + // Theme colours and DIP metrics are resolved inside the paint handler so dark-mode toggles + // and DPI changes are picked up on the next repaint without any explicit listener. The + // ternary fill cache lives inside the shared triangle painter (FilamentBitmapUtils). + viz->Bind(wxEVT_PAINT, [this, panel = viz, spec](wxPaintEvent&) { + const wxColour bg = StateColor::darkModeColorFor(*wxWHITE); + wxBufferedPaintDC pdc(panel); + pdc.SetBackground(wxBrush(bg)); + pdc.Clear(); + const wxRect rc = panel->GetClientRect(); + if (rc.width <= 0 || rc.height <= 0) + return; + + const size_t n = spec.component_colours.size(); + + if (spec.tri_weights.size() == 3 && n == 3 && !spec.is_gradient) { + // Ternary mix: read-only miniature of the MixedFilamentDialog's triangle picker. + const MixedTriangleTheme tri_theme{StateColor::darkModeColorFor(*wxWHITE), StateColor::darkModeColorFor(wxColour("#CECECE")), + StateColor::darkModeColorFor(wxColour("#262E30")), + StateColor::darkModeColorFor(wxColour(107, 107, 107))}; + draw_mixed_triangle_picker(pdc, rc.GetSize(), {spec.component_colours[0], spec.component_colours[1], spec.component_colours[2]}, + {spec.tri_weights[0], spec.tri_weights[1], spec.tri_weights[2]}, tri_theme); + draw_mixed_triangle_labels(pdc, rc.GetSize(), {spec.tri_weights[0], spec.tri_weights[1], spec.tri_weights[2]}, tri_theme); + } else if (!spec.is_gradient) { + // Ratio bar. A 2-component slot matches the MixedFilamentDialog's continuous blend + + // divider (with its two end labels); wider non-gradient mixes (rare) fall back to one + // solid segment per component. + if (n == 2) { + const int bar_h = FromDIP(27); + draw_mixed_ratio_blend_bar(pdc, wxRect(rc.x, rc.y, rc.width, bar_h), spec.component_colours[0], spec.component_colours[1], + spec.ratios[1]); + // Read-only twin of the dialog's left/right percentage labels. + pdc.SetFont(::Label::Body_12); + pdc.SetTextForeground(StateColor::darkModeColorFor(wxColour(107, 107, 107))); + const wxString la = wxString::Format("%d%%", int(std::lround(spec.ratios[0] * 100.0))); + const wxString lb = wxString::Format("%d%%", int(std::lround(spec.ratios[1] * 100.0))); + const int lab_y = rc.y + bar_h + FromDIP(2); + pdc.DrawText(la, rc.x, lab_y); + pdc.DrawText(lb, rc.x + rc.width - pdc.GetTextExtent(lb).GetWidth(), lab_y); + } else { + draw_mixed_ratio_segments(pdc, rc, spec.component_colours, spec.ratios); + // Percent label centred in each segment wide enough to hold it. + std::vector<double> shares = spec.ratios; + double total = 0.0; + for (double r : shares) + total += r; + if (total <= 0.0) { + shares.assign(n, 1.0 / n); + total = 1.0; + } + pdc.SetFont(::Label::Body_12); + int x0 = rc.x; + for (size_t i = 0; i < n; ++i) { + const int x1 = (i + 1 < n) ? rc.x + int(std::lround(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0) / + total * double(rc.width))) : + rc.x + rc.width; + const int w = std::max(1, x1 - x0); + const wxString text = wxString::Format("%d%%", int(std::lround(shares[i] / total * 100.0))); + const wxSize tsz = pdc.GetTextExtent(text); + if (tsz.GetWidth() + FromDIP(4) <= w) { + const wxColour& c = spec.component_colours[i]; + const double lum = 0.299 * c.Red() + 0.587 * c.Green() + 0.114 * c.Blue(); + pdc.SetTextForeground(lum > 140 ? wxColour("#262E30") : *wxWHITE); + pdc.DrawText(text, x0 + (w - tsz.GetWidth()) / 2, rc.y + (rc.height - tsz.GetHeight()) / 2); + } + x0 = x1; + } + } + } else { + // Gradient: read-only miniature of the GradientCurveEditor plot, drawn through the + // shared painter so it anti-aliases and keeps the square proportions and labels. + const MixedGradientTheme grad_theme{StateColor::darkModeColorFor(*wxWHITE), + StateColor::darkModeColorFor(wxColour(238, 238, 238)), + StateColor::darkModeColorFor(wxColour(107, 107, 107)), + StateColor::darkModeColorFor(wxColour(107, 107, 107)), + StateColor::darkModeColorFor(wxColour(38, 46, 48)), + StateColor::darkModeColorFor(wxColour(172, 172, 172)), + StateColor::darkModeColorFor(*wxWHITE)}; + std::vector<MixedGradientCurve> curves; + std::vector<wxPoint2DDouble> anchors; + if (spec.gradient_samples.size() >= 2 && n >= 2) { + const wxRect plot = mixed_gradient_plot_rect(rc.GetSize()); + auto lift_alpha = [](wxColour c) { + if (c.Alpha() == 0) + c.Set(c.Red(), c.Green(), c.Blue(), 150); + return c; + }; + // First component's ratio solid, its mirror twin for the other. + const wxColour col_a = lift_alpha(spec.component_colours[0]); + const wxColour col_b = lift_alpha(spec.component_colours[1]); + std::vector<wxPoint2DDouble> pts_a, pts_b; + pts_a.reserve(spec.gradient_samples.size()); + pts_b.reserve(spec.gradient_samples.size()); + for (const auto& [t, r] : spec.gradient_samples) { + pts_a.push_back({plot.x + t * plot.width, plot.y + (1.0 - r) * plot.height}); + pts_b.push_back({plot.x + t * plot.width, plot.y + r * plot.height}); + } + // Control-point anchors of the stored curve on the first component's line. + anchors.reserve(spec.gradient_anchors.size()); + for (const auto& [t, r] : spec.gradient_anchors) + anchors.push_back({plot.x + t * plot.width, plot.y + (1.0 - r) * plot.height}); + curves.push_back({std::move(pts_a), col_a, 4}); + curves.push_back({std::move(pts_b), col_b, 2}); + } + draw_mixed_gradient_plot(pdc, rc.GetSize(), curves, anchors, grad_theme); + } + }); + + // Fixed DIP size, left-aligned: the visualization keeps its proportions no matter how the + // dialog is resized (the paint handler draws into whatever client rect the panel ends up + // with, so nothing else has to change). Sizes mirror the MixedFilamentDialog controls: the + // gradient plot and triangle picker match the editor's 260x200 / 160x160, the ratio bar is + // the dialog's 27px bar plus its label line. + int viz_h; + int viz_w; + if (spec.is_gradient) { + viz_w = 260; + viz_h = 200; + } else if (spec.tri_weights.size() == 3 && spec.component_colours.size() == 3) { + viz_w = 160; + viz_h = 160; + } else { + viz_w = 240; + viz_h = spec.component_colours.size() == 2 ? 50 : 30; + } + const wxSize viz_sz(FromDIP(viz_w), FromDIP(viz_h)); + viz->SetMinSize(viz_sz); + viz->SetMaxSize(viz_sz); + // Parented to the page right above the scroll area, so it is always shown with the tab: + // the "Enable" toggle keeps gating only the rows/info below, never this preview. + wxSizer* page_sizer = category.page->GetSizer(); + int scroll_idx = -1; + for (size_t i = 0; i < page_sizer->GetChildren().size(); ++i) + if (page_sizer->GetChildren()[i]->GetWindow() == category.scroll) { + scroll_idx = int(i); + break; + } + if (scroll_idx < 0) + page_sizer->Add(viz, 0, wxLEFT | wxRIGHT | wxTOP, FromDIP(10)); // defensive: no scroll item + else + page_sizer->Insert(scroll_idx, viz, 0, wxLEFT | wxRIGHT | wxTOP, FromDIP(10)); +} + +void PublishSettingsDialog::set_row_bold(Row& row, bool bold) +{ + // Rebase on the dialog's body font so clearing bold restores the exact original font. + row.check->SetFont(bold ? Label::Body_13.Bold() : Label::Body_13); +} + +void PublishSettingsDialog::save_scroll_position(Category& category) +{ + if (category.scroll != nullptr) + category.scroll->GetViewStart(&category.scroll_pos.x, &category.scroll_pos.y); +} + +void PublishSettingsDialog::show_outer_page(size_t section_index) +{ + if (section_index >= m_sections.size()) + return; + if (m_selected_outer >= 0 && m_selected_outer < static_cast<int>(m_sections.size())) { + SectionGroup& old_section = m_sections[m_selected_outer]; + if (old_section.selected_inner >= 0 && old_section.selected_inner < static_cast<int>(old_section.categories.size())) + save_scroll_position(m_categories[old_section.categories[old_section.selected_inner]]); + if (old_section.selected_mixed >= 0 && old_section.selected_mixed < static_cast<int>(old_section.mixed_categories.size())) + save_scroll_position(m_categories[old_section.mixed_categories[old_section.selected_mixed]]); + m_sections[m_selected_outer].page->Hide(); + } + m_selected_outer = static_cast<int>(section_index); + SectionGroup& section = m_sections[section_index]; + section.page->Show(); + // Restore whichever tab row (physical or mixed) was active. + if (section.selected_inner >= 0) + show_inner_page(section_index, section.selected_inner); + else if (section.selected_mixed >= 0) + show_mixed_page(section_index, section.selected_mixed); + m_outer_host_sizer->Layout(); +} + +void PublishSettingsDialog::show_inner_page(size_t section_index, int inner_index) +{ + if (section_index >= m_sections.size()) + return; + SectionGroup& section = m_sections[section_index]; + if (inner_index < 0 || inner_index >= static_cast<int>(section.categories.size())) + return; + if (section.selected_inner >= 0 && section.selected_inner < static_cast<int>(section.categories.size())) { + save_scroll_position(m_categories[section.categories[section.selected_inner]]); + m_categories[section.categories[section.selected_inner]].page->Hide(); + } + if (section.selected_mixed >= 0 && section.selected_mixed < static_cast<int>(section.mixed_categories.size())) { + save_scroll_position(m_categories[section.mixed_categories[section.selected_mixed]]); + m_categories[section.mixed_categories[section.selected_mixed]].page->Hide(); + section.selected_mixed = -1; + } + section.selected_inner = inner_index; + Category& category = m_categories[section.categories[inner_index]]; + category.page->Show(); + category.scroll->FitInside(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + if (section.mixed_tabs != nullptr) + section.mixed_tabs->Unselect(); + section.page_host_sizer->Layout(); +} + +void PublishSettingsDialog::show_mixed_page(size_t section_index, int mixed_index) +{ + if (section_index >= m_sections.size()) + return; + SectionGroup& section = m_sections[section_index]; + if (mixed_index < 0 || mixed_index >= static_cast<int>(section.mixed_categories.size())) + return; + if (section.selected_mixed >= 0 && section.selected_mixed < static_cast<int>(section.mixed_categories.size())) { + save_scroll_position(m_categories[section.mixed_categories[section.selected_mixed]]); + m_categories[section.mixed_categories[section.selected_mixed]].page->Hide(); + } + if (section.selected_inner >= 0 && section.selected_inner < static_cast<int>(section.categories.size())) { + save_scroll_position(m_categories[section.categories[section.selected_inner]]); + m_categories[section.categories[section.selected_inner]].page->Hide(); + section.selected_inner = -1; + } + section.selected_mixed = mixed_index; + Category& category = m_categories[section.mixed_categories[mixed_index]]; + category.page->Show(); + category.scroll->FitInside(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + section.tabs->Unselect(); + section.page_host_sizer->Layout(); +} + +void PublishSettingsDialog::on_outer_tab_changed(wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (selection >= 0 && selection < static_cast<int>(m_sections.size())) + show_outer_page(static_cast<size_t>(selection)); +} + +void PublishSettingsDialog::on_inner_tab_changed(size_t section_index, wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (section_index < m_sections.size() && selection >= 0 && selection < static_cast<int>(m_sections[section_index].categories.size())) + show_inner_page(section_index, selection); +} + +void PublishSettingsDialog::on_mixed_tab_changed(size_t section_index, wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (section_index < m_sections.size() && selection >= 0 && + selection < static_cast<int>(m_sections[section_index].mixed_categories.size())) + show_mixed_page(section_index, selection); +} + +void PublishSettingsDialog::bind_tab_events() +{ + m_outer_tabs->Bind(wxEVT_TAB_SEL_CHANGED, &PublishSettingsDialog::on_outer_tab_changed, this); + for (size_t section_index = 0; section_index < m_sections.size(); ++section_index) { + m_sections[section_index].tabs->Bind(wxEVT_TAB_SEL_CHANGED, + [this, section_index](wxCommandEvent& event) { on_inner_tab_changed(section_index, event); }); + if (m_sections[section_index].mixed_tabs != nullptr) + m_sections[section_index].mixed_tabs->Bind(wxEVT_TAB_SEL_CHANGED, [this, section_index](wxCommandEvent& event) { + on_mixed_tab_changed(section_index, event); + }); + } +} + +void PublishSettingsDialog::apply_filter(const wxString& filter_text) +{ + m_filter_mode = FilterMode::Text; + refresh_filter(filter_text.Lower()); +} + +void PublishSettingsDialog::apply_pseudo_filter(bool selected_only) +{ + m_filter_mode = selected_only ? FilterMode::SelectedOnly : FilterMode::UnselectedOnly; + refresh_filter(wxString()); // the pseudo modes ignore the search text +} + +void PublishSettingsDialog::refresh_filter(const wxString& filter) +{ + Freeze(); + const bool pseudo = m_filter_mode != FilterMode::Text; + const bool want_checked = m_filter_mode == FilterMode::SelectedOnly; + m_fb_sizer->Show(!pseudo); + if (pseudo) { + // "×" marks the chip as a dismissible filter state (U+00D7, present in all UI fonts). + m_pseudo_chip->SetLabel((want_checked ? _L("Filter selected") : _L("Filter non-selected")) + " " + wxString::FromUTF8("\u00d7")); + } + m_pseudo_chip->Show(pseudo); + + // Row matches are computed first; page and optgroup visibility is applied below. + if (pseudo) { + for (Row& row : m_rows) + row.matches_filter = row.check->IsEnabled() && row.check->GetValue() == want_checked; + } else { + const bool clear = filter.IsEmpty(); + for (Row& row : m_rows) { + row.matches_filter = clear || (row.section_title + " " + row.category + " " + row.subcategory + " " + row.label + " " + + row.value + " " + row.unit) + .Lower() + .Contains(filter); + } + } + + size_t first_outer = 0; + int first_inner = -1; + bool active_has_match = false; + for (size_t s = 0; s < m_sections.size(); ++s) { + for (size_t inner = 0; inner < m_sections[s].categories.size(); ++inner) { + Category& category = m_categories[m_sections[s].categories[inner]]; + bool has_match = false; + for (size_t r : category.rows) + has_match = has_match || m_rows[r].matches_filter; + category.info->Show(!has_match); + if (!has_match) + // A mixed slot has no selectable rows: always explain it is published whole. + category.info->SetLabel(category.is_mixed ? m_info_mix : + (pseudo ? (want_checked ? m_info_nonsel : m_info_allsel) : m_info_empty)); + if (has_match && first_inner < 0) { + first_outer = s; + first_inner = static_cast<int>(inner); + } + if (static_cast<int>(s) == m_selected_outer && static_cast<int>(inner) == m_sections[s].selected_inner) + active_has_match = has_match; + } + // Mixed slots have no rows: they can never match a filter, so they always fall back to + // their explanatory hint (shown once the slot is enabled). + for (size_t mixed : m_sections[s].mixed_categories) { + Category& category = m_categories[mixed]; + category.info->Show(true); + category.info->SetLabel(m_info_mix); + } + } + if (!active_has_match && first_inner >= 0 && + (m_selected_outer != static_cast<int>(first_outer) || m_sections[first_outer].selected_inner != first_inner)) { + if (m_selected_outer != static_cast<int>(first_outer)) { + m_outer_tabs->SelectItem(static_cast<int>(first_outer)); + show_outer_page(first_outer); + } + m_sections[first_outer].tabs->SelectItem(first_inner); + show_inner_page(first_outer, first_inner); + } + + apply_visibility(); + for (Category& category : m_categories) { + save_scroll_position(category); + category.scroll->FitInside(); + category.list_sizer->Layout(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + } + Layout(); + Thaw(); +} + +void PublishSettingsDialog::apply_visibility() +{ + Freeze(); + for (Category& category : m_categories) { + // A disabled material slot hides everything below its header (rows, info and the Full + // Publish line); enable it first to reveal its settings. + const bool enabled = category.section != Section::Material || + (category.enable_check != nullptr && category.enable_check->GetValue()); + if (category.scroll != nullptr) + category.scroll->Show(enabled); + if (category.full_line_item != nullptr) + category.full_line_item->Show(enabled); + bool category_any = false; + for (size_t r : category.rows) + category_any = category_any || m_rows[r].matches_filter; + category.info->Show(enabled && !category_any); + for (Subcategory& sub : category.subs) { + bool sub_any = false; + for (size_t r : sub.rows) + sub_any = sub_any || m_rows[r].matches_filter; + if (sub.header != nullptr) + sub.item->Show(enabled && sub_any); + for (size_t r : sub.rows) + m_rows[r].item->Show(enabled && m_rows[r].matches_filter); + } + category.list_sizer->Layout(); + category.scroll->FitInside(); + } + Thaw(); +} + +void PublishSettingsDialog::select_all(bool value) +{ + // "All" skips disabled (gated) rows; "None" leaves a gated row's preserved value. + for (Row& row : m_rows) + if (row.check->IsEnabled()) + row.check->SetValue(value); + // "All" also enables every material slot (so its rows/Full Publish become visible and the + // selection is actually exported); "None" disables them all again. + for (Category& cat : m_categories) + if (cat.section == Section::Material && cat.enable_check != nullptr) + cat.enable_check->SetValue(value); + // wxCheckBox::SetValue does not emit wxEVT_CHECKBOX, so re-run the enable handlers to + // propagate mixed-slot components and refresh visibility as if the user had clicked. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].section == Section::Material) + on_enable_toggle(c); + apply_visibility(); + refresh_tab_indicators(); +} + +bool PublishSettingsDialog::row_is_visible(const Row& row) const +{ + if (m_selected_outer < 0 || m_selected_outer >= static_cast<int>(m_sections.size()) || + row.outer_index != static_cast<size_t>(m_selected_outer) || m_sections[m_selected_outer].selected_inner < 0 || + m_sections[m_selected_outer].selected_inner >= static_cast<int>(m_sections[m_selected_outer].categories.size()) || + row.inner_index != m_sections[m_selected_outer].categories[m_sections[m_selected_outer].selected_inner] || !row.matches_filter || + !row.check->IsEnabled()) + return false; + return row.item->IsShown(); +} + +void PublishSettingsDialog::select_visible(bool value) +{ + // In a pseudo-filter view the rows being toggled would all disappear; drop the filter + // afterwards so the result stays visible. + const bool clear_pseudo = (m_filter_mode == FilterMode::UnselectedOnly && !value) || + (m_filter_mode == FilterMode::SelectedOnly && value); + + // Toggle the rows visible under the *current* filter. + for (Row& row : m_rows) + if (row_is_visible(row)) + row.check->SetValue(value); + + if (clear_pseudo) { + // Note: SetValue() may fire wxEVT_TEXT on some platforms, re-entering apply_filter() - + // that is fine; the rows above were already toggled and the trailing call is idempotent. + m_filter_ctrl->ChangeValue(""); + apply_filter(""); // resync visibility and the All/None bar + } + refresh_tab_indicators(); +} + +void PublishSettingsDialog::show_menu(wxMouseEvent& evt) +{ + bool filtering = !m_filter_ctrl->GetValue().IsEmpty() || m_filter_mode != FilterMode::Text; + bool list_empty = true; + if (m_selected_outer >= 0) { + for (const Row& row : m_rows) + if (row_is_visible(row)) { + list_empty = false; + break; + } + } + + wxMenu m; + m.Append(kPublishSelectAll, _L("Select All"))->Enable(!filtering); + m.Append(kPublishDeselectAll, _L("Deselect All"))->Enable(!filtering); + m.AppendSeparator(); + m.Append(kPublishSelectVisible, _L("Select visible"))->Enable(!list_empty && filtering); + m.Append(kPublishDeselectVisible, _L("Deselect visible"))->Enable(!list_empty && filtering); + m.AppendSeparator(); + m.AppendCheckItem(kPublishFilterSelected, _L("Filter selected")); + m.AppendCheckItem(kPublishFilterNonSelected, _L("Filter non-selected")); + m.Check(kPublishFilterSelected, m_filter_mode == FilterMode::SelectedOnly); + m.Check(kPublishFilterNonSelected, m_filter_mode == FilterMode::UnselectedOnly); + + m.Bind( + wxEVT_MENU, + [this](wxCommandEvent& e) { + switch (e.GetId()) { + case kPublishSelectAll: select_all(true); break; + case kPublishDeselectAll: select_all(false); break; + case kPublishSelectVisible: select_visible(true); break; + case kPublishDeselectVisible: select_visible(false); break; + case kPublishFilterSelected: + // Clicking the active entry again clears the pseudo filter. + if (m_filter_mode == FilterMode::SelectedOnly) + apply_filter(m_filter_ctrl->GetValue()); + else + apply_pseudo_filter(true); + break; + case kPublishFilterNonSelected: + if (m_filter_mode == FilterMode::UnselectedOnly) + apply_filter(m_filter_ctrl->GetValue()); + else + apply_pseudo_filter(false); + break; + default: break; + } + }, + kPublishSelectAll, kPublishFilterNonSelected); + + wxWindow* src = dynamic_cast<wxWindow*>(evt.GetEventObject()); + if (!src) + return; + wxPoint screen_pos = src->ClientToScreen(evt.GetPosition()); + wxPoint local_pos = ScreenToClient(screen_pos); + PopupMenu(&m, local_pos); +} + +void PublishSettingsDialog::apply_selection(const std::vector<std::string>& published_keys, + const std::vector<Slic3r::PublishedMaterialEntry>& material_keys) +{ + // The supplied selection is authoritative: clear the dirty-default pre-check first so a + // dirty key the user deselected stays off, then re-select exactly what the selection names. + for (Row& row : m_rows) + if (row.check != nullptr) + row.check->SetValue(false); + for (Category& cat : m_categories) { + if (cat.section != Section::Material) + continue; + if (cat.enable_check != nullptr) + cat.enable_check->SetValue(false); + if (cat.full_check != nullptr) + cat.full_check->SetValue(false); + } + + // Print / printer rows: match by exact row key (the full "#N" opt_id where present). + for (const std::string& key : published_keys) + for (Row& row : m_rows) + if ((row.section == Section::Print || row.section == Section::Printer) && row.check != nullptr && row.key == key) { + row.check->SetValue(true); + break; + } + + // Per-slot material selections, applied positionally by slot. + for (const Slic3r::PublishedMaterialEntry& entry : material_keys) { + if (entry.slot < 0) + continue; + bool entry_mixed = false; + for (const std::string& k : entry.keys) + if (publish_mixed_keys().count(publish_base_key(k)) != 0) { + entry_mixed = true; + break; + } + size_t cat_idx = size_t(-1); + for (size_t c = 0; c < m_categories.size(); ++c) { + const Category& cat = m_categories[c]; + if (cat.section != Section::Material || cat.is_mixed != entry_mixed || cat.filament_slot != size_t(entry.slot)) + continue; + cat_idx = c; + break; + } + if (cat_idx == size_t(-1)) + continue; // slot not present in the receiver (out of range / skipped) + Category& cat = m_categories[cat_idx]; + if (cat.enable_check != nullptr) { + cat.enable_check->SetValue(true); + on_enable_toggle(cat_idx); + } + if (entry.full && cat.full_check != nullptr) { + cat.full_check->SetValue(true); + on_full_toggle(cat_idx); + } else { + // Setting rows are keyed by the base key. + for (const std::string& key : entry.keys) { + const std::string base = publish_base_key(key); + for (const size_t r : cat.rows) { + Row& row = m_rows[r]; + if (row.kind == RowKind::Setting && row.key == base) { + row.check->SetValue(true); + break; + } + } + } + if (entry.publish_type && !entry.publish_type_value.empty()) + for (const size_t r : cat.rows) + if (m_rows[r].kind == RowKind::Type && m_rows[r].check != nullptr) { + m_rows[r].check->SetValue(true); + break; + } + if (entry.publish_color && !entry.color.empty()) + for (const size_t r : cat.rows) + if (m_rows[r].kind == RowKind::Color && m_rows[r].check != nullptr) { + m_rows[r].check->SetValue(true); + break; + } + } + } + + apply_visibility(); + refresh_tab_indicators(); +} + +std::vector<std::string> PublishSettingsDialog::GetPublishedKeys() const +{ + std::vector<std::string> out; + // Process and printer sections both travel through published_keys (the load-side overlay + // applies process keys to the prints edited preset and the allowlisted printer keys to the + // printers edited preset); material keys use a separate API. Printer rows carry the full + // per-extruder "#N" opt_id (built in Phase 1), so a checked row publishes exactly that + // extruder's value - per-extruder selection is independent. + for (const Row& row : m_rows) { + if ((row.section != Section::Print && row.section != Section::Printer) || !row.check->GetValue()) + continue; + out.push_back(row.key); + } + return out; +} + +std::vector<MixedDependencyIssue> PublishSettingsDialog::unpublished_mixed_components() const +{ + std::vector<MixedDependencyIssue> out; + for (const Category& cat : m_categories) { + if (!cat.is_mixed || cat.section != Section::Material) + continue; + // Only enabled mixed slots depend on their components being published. + if (cat.enable_check == nullptr || !cat.enable_check->GetValue()) + continue; + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + // Components are 1-based physical filament indices. + for (const unsigned int component : mixed_slot_components(full, cat.filament_slot)) { + const size_t component_slot = size_t(component) - 1; + // Find the component slot's material category (one exists per physical slot). + const Category* comp_cat = nullptr; + for (const Category& other : m_categories) { + if (other.section == Section::Material && !other.is_mixed && other.filament_slot == component_slot) { + comp_cat = &other; + break; + } + } + if (comp_cat == nullptr || comp_cat->enable_check == nullptr) + continue; + // Missing when the component's "Enable" is off, or it is enabled with neither + // "Full Publish" nor the "Type" requirement row checked. Colour never counts: + // the receiver renders the mix from its own components' colours. + if (!comp_cat->enable_check->GetValue()) { + out.push_back({cat.filament_slot, component_slot, MixedDependencyIssue::Reason::Disabled}); + continue; + } + if (comp_cat->full_check != nullptr && comp_cat->full_check->GetValue()) + continue; + bool type_checked = false; + for (const size_t r : comp_cat->rows) { + const Row& row = m_rows[r]; + if (row.kind == RowKind::Type && row.check->GetValue()) { + type_checked = true; + break; + } + } + if (!type_checked) + out.push_back({cat.filament_slot, component_slot, MixedDependencyIssue::Reason::MaterialNotPublished}); + } + } + // Deterministic order for the warning rows: by mixed slot, then component slot. The same + // (mix, component) pair cannot repeat: each mix's components come from a config list. + std::sort(out.begin(), out.end(), [](const MixedDependencyIssue& a, const MixedDependencyIssue& b) { + return std::tie(a.mixed_slot, a.component_slot) < std::tie(b.mixed_slot, b.component_slot); + }); + return out; +} + +std::vector<Slic3r::PublishedMaterialEntry> PublishSettingsDialog::GetPublishedMaterialKeys() const +{ + std::vector<Slic3r::PublishedMaterialEntry> out; + for (const Category& cat : m_categories) { + if (cat.section != Section::Material) + continue; + // A slot that is not "Enable"d publishes nothing at all. + if (cat.enable_check != nullptr && !cat.enable_check->GetValue()) + continue; + Slic3r::PublishedMaterialEntry entry; + entry.filament_type = cat.filament_type; + entry.filament_vendor = cat.filament_vendor; + entry.filament_id = cat.filament_id; + entry.slot = static_cast<int>(cat.filament_slot); + // The author's preset id distinguishes exact variants that share filament_id + // ("Generic PLA" vs "Generic PLA Matte"), so the receiver can match precisely; the + // preset name is the most direct identity and is matched first on load. + PresetBundle* bundle = wxGetApp().preset_bundle; + if (bundle != nullptr && cat.filament_slot < bundle->filament_presets.size()) { + if (const Preset* preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) { + entry.setting_id = preset->setting_id; + entry.preset_name = preset->name; + } + } + // A mixed slot publishes as one unit: its definition (components, ratios, gradient) + // always travels (its Enable implies this), and the component filaments are enabled + + // Full Published by on_enable_toggle into their own entries. + if (cat.is_mixed) { + Slic3r::PublishedMaterialEntry mixed_entry; + mixed_entry.filament_type = cat.filament_type; + mixed_entry.filament_vendor = cat.filament_vendor; + mixed_entry.filament_id = cat.filament_id; + mixed_entry.slot = static_cast<int>(cat.filament_slot); + // The mix's own colour (blended) is a property of the definition, not a + // requirement row; carry it so the receiver renders the swatch. + const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); + const std::string mix_color = filament_color_hex(full_cfg, cat.filament_slot); + if (!mix_color.empty()) { + mixed_entry.publish_color = true; + mixed_entry.color = mix_color; + } + for (const std::string& key : publish_mixed_keys()) + mixed_entry.keys.emplace_back(key); + out.push_back(std::move(mixed_entry)); + continue; + } + // "Full Publish": the whole filament preset is embedded; type and colour are implicitly + // published, and the per-key rows are disabled / their state ignored. + if (cat.full_check != nullptr && cat.full_check->GetValue()) { + entry.full = true; + entry.full_keys = full_keys_for_slot(); + entry.publish_type = true; + entry.publish_type_value = normalize_filament_type(cat.filament_type); + for (size_t r : cat.rows) { + const Row& row = m_rows[r]; + if (row.kind == RowKind::Color && !row.value.IsEmpty()) { + entry.publish_color = true; + entry.color = row.value.ToStdString(); + } + } + out.push_back(std::move(entry)); + continue; + } + for (size_t r : cat.rows) { + const Row& row = m_rows[r]; + if (!row.check->GetValue()) + continue; + if (row.kind == RowKind::Color) { + entry.publish_color = true; + entry.color = row.value.ToStdString(); + } else if (row.kind == RowKind::Type) { + entry.publish_type = true; + entry.publish_type_value = row.value.ToStdString(); + } else { + entry.keys.push_back(row.key); + } + } + // Nothing checked at all -> nothing to write. + if (!entry.keys.empty() || entry.publish_type || entry.publish_color) + out.push_back(std::move(entry)); + } + return out; +} + +bool PublishSettingsDialog::category_has_selection(const Category& cat) const +{ + // A material slot publishes (or not) as a whole, gated by "Enable". + if (cat.section == Section::Material) + return cat.enable_check != nullptr && cat.enable_check->GetValue(); + // Print/Printer categories have no gate: any checked row counts. + for (const size_t r : cat.rows) + if (m_rows[r].check->GetValue()) + return true; + return false; +} + +void PublishSettingsDialog::refresh_tab_indicators() +{ + for (size_t s = 0; s < m_sections.size(); ++s) { + SectionGroup& section = m_sections[s]; + bool any = false; + for (size_t i = 0; i < section.categories.size(); ++i) { + const bool on = category_has_selection(m_categories[section.categories[i]]); + section.tabs->SetItemIndicator(static_cast<unsigned int>(i), on); + any = any || on; + } + if (section.mixed_tabs != nullptr) + for (size_t i = 0; i < section.mixed_categories.size(); ++i) { + const bool on = category_has_selection(m_categories[section.mixed_categories[i]]); + section.mixed_tabs->SetItemIndicator(static_cast<unsigned int>(i), on); + any = any || on; + } + m_outer_tabs->SetItemIndicator(static_cast<unsigned int>(s), any); + } +} + +std::vector<std::string> PublishSettingsDialog::full_keys_for_slot() const +{ + // The canonical filament preset keys minus the structural keys the published overlay must + // never touch (inherits, compatibility, *_settings_id, ...), plus filament_colour (not a + // member of Preset::filament_options). Values travel in the exported config, masked to + // this slot, and are applied on load onto the receiver's slot. + const std::set<std::string>& denylist = publish_structural_keys(); + std::vector<std::string> keys; + for (const std::string& key : Preset::filament_options()) + if (denylist.count(key) == 0) + keys.emplace_back(key); + keys.emplace_back("filament_colour"); + return keys; +} + +void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) +{ + // Rescale toolbar bitmaps and icons; collapse chevrons are vector-drawn and repaint. + m_search.msw_rescale(); + m_menu.msw_rescale(); + m_filter_box->SetIcon(m_search.bmp()); + m_menu_button->SetBitmap(m_menu.bmp()); + m_outer_tabs->Rescale(); + + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + + for (Category& cat : m_categories) { + if (cat.full_check != nullptr) + cat.full_check->Refresh(); + if (cat.enable_check != nullptr) + cat.enable_check->Refresh(); + if (cat.title_label != nullptr) + cat.title_label->Refresh(); + if (cat.filament_color_chip != nullptr) { + // Mixed pages have no header chip; this only ever fires for physical slots. + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, cat.filament_slot), std::to_string(cat.filament_slot + 1), + FromDIP(20), FromDIP(20))) { + cat.filament_color_chip->SetBitmap(*chip); + } + } + cat.scroll->FitInside(); + cat.list_sizer->Layout(); + } + + for (size_t s = 0; s < m_sections.size(); ++s) { + SectionGroup& section = m_sections[s]; + section.icon_bmp.msw_rescale(); + if (section.icon_bmp.bmp().IsOk()) + m_outer_tabs->SetItemBitmap(s, section.icon_bmp.bmp()); + section.tabs->Rescale(); + if (section.mixed_tabs != nullptr) + section.mixed_tabs->Rescale(); + } + + // Refresh the per-row Color chips at the new DPI (they carry the slot number too). + for (Row& row : m_rows) { + if (row.color_chip != nullptr && !row.value.IsEmpty()) { + const std::string chip_label = (row.inner_index < m_categories.size()) ? + std::to_string(m_categories[row.inner_index].filament_slot + 1) : + ""; + if (wxBitmap* chip = get_extruder_color_icon(row.value.ToStdString(), chip_label, FromDIP(20), FromDIP(20))) + row.color_chip->SetBitmap(*chip); + } + } + + for (size_t category_index = 0; category_index < m_categories.size(); ++category_index) { + const Category& category = m_categories[category_index]; + if (category.section != Section::Material || category.is_mixed) + continue; + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), + std::to_string(category.filament_slot + 1), FromDIP(20), FromDIP(20))) { + const SectionGroup& section = m_sections[category.group]; + const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); + if (iter != section.categories.end()) + m_sections[category.group].tabs->SetItemBitmap(static_cast<unsigned int>(iter - section.categories.begin()), *chip); + } + } + refresh_mixed_tab_bitmaps(); + + fit_to_content(); // tab buttons' min widths grew with the DPI: re-fit (incl. resize floor) + Refresh(); +} + +void PublishSettingsDialog::refresh_mixed_tab_bitmaps() +{ + // The mixed-tab composition bitmaps bake the tab strip's background colour and DPI-scaled + // text, so both a theme flip and a DPI change have to rebuild them. + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + for (SectionGroup& section : m_sections) { + if (section.mixed_tabs == nullptr) + continue; + const wxColour tab_bg = section.mixed_tabs->GetBackgroundColour(); + for (size_t i = 0; i < section.mixed_categories.size(); ++i) { + const Category& category = m_categories[section.mixed_categories[i]]; + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full, category.filament_slot, FromDIP(20), tab_bg); + if (tab_bmp.IsOk()) + section.mixed_tabs->SetItemBitmap(static_cast<unsigned int>(i), tab_bmp); + } + } +} + +void PublishSettingsDialog::on_sys_color_changed() +{ + // The mixed-tab compositions bake the tab strip's background colour: rebuild them when the + // theme changes (on_dpi_changed covers rescales). + refresh_mixed_tab_bitmaps(); + Refresh(); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp new file mode 100644 index 0000000000..f41b3e73a3 --- /dev/null +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -0,0 +1,286 @@ +#pragma once + +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" +#include "Widgets/TabCtrl.hpp" + +#include "libslic3r/PublishSettings.hpp" + +#include <wx/wx.h> +#include <wx/colour.h> +#include <wx/scrolwin.h> +#include <wx/menu.h> +#include <utility> +#include <vector> +#include <string> + +// Forward declarations (all are global classes, see Widgets/TextInput.hpp and +// Widgets/StaticLine.hpp). +class TextInput; +class StaticLine; + +namespace Slic3r { namespace GUI { + +struct PublishMaterialIdentity +{ + std::string type; + std::string vendor; + std::string id; +}; + +// One unmet dependency of an enabled mixed-filament slot: the component filament the mix uses +// would ship without its material (either the component slot is not enabled at all, or it is +// enabled with neither "Full Publish" nor the "Type" requirement checked). Slots are 0-based. +struct MixedDependencyIssue +{ + enum class Reason { Disabled, MaterialNotPublished }; + size_t mixed_slot{0}; + size_t component_slot{0}; + Reason reason{Reason::Disabled}; +}; + +// Dialog letting a model author select which settings get embedded in a 3MF. Nested tab layout +// mirroring the Process settings (Printer / Filament / Process outer tabs, category or material +// tabs inside each). Dirty settings are pre-checked and shown bold; on OK the print rows become +// "orca_published_keys" and the material rows become "orca_published_material_keys". +class PublishSettingsDialog : public DPIDialog +{ +public: + // Optional published selection (Feature A/B): when the caller supplies one (either a + // remembered session selection or the payload of a freshly loaded published 3MF) the dialog + // is seeded from it, overriding the dirty-default pre-check. A non-null pointer to an empty + // selection means "publish nothing" (an intentional empty state); a null pointer means "no + // remembered selection" (keep the dirty defaults). + PublishSettingsDialog(wxWindow* parent = nullptr, + const std::vector<std::string>* published_keys = nullptr, + const std::vector<Slic3r::PublishedMaterialEntry>* material_keys = nullptr); + ~PublishSettingsDialog(); + + // The selected print/printer setting keys (in display order); printer keys carry a '#N' + // per-extruder suffix. + std::vector<std::string> GetPublishedKeys() const; + + // The selected keys grouped per material section (base keys, no '#N' suffix). + std::vector<Slic3r::PublishedMaterialEntry> GetPublishedMaterialKeys() const; + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; + void on_sys_color_changed() override; + +private: + void fit_to_content(); + void refresh_mixed_tab_bitmaps(); + + // Which part of the settings the row/category came from. + enum class Section { Print, Printer, Material }; + + // One selectable setting row: a checkbox (setting name) plus a value label and an optional + // grey unit label. key is the full config key, possibly with a "#N" variant suffix + // (print/printer rows); material rows carry the base key. + enum class RowKind { + Setting, // a regular setting key + Color, // material colour requirement (filament_colour) + Type, // material type requirement (read-only text) + }; + struct Row + { + std::string key; + wxString category; + wxString subcategory; + wxString label; + wxString value; + wxString unit; + wxString section_title; // outer tab title, for filter matching + Section section{Section::Print}; + RowKind kind{RowKind::Setting}; + size_t outer_index{0}; + size_t inner_index{0}; + bool dirty{false}; // matches a dirty base key: pre-checked + bold + bool matches_filter{false}; // survives the active filter (computed by apply_filter) + wxCheckBox* check{nullptr}; + wxStaticText* value_label{nullptr}; + wxStaticText* unit_label{nullptr}; + wxStaticBitmap* color_chip{nullptr}; // Color rows only; swatch next to the value + wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in its tab list sizer + }; + + // An optgroup heading. Rows store indices into m_rows. + struct Subcategory + { + wxString title; + ::StaticLine* header{nullptr}; // null when the title is empty + wxSizerItem* item{nullptr}; + std::vector<size_t> rows; + }; + + // An inner TabCtrl page with its material controls and content. + struct Category + { + wxString title; + Section section{Section::Print}; + size_t group{0}; // index into m_sections / outer page + size_t source_index{0}; // stable source page or material slot index + wxPanel* page{nullptr}; + wxScrolledWindow* scroll{nullptr}; + wxBoxSizer* list_sizer{nullptr}; + wxStaticText* info{nullptr}; + wxPoint scroll_pos{0, 0}; + wxStaticBitmap* filament_color_chip{nullptr}; + wxStaticText* title_label{nullptr}; // material title (static text; Full Publish carries the label elsewhere) + // "Enable": while unchecked nothing of this slot is exported and everything below the + // header row is hidden. For physical slots the Full Publish toggle sits on a second + // line (full_line_item) visible only when enabled; for mixed slots Enable alone implies + // publishing the mix definition, so no Full Publish widget exists at all. + wxCheckBox* enable_check{nullptr}; + wxSizerItem* full_line_item{nullptr}; // sizer item of the Full Publish line (physical slots only) + // "Full Publish": while checked, the whole slot preset is serialized and its rows + // (incl. Color/Type) are disabled. + wxCheckBox* full_check{nullptr}; + // True for a mixed-color filament slot: no Material/Retraction rows; Enable publishes + // the slot's gradient/ratio definition as a whole. + bool is_mixed{false}; + // Material identity, only for Section::Material categories. + std::string filament_type; + std::string filament_vendor; + std::string filament_id; + // The author's 0-based filament slot this material section represents. + size_t filament_slot{0}; + std::vector<Subcategory> subs; + std::vector<size_t> rows; // flattened rows of this category + }; + + // Frozen snapshot of a mixed filament slot's definition for the read-only visualization + // painted on the slot's page. Plain data only: the paint handler must never touch the + // config. For gradient slots the curve is pre-sampled (t, ratio) pairs, where ratio is the + // first component's share over model height; anchors carry the raw control points. + struct MixedVisualSpec + { + bool valid{false}; + bool is_gradient{false}; + std::vector<wxColour> component_colours; // colour per component, in config order + std::vector<double> ratios; // sublayer shares summing to ~1 (non-gradient) + std::vector<double> tri_weights; // 3-component mixes: barycentric shares + std::vector<std::pair<double, double>> gradient_samples; + std::vector<std::pair<double, double>> gradient_anchors; + }; + + // One outer TabCtrl page. Category entries are its inner tabs. + struct SectionGroup + { + wxString title; // _L("Printer") / _L("Filament") / _L("Process") + Section kind{Section::Print}; // maps 1:1 to the display group + std::string icon_name; // "printer" / "filament" / "process" + ScalableBitmap icon_bmp; // tab icon next to the title; rescaled on DPI change + wxPanel* page{nullptr}; + TabCtrl* tabs{nullptr}; + // Second tab strip, below the main one, listing only the mixed-color filament slots. + // Present on the Material section only (null elsewhere). + TabCtrl* mixed_tabs{nullptr}; + wxPanel* page_host{nullptr}; + wxBoxSizer* page_host_sizer{nullptr}; + int selected_inner{-1}; + // Selected mixed tab (index into mixed_categories), valid while a mixed slot page is shown. + int selected_mixed{-1}; + std::vector<size_t> categories; // indices into m_categories (physical slots) + std::vector<size_t> mixed_categories; // indices into m_categories (mixed slots) + }; + + void build_option_model(); + // Seed the dialog from a published selection (print/printer keys + per-slot material keys): + // the supplied selection is authoritative - it is applied after the dirty pre-check and + // overrides it, so deselected dirty keys stay off. Rows/slots not present in the selection + // are left unselected. Unknown or out-of-range entries are skipped gracefully. + void apply_selection(const std::vector<std::string>& published_keys, + const std::vector<Slic3r::PublishedMaterialEntry>& material_keys); + // Frozen snapshot of a mixed slot's definition for the page visualization, resolved from + // the full config once at dialog-build time. Gradient slots pre-sample exactly what the + // slicer will print: the custom curve wins over the gradient_range endpoints over the + // 0.10 -> 0.90 default (the resolution FilamentBitmapUtils::mixed_gradient_curve mirrors). + static MixedVisualSpec make_mixed_visual_spec(const Slic3r::DynamicPrintConfig& full, size_t slot); + void apply_filter(const wxString& filter_text); + // Menu-only pseudo filters: show only the checked ("Filter selected") or only the + // unchecked ("Filter non-selected") rows. The search box keeps the user's text. + void apply_pseudo_filter(bool selected_only); + // Recompute row matches and visibility for the active filter mode. filter is the lowered + // search text; it is ignored by the pseudo modes. + void refresh_filter(const wxString& filter); + void select_all(bool value); + void select_visible(bool value); + void show_menu(wxMouseEvent& evt); + void set_row_bold(Row& row, bool bold); + // "Full Publish" toggled: disables/enables the material's rows. + void on_full_toggle(size_t category_index); + // "Enable" toggled on a material slot: reveals/hides everything below the header and, for a + // mixed slot, auto-selects its component filaments' "Enable" + "Full Publish" toggles. + void on_enable_toggle(size_t category_index); + // Whether a category currently publishes something, driving its tab's indicator dot. + // Print/Printer: any row checked. Material: the slot's "Enable" is on. + bool category_has_selection(const Category& cat) const; + // Recompute the indicator dot on every outer/inner tab from the current selection state. + void refresh_tab_indicators(); + // Unmet dependencies of enabled mixed-filament slots, one record per (mix, component) pair: + // "Enable" not checked on the component, or enabled with neither "Full Publish" nor the + // "Type" requirement row checked. Colour is deliberately ignored (the receiver renders the + // mix from its own components' colours). Sorted by mixed slot, then component slot. + std::vector<MixedDependencyIssue> unpublished_mixed_components() const; + // Read-only visualization of a mixed slot's definition (a stacked ratio bar, or the + // Material Ratio vs Model Height graph for a gradient), inserted above the info hint + // inside the category's scroll area. + void add_mixed_visual(size_t category_index, const MixedVisualSpec& spec); + // Return/create the fixed outer page for a Section kind. + size_t section_group_for(Section kind); + size_t category_index_for(const wxString& title, + Section section, + size_t group, + size_t source_index, + const PublishMaterialIdentity& identity = PublishMaterialIdentity(), + bool is_mixed = false); + size_t subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon); + void add_row_ui(const std::string& key, + const wxString& label, + const wxString& value, + const wxString& unit, + size_t category_index, + size_t subcategory_index, + RowKind kind = RowKind::Setting); + // The non-structural filament keys of a slot's preset, for a "Full Publish" entry. + std::vector<std::string> full_keys_for_slot() const; + void save_scroll_position(Category& category); + void show_outer_page(size_t section_index); + void show_inner_page(size_t section_index, int inner_index); + void show_mixed_page(size_t section_index, int mixed_index); + void on_outer_tab_changed(wxCommandEvent& event); + void on_inner_tab_changed(size_t section_index, wxCommandEvent& event); + void on_mixed_tab_changed(size_t section_index, wxCommandEvent& event); + bool row_is_visible(const Row& row) const; + void apply_visibility(); + void bind_tab_events(); + + TabCtrl* m_outer_tabs{nullptr}; + wxPanel* m_outer_host{nullptr}; + wxBoxSizer* m_outer_host_sizer{nullptr}; + int m_selected_outer{-1}; + wxBoxSizer* m_fb_sizer{nullptr}; // "All"/"None" buttons sizer + // Active filter mode: free text from the search box, or one of the menu's pseudo filters. + enum class FilterMode { Text, SelectedOnly, UnselectedOnly }; + FilterMode m_filter_mode{FilterMode::Text}; + TextInput* m_filter_box{nullptr}; + wxTextCtrl* m_filter_ctrl{nullptr}; + wxStaticBitmap* m_menu_button{nullptr}; + // Shown while a pseudo filter is active (the search box keeps the user's text, so the chip + // carries the visible state); clicking it returns to text filtering. + wxStaticText* m_pseudo_chip{nullptr}; + wxString m_info_nonsel; + wxString m_info_allsel; + wxString m_info_empty; + wxString m_info_mix; // body hint shown for a mixed slot (published as a whole) + + ScalableBitmap m_search; + ScalableBitmap m_menu; + + std::vector<Row> m_rows; + std::vector<Category> m_categories; + std::vector<SectionGroup> m_sections; +}; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 7b2d091176..029310faf9 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -1250,7 +1250,7 @@ void ConfirmBeforeSendDialog::update_text(std::vector<ConfirmBeforeSendInfo> tex else { label_item = new Label(m_vebview_release_note, text.text + " " + _L("Please refer to Wiki before use->"), LB_AUTO_WRAP); - label_item->Bind(wxEVT_LEFT_DOWN, [this, text](wxMouseEvent& e) { wxLaunchDefaultBrowser(text.wiki_url);}); + label_item->Bind(wxEVT_LEFT_DOWN, [text](wxMouseEvent& e) { wxLaunchDefaultBrowser(text.wiki_url);}); label_item->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); }); label_item->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_ARROW); }); } diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index 0b33e48ec4..04f98f06f9 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -114,7 +114,7 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox if (parent->m_mode == comDevelop) { // A new user copy of a system preset inherits from the selected system preset. const std::string parent_name = sel_preset.is_system ? sel_preset.name : sel_preset.inherits(); - const bool can_detach = !parent_name.empty(); + const bool has_parent = !parent_name.empty(); wxBoxSizer *detach_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -123,8 +123,9 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox auto detach_checkbox = new ::CheckBox(parent); detach_checkbox->SetToolTip(detach_tooltip); - auto detach_label = new wxStaticText(parent, wxID_ANY, _L("Detach from parent")); + auto detach_label = new wxStaticText(parent, wxID_ANY, has_parent ? _L("Detach from parent") : _L("Save without parent")); detach_label->SetFont(::Label::Body_14); + detach_label->SetForegroundColour(wxColour("#363636")); detach_label->SetToolTip(detach_tooltip); detach_sizer->Add(detach_checkbox, 0, wxALIGN_LEFT | wxLEFT, BORDER_W); @@ -132,36 +133,31 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox sizer->Add(detach_sizer, 0, wxEXPAND | wxTOP, BORDER_W); sizer->AddSpacer(FromDIP(5)); - const wxString parent_text = can_detach ? from_u8(parent_name) : _L("Unique preset"); + const wxString parent_text = has_parent ? from_u8(parent_name) : _L("Unique preset"); auto parent_label = new wxStaticText(parent, wxID_ANY, parent_text); parent_label->SetFont(::Label::Body_12); parent_label->SetForegroundColour(wxColour("#6B6B6B")); - parent_label->SetToolTip(can_detach ? _L("Parent preset") : _L("This preset does not inherit from another preset.")); + parent_label->SetToolTip(has_parent ? _L("Parent preset") : _L("This preset does not inherit from another preset.")); sizer->Add(parent_label, 0, wxEXPAND | wxLEFT, BORDER_W + FromDIP(24)); sizer->AddSpacer(FromDIP(5)); - if (!can_detach) { - detach_checkbox->Disable(); - detach_label->SetForegroundColour(wxColour("#6B6B6B")); - } - else { - // Set initial state (unchecked by default) - detach_checkbox->SetValue(m_detach); - // Bind the checkbox event to update the detach state for this item - detach_checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, detach_checkbox](wxCommandEvent&) { m_detach = detach_checkbox->GetValue(); }); + // Set initial state (unchecked by default) + detach_checkbox->SetValue(m_detach); + // Bind the checkbox event to update the detach state for this item + detach_checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, detach_checkbox](wxCommandEvent& event) { + m_detach = detach_checkbox->GetValue(); + event.Skip(); // Let CheckBox update its bitmap for the new state. + }); - detach_label->SetForegroundColour(wxColour("#363636")); - - auto on_toggle = [this, detach_checkbox]() { - detach_checkbox->SetValue(!detach_checkbox->GetValue()); - wxCommandEvent ev(wxEVT_TOGGLEBUTTON, detach_checkbox->GetId()); - ev.SetEventObject(detach_checkbox); - detach_checkbox->GetEventHandler()->ProcessEvent(ev); - }; - detach_label->Bind(wxEVT_LEFT_DOWN, [on_toggle](wxMouseEvent& e) {if(!e.LeftDClick()) on_toggle();}); - detach_label->Bind(wxEVT_LEFT_DCLICK, [on_toggle](wxMouseEvent& e) {on_toggle();}); - } + auto on_toggle = [detach_checkbox]() { + detach_checkbox->SetValue(!detach_checkbox->GetValue()); + wxCommandEvent ev(wxEVT_TOGGLEBUTTON, detach_checkbox->GetId()); + ev.SetEventObject(detach_checkbox); + detach_checkbox->GetEventHandler()->ProcessEvent(ev); + }; + detach_label->Bind(wxEVT_LEFT_DOWN, [on_toggle](wxMouseEvent& e) {if(!e.LeftDClick()) on_toggle();}); + detach_label->Bind(wxEVT_LEFT_DCLICK, [on_toggle](wxMouseEvent& e) {on_toggle();}); } m_radio_group->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, [this](wxCommandEvent &e) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index ac56e35ac3..629aef7296 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -2176,7 +2176,7 @@ void SelectMachineDialog::on_reselect_dialog_btn_clicked(wxMouseEvent&) best_pos_map[slot.id] = pos.value(); } } - m_best_pos_dialog->Update(obj, best_pos_map, m_ams_mapping_result, text); + m_best_pos_dialog->UpdateInfo(obj, best_pos_map, m_ams_mapping_result, text); m_best_pos_dialog->ShowModal(); } @@ -2201,7 +2201,7 @@ void SelectMachineDialog::update_best_pos_dialog(wxCommandEvent& evt) best_pos_map[slot.id] = pos.value(); } } - m_best_pos_dialog->Update(obj_, best_pos_map, m_ams_mapping_result, text); + m_best_pos_dialog->UpdateInfo(obj_, best_pos_map, m_ams_mapping_result, text); } void SelectMachineDialog::show_status(PrintDialogStatus status, std::vector<wxString> params, wxString wiki_url) @@ -3073,7 +3073,7 @@ static bool _HasExt(const std::vector<FilamentInfo> &ams_mapping_result) { }; for (const auto &info : ams_mapping_result) { - if (info.ams_id == VIRTUAL_AMS_MAIN_ID_STR || info.ams_id == VIRTUAL_AMS_DEPUTY_ID_STR && !info.ams_id.empty()) { + if (info.ams_id == VIRTUAL_AMS_MAIN_ID_STR || (info.ams_id == VIRTUAL_AMS_DEPUTY_ID_STR && !info.ams_id.empty())) { return true; } } @@ -3428,7 +3428,7 @@ void SelectMachineDialog::show_timelapse_storage_dialog(MachineObject* obj) if (show_cleanup_btn) { auto* btn_cleanup = new Button(&dlg, _L("Clean Up")); - btn_cleanup->Bind(wxEVT_BUTTON, [&dlg, ID_CLEANUP](wxCommandEvent&) { dlg.EndModal(ID_CLEANUP); }); + btn_cleanup->Bind(wxEVT_BUTTON, [&dlg](wxCommandEvent&) { dlg.EndModal(ID_CLEANUP); }); btn_sizer->Add(btn_cleanup, 0, wxEXPAND); } @@ -3845,8 +3845,12 @@ int SelectMachineDialog::update_print_required_data(Slic3r::DynamicPrintConfig c m_required_data_config = config; m_required_data_model = model; //m_required_data_plate_data_list = plate_data_list; + auto* agent = wxGetApp().getAgent(); for (auto i = 0; i < plate_data_list.size(); i++) { if (!plate_data_list[i]->gcode_file.empty()) { + if (agent) + for (auto& info : plate_data_list[i]->slice_filaments_info) + info.filament_id = agent->to_orca_filament_id(info.filament_id); m_required_data_plate_data_list.push_back(plate_data_list[i]); } } @@ -5051,8 +5055,11 @@ void SelectMachineDialog::update_show_status(MachineObject* obj_) const auto& warning_tpu_filaments = DevPrinterConfigUtil::get_value_from_config<std::vector<std::string>>(obj_->printer_type, "auto_on_cali_warning_tpu_filaments"); if (!warning_tpu_filaments.empty()) { + auto* agent = wxGetApp().getAgent(); for (const auto& fila : m_ams_mapping_result) { - if (std::find(warning_tpu_filaments.begin(), warning_tpu_filaments.end(), fila.filament_id) != warning_tpu_filaments.end()) { + // fila.filament_id is our OF id; the printer config list holds the printer's own. + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(fila.filament_id) : fila.filament_id; + if (std::find(warning_tpu_filaments.begin(), warning_tpu_filaments.end(), printer_filament_id) != warning_tpu_filaments.end()) { show_status(PrintDialogStatus::PrintStatusTPUUnsuggestCali, { _L("If 'Dynamic Flow Calibration' is set to Auto/On, the system will use the manual calibration value or the default value and skip the flow calibration process. You can perform a manual flow calibration for TPU filament on the 'Calibration' page.") }); break; @@ -5208,9 +5215,12 @@ bool SelectMachineDialog::can_support_pa_auto_cali() std::vector<std::string> unsupport_auto_cali_filaments = DevPrinterConfigUtil::get_unsupport_auto_cali_filaments(obj->printer_type); if (!unsupport_auto_cali_filaments.empty()) { + auto* agent = wxGetApp().getAgent(); auto iter = std::find_if(m_filaments.begin(), m_filaments.end(), - [&unsupport_auto_cali_filaments](const FilamentInfo &item) { - auto iter = std::find(unsupport_auto_cali_filaments.begin(), unsupport_auto_cali_filaments.end(), item.filament_id); + [&unsupport_auto_cali_filaments, agent](const FilamentInfo &item) { + // item.filament_id is our OF id; the printer config list holds the printer's own. + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(item.filament_id) : item.filament_id; + auto iter = std::find(unsupport_auto_cali_filaments.begin(), unsupport_auto_cali_filaments.end(), printer_filament_id); return iter != unsupport_auto_cali_filaments.end(); }); @@ -5497,7 +5507,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() first_enabled_id = extruder; } - item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) {}); + item->Bind(wxEVT_LEFT_UP, [materials](wxMouseEvent &e) {}); item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) { if (!item->m_enable) {return;} if (!m_check_flag || m_print_status == PrintDialogStatus::PrintStatusUnsupportedPrinter) { return; } /*STUDIO-11301*/ @@ -6128,8 +6138,8 @@ void SelectMachineDialog::set_default_from_sdcard() first_enabled_id = fo.id; } - item->Bind(wxEVT_LEFT_UP, [this, item, materials](wxMouseEvent& e) {}); - item->Bind(wxEVT_LEFT_DOWN, [this, obj_, item, materials, diameters_count, fo](wxMouseEvent& e) { + item->Bind(wxEVT_LEFT_UP, [materials](wxMouseEvent& e) {}); + item->Bind(wxEVT_LEFT_DOWN, [this, obj_, item, materials, fo](wxMouseEvent& e) { if (!item->m_enable) {return;} if (!m_check_flag || m_print_status == PrintDialogStatus::PrintStatusUnsupportedPrinter) { return; } /*STUDIO-11301*/ diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 46d6adf4f4..6a3acce54c 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -662,7 +662,6 @@ private: ScalableButton* m_button_question { nullptr }; wxStaticBitmap* m_bed_image{ nullptr }; - Label* m_text_bed_type; }; diff --git a/src/slic3r/GUI/SelectMachinePop.cpp b/src/slic3r/GUI/SelectMachinePop.cpp index df0a566917..9b34e74f23 100644 --- a/src/slic3r/GUI/SelectMachinePop.cpp +++ b/src/slic3r/GUI/SelectMachinePop.cpp @@ -567,7 +567,7 @@ void SelectMachinePopup::update_other_devices() } } - op->Bind(EVT_CONNECT_LAN_PRINT, [this, mobj](wxCommandEvent &e) { + op->Bind(EVT_CONNECT_LAN_PRINT, [mobj](wxCommandEvent &e) { if (mobj) { if (mobj->is_lan_mode_printer()) { ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); @@ -579,7 +579,7 @@ void SelectMachinePopup::update_other_devices() } }); - op->Bind(EVT_BIND_MACHINE, [this, mobj](wxCommandEvent &e) { + op->Bind(EVT_BIND_MACHINE, [mobj](wxCommandEvent &e) { BindMachineDialog dlg; dlg.update_machine_info(mobj); int dlg_result = wxID_CANCEL; @@ -700,7 +700,7 @@ void SelectMachinePopup::update_user_devices() op->set_printer_state(PrinterState::LOCK); } } - op->Bind(EVT_UNBIND_MACHINE, [this, dev, mobj](wxCommandEvent& e) { + op->Bind(EVT_UNBIND_MACHINE, [dev, mobj](wxCommandEvent& e) { dev->set_selected_machine(""); if (mobj) { AppConfig* config = wxGetApp().app_config; @@ -720,7 +720,7 @@ void SelectMachinePopup::update_user_devices() } else { op->show_printer_bind(true, PrinterBindState::ALLOW_UNBIND); - op->Bind(EVT_UNBIND_MACHINE, [this, mobj, dev](wxCommandEvent& e) { + op->Bind(EVT_UNBIND_MACHINE, [mobj, dev](wxCommandEvent& e) { // show_unbind_dialog UnBindMachineDialog dlg; dlg.update_machine_info(mobj); @@ -747,7 +747,7 @@ void SelectMachinePopup::update_user_devices() } } - op->Bind(EVT_CONNECT_LAN_PRINT, [this, mobj](wxCommandEvent &e) { + op->Bind(EVT_CONNECT_LAN_PRINT, [mobj](wxCommandEvent &e) { if (mobj) { if (mobj->is_lan_mode_printer()) { ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); @@ -759,7 +759,7 @@ void SelectMachinePopup::update_user_devices() } }); - op->Bind(EVT_EDIT_PRINT_NAME, [this, mobj](wxCommandEvent &e) { + op->Bind(EVT_EDIT_PRINT_NAME, [mobj](wxCommandEvent &e) { EditDevNameDialog dlg; dlg.set_machine_obj(mobj); dlg.ShowModal(); diff --git a/src/slic3r/GUI/SelectMachinePop.hpp b/src/slic3r/GUI/SelectMachinePop.hpp index 764ffd6af5..76d38be522 100644 --- a/src/slic3r/GUI/SelectMachinePop.hpp +++ b/src/slic3r/GUI/SelectMachinePop.hpp @@ -181,13 +181,11 @@ private: PinCodePanel* m_panel_direct_connection{nullptr}; wxWindow* m_placeholder_panel{nullptr}; HyperLink* m_hyperlink{nullptr}; // ORCA - wxBoxSizer * m_sizer_body{nullptr}; wxBoxSizer * m_sizer_my_devices{nullptr}; wxBoxSizer * m_sizer_other_devices{nullptr}; wxBoxSizer * m_sizer_search_bar{nullptr}; wxSearchCtrl* m_search_bar{nullptr}; wxScrolledWindow * m_scrolledWindow{nullptr}; - wxWindow * m_panel_body{nullptr}; wxTimer * m_refresh_timer{nullptr}; std::vector<MachinePanel*> m_user_list_machine_panel; std::vector<MachinePanel*> m_other_list_machine_panel; diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index b6d7abde21..84f4a0b836 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1273,10 +1273,9 @@ void Selection::translate(const Vec3d &displacement, TransformationType transfor const Polygons bed_polys{wxGetApp().plater()->get_partplate_list().get_plate(plate_idx)->get_shared_printable_polygon()}; Vec3d tower_origin = m_cache.volumes_data[i].get_volume_position(); Vec3d actual_displacement = displacement; - bool show_read_wipe_tower = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx)->fff_print()->is_step_done(psWipeTower); - float brim_width = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("prime_tower_brim_width"); - - const double margin = show_read_wipe_tower ? WIPE_TOWER_MARGIN : brim_width + 0.5; // 0.5 is the line width of wipe tower + // Both preview volumes carry the brim in their bounding box, and the release + // clamp holds it WIPE_TOWER_MARGIN inside — same margin, so drops don't snap. + const double margin = WIPE_TOWER_MARGIN; actual_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()) diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 7b7c42922f..3a52caec3f 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -1468,7 +1468,7 @@ void SendMultiMachinePage::sync_ams_list() item->set_ams_info(wxColour("#CECECE"), "Ext", 0, std::vector<wxColour>()); m_ams_list_sizer->Add(item, 0, wxALL, FromDIP(4)); - item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent& e) {}); + item->Bind(wxEVT_LEFT_UP, [materials](wxMouseEvent& e) {}); item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent& e) { MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index a63d96ffce..c4db0423ab 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -1391,7 +1391,7 @@ void SendToPrinterDialog::show_status(PrintDialogStatus status, std::vector<wxSt update_print_status_msg(wxEmptyString, true, true); m_connecting_panel->Show(); m_animaicon->Stop(); - m_animaicon->Enable(); + m_animaicon->ShowEnabledIcon(); Layout(); Enable_Send_Button(false); diff --git a/src/slic3r/GUI/SendToPrinter.hpp b/src/slic3r/GUI/SendToPrinter.hpp index 93215c4e06..24e483ae33 100644 --- a/src/slic3r/GUI/SendToPrinter.hpp +++ b/src/slic3r/GUI/SendToPrinter.hpp @@ -55,7 +55,6 @@ private: void init_timer(); int m_print_plate_idx; - int m_current_filament_id; int m_print_error_code = 0; int timeout_count = 0; int m_connect_try_times = 0; @@ -77,7 +76,6 @@ private: TextInput* m_rename_input{ nullptr }; wxSimplebook* m_rename_switch_panel{ nullptr }; Plater* m_plater{ nullptr }; - wxStaticBitmap* m_staticbitmap{ nullptr }; ThumbnailPanel* m_thumbnailPanel{ nullptr }; ComboBox* m_comboBox_printer{ nullptr }; Button* m_rename_button{ nullptr }; @@ -97,8 +95,6 @@ private: wxPanel * m_connecting_panel{nullptr}; wxSimplebook* m_simplebook{ nullptr }; wxStaticText* m_statictext_finish{ nullptr }; - wxStaticText* m_stext_sending{ nullptr }; - wxStaticText* m_staticText_bed_title{ nullptr }; wxStaticText* m_statictext_printer_msg{ nullptr }; wxStaticText * m_connecting_printer_msg{nullptr}; wxStaticText* m_stext_printer_title{ nullptr }; @@ -115,7 +111,6 @@ private: wxBoxSizer* sizer_thumbnail; wxBoxSizer* m_sizer_scrollable_region; wxBoxSizer* m_sizer_main; - wxStaticText* m_file_name; PrintDialogStatus m_print_status{ PrintStatusInit }; AnimaIcon * m_animaicon{nullptr}; @@ -134,8 +129,6 @@ private: std::vector<RadioBox *> m_storage_radioBox; std::string m_selected_storage; bool m_if_has_sdcard; - bool m_waiting_support{ false }; - bool m_waiting_enable{ false }; std::vector<std::string> m_ability_list; public: diff --git a/src/slic3r/GUI/SkipPartCanvas.cpp b/src/slic3r/GUI/SkipPartCanvas.cpp index 5e01b8140f..7b7db213b1 100644 --- a/src/slic3r/GUI/SkipPartCanvas.cpp +++ b/src/slic3r/GUI/SkipPartCanvas.cpp @@ -287,7 +287,7 @@ void SkipPartCanvas::Render() glDisable(GL_CULL_FACE); glEnable(GL_STENCIL_TEST); - auto draw_shape = [this, border_w](const int stencil, const PartState part_type, const ColorRGB& rgb) { + auto draw_shape = [this](const int stencil, const PartState part_type, const ColorRGB& rgb) { glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glStencilFunc(GL_ALWAYS, stencil, 0xFF); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); @@ -335,7 +335,7 @@ void SkipPartCanvas::Render() // stencil3 => skipped draw_shape(skipped_stencil, psSkipped, ColorRGB{95 / 255.f, 95 / 255.f, 95 / 255.f}); - auto draw_mask = [this, view_rect, border_w, w, h](const int stencil, const PartState part_type, + auto draw_mask = [this, view_rect](const int stencil, const PartState part_type, const ColorRGB& background, const ColorRGB& line, const ColorRGB& bound) { glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glStencilFunc(GL_EQUAL, stencil, 0xFF); diff --git a/src/slic3r/GUI/SliceInfoPanel.cpp b/src/slic3r/GUI/SliceInfoPanel.cpp index 37a3ba698d..a7e436c0ff 100644 --- a/src/slic3r/GUI/SliceInfoPanel.cpp +++ b/src/slic3r/GUI/SliceInfoPanel.cpp @@ -115,7 +115,7 @@ SliceInfoPopup::SliceInfoPopup(wxWindow *parent, wxBitmap bmp, BBLSliceInfo *inf f_sizer->Add(f_type, 0, wxEXPAND | wxALL, FromDIP(5)); f_sizer->Add(f_used_g, 0, wxEXPAND | wxALL, FromDIP(5)); grid_sizer->Add(f_sizer, 0, wxEXPAND, 0); - f_type->Bind(wxEVT_LEFT_DOWN, [this](auto &e) {}); + f_type->Bind(wxEVT_LEFT_DOWN, [](auto &e) {}); } } topSizer->Add(grid_sizer, 0, wxALL, FromDIP(5)); diff --git a/src/slic3r/GUI/SliceInfoPanel.hpp b/src/slic3r/GUI/SliceInfoPanel.hpp index 8f1710022b..09708d68e4 100644 --- a/src/slic3r/GUI/SliceInfoPanel.hpp +++ b/src/slic3r/GUI/SliceInfoPanel.hpp @@ -28,7 +28,6 @@ public: private: wxScrolledWindow *m_panel; - BBLSliceInfo *m_info { nullptr }; void OnMouse(wxMouseEvent &event); void OnSize(wxSizeEvent &event); diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index 6d7c6d7ecd..539da41024 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -259,8 +259,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas // ImVec2 view_dailytips_text_pos = m_window_pos + ImVec2(text_left_margin_x, m_window_height / 2.0f + m_line_height * 0.2f); // bbl_render_left_sign(imgui, m_window_width, m_window_height, m_window_pos.x + m_window_width, m_window_pos.y); - // render_text(text_pos); - // render_close_button(button_pos, button_size); + // render_progress_text(text_pos); + // render_progress_close_button(button_pos, button_size); // render_show_dailytips(view_dailytips_text_pos); //} @@ -278,8 +278,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas ImVec2 button_pos = child_window_pos + ImVec2(progress_panel_width - button_size.x, progress_panel_height - text_bottom - button_size.y / 2.0f); ImVec2 text_pos = ImVec2(progress_bar_pos.x, progress_bar_pos.y - m_line_height * (1.2f + m_lines_count - 1)); - render_text(text_pos); - render_close_button(button_pos, button_size); + render_progress_text(text_pos); + render_progress_close_button(button_pos, button_size); if (m_sp_state == SlicingProgressState::SP_PROGRESS) { render_bar(progress_bar_pos, progress_bar_size); render_cancel_button(button_pos, button_size); @@ -319,7 +319,7 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas ImGui::PopStyleColor(3); } -void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_text(const ImVec2& pos) +void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_progress_text(const ImVec2& pos) { ImGuiWrapper& imgui = *wxGetApp().imgui(); float scale = imgui.get_font_size() / 15.0f; @@ -462,7 +462,7 @@ void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_cance } } -void NotificationManager::SlicingProgressNotification::render_close_button(const ImVec2& pos, const ImVec2& size) +void NotificationManager::SlicingProgressNotification::render_progress_close_button(const ImVec2& pos, const ImVec2& size) { if (m_sp_state == SlicingProgressState::SP_CANCELLED || m_sp_state == SlicingProgressState::SP_COMPLETED) { ImGuiWrapper& imgui = *wxGetApp().imgui(); diff --git a/src/slic3r/GUI/SlicingProgressNotification.hpp b/src/slic3r/GUI/SlicingProgressNotification.hpp index 44f2bbd32b..6a7ede1e2e 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.hpp +++ b/src/slic3r/GUI/SlicingProgressNotification.hpp @@ -53,10 +53,10 @@ protected: void init() override; void render(GLCanvas3D& canvas, float initial_y, bool move_from_overlay, float overlay_width, float right_margin) override; /* PARAMS: pos is relative to screen */ - void render_text(const ImVec2& pos); + void render_progress_text(const ImVec2& pos); void render_bar(const ImVec2& pos, const ImVec2& size); void render_cancel_button(const ImVec2& pos, const ImVec2& size); - void render_close_button(const ImVec2& pos, const ImVec2& size); + void render_progress_close_button(const ImVec2& pos, const ImVec2& size); void render_dailytips_panel(const ImVec2& pos, const ImVec2& size); void render_show_dailytips(const ImVec2& pos); diff --git a/src/slic3r/GUI/StepMeshDialog.cpp b/src/slic3r/GUI/StepMeshDialog.cpp index b1a8e2319a..c6131b7bfa 100644 --- a/src/slic3r/GUI/StepMeshDialog.cpp +++ b/src/slic3r/GUI/StepMeshDialog.cpp @@ -167,7 +167,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line e.Skip(); })); // textctrl bind slider - linear_input->Bind(wxEVT_TEXT, ([this, linear_slider, linear_input](wxCommandEvent& e) { + linear_input->Bind(wxEVT_TEXT, ([linear_slider, linear_input](wxCommandEvent& e) { double slider_value_long; int slider_value; wxString value = linear_input->GetTextCtrl()->GetValue(); @@ -222,7 +222,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line e.Skip(); })); // textctrl bind slider - angle_input->Bind(wxEVT_TEXT, ([this, angle_slider, angle_input](wxCommandEvent& e) { + angle_input->Bind(wxEVT_TEXT, ([angle_slider, angle_input](wxCommandEvent& e) { double slider_value_long; int slider_value; wxString value = angle_input->GetTextCtrl()->GetValue(); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 9515ecc116..7f075dbbfa 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -631,7 +631,6 @@ void SyncAmsInfoDialog::updata_ui_when_priner_not_same() { SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Synchronize AMS Filament Information"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_input_info(info) - , m_export_3mf_cancel(false) , m_mapping_popup(AmsMapingPopup(this,true)) , m_mapping_tip_popup(AmsMapingTipPopup(this)) , m_mapping_tutorial_popup(AmsTutorialPopup(this)) @@ -679,7 +678,7 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : wxBoxSizer *loading_Sizer = new wxBoxSizer(wxHORIZONTAL); m_gif_ctrl = new wxAnimationCtrl(m_loading_page, wxID_ANY, wxNullAnimation, wxDefaultPosition, wxDefaultSize, wxAC_DEFAULT_STYLE); - auto gif_path = Slic3r::var("loading.gif").c_str(); + const wxString gif_path = from_u8(Slic3r::var("loading.gif")); if (m_gif_ctrl->LoadFile(gif_path)){ m_gif_ctrl->SetSize(m_gif_ctrl->GetAnimation().GetSize()); m_gif_ctrl->Play(); @@ -1113,7 +1112,7 @@ void SyncAmsInfoDialog::init_bind() e.Skip(); }); - Bind(EVT_CONNECT_LAN_MODE_PRINT, [this](wxCommandEvent &e) { + Bind(EVT_CONNECT_LAN_MODE_PRINT, [](wxCommandEvent &e) { if (e.GetInt() == 0) { DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -1548,7 +1547,7 @@ bool SyncAmsInfoDialog::is_nozzle_type_match(DevExtderSystem data, wxString &err auto sai_nz_pt = wxGetApp().preset_bundle->printers.get_edited_preset().get_printer_type(wxGetApp().preset_bundle); if (target_machine_nozzle_id == DEPUTY_EXTRUDER_ID) { pos = _L(DevPrinterConfigUtil::get_toolhead_display_name(sai_nz_pt, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase)); - } else if ((target_machine_nozzle_id == MAIN_EXTRUDER_ID)) { + } else if (target_machine_nozzle_id == MAIN_EXTRUDER_ID) { pos = _L(DevPrinterConfigUtil::get_toolhead_display_name(sai_nz_pt, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase)); } @@ -2644,7 +2643,7 @@ void SyncAmsInfoDialog::reset_and_sync_ams_list() item_index++; contronal_index++; - item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) {}); + item->Bind(wxEVT_LEFT_UP, [materials](wxMouseEvent &e) {}); item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder, item_index_str](wxMouseEvent &e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index b0868f8c58..6f86af6032 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -21,15 +21,11 @@ class SyncAmsInfoDialog : public DPIDialog bool m_only_exist_ext_spool_flag{false}; int m_current_filament_id{0}; int m_print_plate_idx{0}; - int m_print_plate_total{0}; int m_timeout_count{0}; int m_print_error_code{0}; bool m_is_in_sending_mode{false}; bool m_ams_mapping_res{false}; bool m_ams_mapping_valid{false}; - bool m_export_3mf_cancel{false}; - bool m_is_canceled{false}; - bool m_is_rename_mode{false}; bool m_check_flag{false}; PrintPageMode m_print_page_mode{PrintPageMode::PrintPageModePrepare}; std::string m_print_error_msg; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 0eb5c9281d..2dedb23365 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -7,6 +7,7 @@ #include "libslic3r/FilamentMixer.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/PublishSettings.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" #include "Search.hpp" @@ -459,7 +460,7 @@ void Tab::create_preset_tab() // tree m_tabctrl = new TabCtrl(panel, wxID_ANY, wxDefaultPosition, wxSize(20 * m_em_unit, -1), wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | wxTR_FULL_ROW_HIGHLIGHT); - m_tabctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable right select + m_tabctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable right select m_tabctrl->SetFont(Label::Body_14); //m_left_sizer->Add(m_tabctrl, 1, wxEXPAND); const int img_sz = int(32 * scale_factor + 0.5f); @@ -5130,7 +5131,7 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("adaptive_bed_mesh_margin", "printer_basic_information_adaptive_bed_mesh#mesh-margin"); optgroup = page->new_optgroup(L("Accessory"), "param_accessory"); - optgroup->append_single_option_line("nozzle_type", "printer_basic_information_accessory#nozzle-type"); + optgroup->append_single_option_line("nozzle_type", "printer_basic_information_accessory#nozzle-type", 0); optgroup->append_single_option_line("nozzle_hrc", "printer_basic_information_accessory#nozzle-hrc"); optgroup->append_single_option_line("auxiliary_fan", "printer_basic_information_accessory#auxiliary-part-cooling-fan"); optgroup->append_single_option_line("fan_direction"); @@ -5699,26 +5700,16 @@ if (is_marlin_flavor) optgroup->append_single_option_line("extruder_offset", "printer_extruder_basic_information#extruder-offset-position", extruder_idx); //BBS: don't show retract related config menu in machine page + // These optgroups are built from publishable_printer_retraction/z_hop_options() so the + // published-3MF printer allowlist (their union in libslic3r/PublishSettings.hpp) can + // never drift from what the machine page actually shows. optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); - optgroup->append_single_option_line("retraction_length", "printer_extruder_retraction#length", extruder_idx); - optgroup->append_single_option_line("retract_restart_extra", "printer_extruder_retraction#extra-length-on-restart", extruder_idx); - optgroup->append_single_option_line("retraction_speed", "printer_extruder_retraction#retraction-speed", extruder_idx); - optgroup->append_single_option_line("deretraction_speed", "printer_extruder_retraction#deretraction-speed", extruder_idx); - optgroup->append_single_option_line("retraction_minimum_travel", "printer_extruder_retraction#travel-distance-threshold", extruder_idx); - optgroup->append_single_option_line("retract_when_changing_layer", "printer_extruder_retraction#retract-on-layer-change", extruder_idx); - optgroup->append_single_option_line("wipe", "printer_extruder_retraction#wipe-while-retracting", extruder_idx); - optgroup->append_single_option_line("wipe_distance", "printer_extruder_retraction#wipe-distance", extruder_idx); - optgroup->append_single_option_line("retract_before_wipe", "printer_extruder_retraction#retract-amount-before-wipe", extruder_idx); - // Orca - optgroup->append_single_option_line("retract_after_wipe", "printer_extruder_retraction#retract-amount-after-wipe", extruder_idx); + for (const PublishablePrinterOption& opt : publishable_printer_retraction_options()) + optgroup->append_single_option_line(opt.key, opt.icon, extruder_idx); optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement"); - optgroup->append_single_option_line("retract_lift_enforce", "printer_extruder_z_hop#on-surfaces", extruder_idx); - optgroup->append_single_option_line("z_hop_types", "printer_extruder_z_hop#z-hop-type", extruder_idx); - optgroup->append_single_option_line("z_hop", "printer_extruder_z_hop#z-hop-height", extruder_idx); - optgroup->append_single_option_line("travel_slope", "printer_extruder_z_hop#traveling-angle", extruder_idx); - optgroup->append_single_option_line("retract_lift_above", "printer_extruder_z_hop#only-lift-z-above", extruder_idx); - optgroup->append_single_option_line("retract_lift_below", "printer_extruder_z_hop#only-lift-z-below", extruder_idx); + for (const PublishablePrinterOption& opt : publishable_printer_z_hop_options()) + optgroup->append_single_option_line(opt.key, opt.icon, extruder_idx); optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change"); optgroup->append_single_option_line("retract_length_toolchange", "printer_extruder_retraction#retraction-when-switching-materials", extruder_idx); @@ -6075,7 +6066,7 @@ void TabPrinter::toggle_options() auto nozzle_volumes = m_preset_bundle->project_config.option<ConfigOptionEnumsGeneric>("nozzle_volume_type"); auto extruders = m_config->option<ConfigOptionEnumsGeneric>("extruder_type"); auto get_index_for_extruder = - [this, &extruders, &nozzle_volumes](int extruder_id, int stride = 1) { + [this, &extruders](int extruder_id, int stride = 1) { return m_config->get_index_for_extruder(extruder_id + 1, "printer_extruder_id", ExtruderType(extruders->values[extruder_id]), get_actual_nozzle_volume_type(extruder_id), "printer_extruder_variant", stride); }; @@ -7713,18 +7704,18 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep this->update_changed_ui(); }; - deps.checkbox_title->Bind(wxEVT_LEFT_DOWN,([this, &deps, on_toggle](wxMouseEvent& e) { + deps.checkbox_title->Bind(wxEVT_LEFT_DOWN,([&deps, on_toggle](wxMouseEvent& e) { if (e.GetEventType() == wxEVT_LEFT_DCLICK) return; on_toggle(!deps.checkbox->GetValue()); e.Skip(); })); - deps.checkbox_title->Bind(wxEVT_LEFT_DCLICK,([this, &deps, on_toggle](wxMouseEvent& e) { + deps.checkbox_title->Bind(wxEVT_LEFT_DCLICK,([&deps, on_toggle](wxMouseEvent& e) { on_toggle(!deps.checkbox->GetValue()); e.Skip(); })); - deps.checkbox->Bind(wxEVT_TOGGLEBUTTON, ([this, on_toggle](wxCommandEvent& e) { + deps.checkbox->Bind(wxEVT_TOGGLEBUTTON, ([on_toggle](wxCommandEvent& e) { on_toggle(e.IsChecked()); e.Skip(); }), deps.checkbox->GetId()); @@ -8306,7 +8297,7 @@ void Tab::switch_excluder(int extruder_id, bool reload) return; } auto get_index_for_extruder = - [this, &extruders, &nozzle_volumes, variant_keys = extruder_variant_keys[m_type >= Preset::TYPE_COUNT ? Preset::TYPE_PRINT : m_type]](int extruder_id, int stride = 1) { + [this, &extruders, variant_keys = extruder_variant_keys[m_type >= Preset::TYPE_COUNT ? Preset::TYPE_PRINT : m_type]](int extruder_id, int stride = 1) { return m_config->get_index_for_extruder(extruder_id + 1, variant_keys.first, ExtruderType(extruders->values[extruder_id]), get_actual_nozzle_volume_type(extruder_id), variant_keys.second, stride); }; @@ -8363,7 +8354,7 @@ void Tab::sync_excluder() auto nozzle_volumes = m_preset_bundle->project_config.option<ConfigOptionEnumsGeneric>("nozzle_volume_type"); auto extruders = printer_preset.config.option<ConfigOptionEnumsGeneric>("extruder_type"); auto get_index_for_extruder = - [this, &extruders, &nozzle_volumes, variant_keys = extruder_variant_keys[m_type >= Preset::TYPE_COUNT ? Preset::TYPE_PRINT : m_type]](int extruder_id, NozzleVolumeType nozzle_type) { + [this, &extruders, variant_keys = extruder_variant_keys[m_type >= Preset::TYPE_COUNT ? Preset::TYPE_PRINT : m_type]](int extruder_id, NozzleVolumeType nozzle_type) { return m_config->get_index_for_extruder(extruder_id + 1, variant_keys.first, ExtruderType(extruders->values[extruder_id]), nozzle_type, variant_keys.second); }; @@ -8404,7 +8395,7 @@ void Tab::sync_excluder() } } if (config_to_apply.empty()) { - MessageDialog md(wxGetApp().plater(), _L("No modifications need to be copied."), _L("Copy paramters"), wxICON_INFORMATION | wxOK); + MessageDialog md(wxGetApp().plater(), _L("No modifications need to be copied."), _L("Copy parameters"), wxICON_INFORMATION | wxOK); md.ShowModal(); return; } @@ -8412,7 +8403,7 @@ void Tab::sync_excluder() std::string pt = m_preset_bundle->printers.get_edited_preset().get_printer_type(m_preset_bundle); std::string active_nozzle_name = DevPrinterConfigUtil::get_toolhead_display_name(pt, active_index, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase); std::string other_nozzle_name = DevPrinterConfigUtil::get_toolhead_display_name(pt, 1 - active_index, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase); - wxString title = wxString::Format(_L("Modify paramters of %s"), _L(active_nozzle_name)); + wxString title = wxString::Format(_L("Modify parameters of %s"), _L(active_nozzle_name)); wxString header = wxString::Format(_L("Do you want to modify the following parameters of the %s to that of the %s?"), _L(active_nozzle_name), _L(other_nozzle_name)); UnsavedChangesDialog dlg(title, header, &config_origin, from_index, dest_index, active_index == 0, active_nozzle); diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 5069b76417..30a06b4eb5 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -30,7 +30,6 @@ #include <memory> //#include "BedShapeDialog.hpp" -#include "Event.hpp" #include "wxExtensions.hpp" #include "ConfigManipulation.hpp" #include "OptionsGroup.hpp" @@ -38,7 +37,6 @@ //BBS: GUI refactor #include "Notebook.hpp" #include "ParamsPanel.hpp" -#include "Widgets/RoundedRectangle.hpp" #include "Widgets/TextInput.hpp" #include "Widgets/CheckBox.hpp" // ORCA @@ -472,6 +470,7 @@ protected: std::string m_last_sparse_infill_rotate_template_value; ConfigManipulation get_config_manipulation(); friend class EditGCodeDialog; + friend class PublishSettingsDialog; }; class TabPrint : public Tab @@ -630,7 +629,6 @@ private: std::vector<PageShp> m_pages_fff; std::vector<PageShp> m_pages_sla; - wxBoxSizer* m_presets_sizer {nullptr}; public: ScalableButton* m_reset_to_filament_color = nullptr; diff --git a/src/slic3r/GUI/TextureImportDialog.cpp b/src/slic3r/GUI/TextureImportDialog.cpp index 1a24799a15..1bf52d792c 100644 --- a/src/slic3r/GUI/TextureImportDialog.cpp +++ b/src/slic3r/GUI/TextureImportDialog.cpp @@ -519,7 +519,6 @@ public: , m_entries(entries) , m_colors_rgba(colors_rgba) , m_names(names) - , m_existing_count(existing_count) , m_dialog_anchor(dialog_anchor) , m_on_select(std::move(on_select)) , m_on_add_filament(std::move(on_add_filament)) @@ -877,7 +876,6 @@ private: std::vector<TextureFilamentEntry> m_entries; std::vector<std::array<float, 4>> m_colors_rgba; std::vector<std::string> m_names; - size_t m_existing_count = 0; wxWindow* m_dialog_anchor = nullptr; std::function<void(int)> m_on_select; std::function<void(wxColour)> m_on_add_filament; diff --git a/src/slic3r/GUI/TroubleshootDialog.cpp b/src/slic3r/GUI/TroubleshootDialog.cpp index b0a8f71930..5acb75c6ea 100644 --- a/src/slic3r/GUI/TroubleshootDialog.cpp +++ b/src/slic3r/GUI/TroubleshootDialog.cpp @@ -1,6 +1,7 @@ #include "TroubleshootDialog.hpp" #include "I18N.hpp" +#include "BuildCommit.hpp" #include "GUI.hpp" #include "GUI_App.hpp" #include "MainFrame.hpp" @@ -71,7 +72,7 @@ wxFlexGridSizer* TroubleshootDialog::create_item_loaded_profiles() auto gen_stats = GetProfilesOverview(); gen_stats = ""; // clear mem. not needed after generating m_..._act, m_..._usr variables - auto add_sizer = [this, g_sizer, create_label](PresetCollection* col, wxString label, int in_use, int user) { + auto add_sizer = [g_sizer, create_label](PresetCollection* col, wxString label, int in_use, int user) { int sys = 0; for (auto it = col->begin(); it != col->end(); it++) { if (it->is_system) @@ -137,9 +138,9 @@ TroubleshootDialog::TroubleshootDialog() version->SetFont(version_font); version->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636"))); - auto build = new Button(this, wxString(GIT_COMMIT_HASH)); + auto build = new Button(this, wxString(build_commit_label)); build->SetStyle(ButtonStyle::Regular, ButtonType::Window); - auto hash_url = "https://github.com/OrcaSlicer/OrcaSlicer/commit/" + wxString(GIT_COMMIT_HASH); + auto hash_url = "https://github.com/OrcaSlicer/OrcaSlicer/commit/" + wxString(build_commit_hash); build->SetToolTip(hash_url); build->Bind(wxEVT_BUTTON, [hash_url](wxCommandEvent &e) { wxLaunchDefaultBrowser(hash_url); @@ -178,7 +179,7 @@ TroubleshootDialog::TroubleshootDialog() return wxTheClipboard->SetData(new wxTextDataObject(GetSysInfoAll())); }); - sys_less_btn->Bind(wxEVT_BUTTON, [this, sys_panel, sys_less_btn, sys_info_lines, sys_copy_btn](wxCommandEvent &e) { + sys_less_btn->Bind(wxEVT_BUTTON, [this, sys_panel, sys_less_btn, sys_info_lines](wxCommandEvent &e) { m_sys_panel_mode = !m_sys_panel_mode; sys_panel->SetText(sys_info_lines(m_sys_panel_mode)); sys_less_btn->SetLabel(m_sys_panel_mode ? _L("Hide") : _L("Show")); @@ -226,7 +227,7 @@ TroubleshootDialog::TroubleshootDialog() }; auto info_desc_1 = create_info_line(_L("We need information for diagnosing source of the issue. Check wiki page for detailed guide.")); - auto info_desc_2 = create_info_line(_L("Pack button collects project file and logs of current session onto a zip file.")); + auto info_desc_2 = create_info_line(_L("Pack button collects project file and logs of current session onto a ZIP archive.")); auto info_desc_3 = create_info_line(_L("Any additional visual examples like images or screen recordings might be helpful while reporting the issue.")); wxBoxSizer *info_desc_sizer = new wxBoxSizer(wxVERTICAL); info_desc_sizer->Add(info_desc_1, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); @@ -292,7 +293,7 @@ TroubleshootDialog::TroubleshootDialog() auto log_level_szr = create_label(_L("Log level"), ""); log_level_szr->Add(create_item_log_level_combo(), 0, wxALIGN_CENTER_VERTICAL); - auto log_pack_szr = create_label(_L("Stored logs"), _L("Packs all stored logs onto a zip file.")); + auto log_pack_szr = create_label(_L("Stored logs"), _L("Packs all stored logs onto a ZIP archive.")); auto log_pack_btn = create_btn(_L("Pack") + "...", ""); log_pack_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { auto data_dir = boost::filesystem::path(Slic3r::data_dir()); @@ -371,7 +372,7 @@ wxString TroubleshootDialog::GetSysInfoAll() { wxString info; info += "Version : " + wxString(SoftFever_VERSION) + "\n" - + "Build : " + wxString(GIT_COMMIT_HASH) + "\n" + + "Build : " + wxString(build_commit_label) + "\n" + "Package : " + GetPackageType() + "\n" + "Platform : " + GetOSinfo() + "\n" + "Processor : " + GetCPUinfo() + "\n" diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 5c69466cfa..65b678953d 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -12,6 +12,7 @@ #include "libslic3r/PresetBundle.hpp" #include "libslic3r/Color.hpp" #include "format.hpp" +#include "ConfigValueFormatter.hpp" #include "GUI_App.hpp" #include "Plater.hpp" #include "Tab.hpp" @@ -22,7 +23,6 @@ #include "MsgDialog.hpp" #include "PresetComboBoxes.hpp" -#include "Widgets/RoundedRectangle.hpp" #include "Widgets/CheckBox.hpp" #include "Widgets/DialogButtons.hpp" #include "Widgets/HyperLink.hpp" @@ -571,14 +571,6 @@ void DiffModel::Clear() } -static std::string get_pure_opt_key(std::string opt_key) -{ - const int pos = opt_key.find("#"); - if (pos > 0) - boost::erase_tail(opt_key, opt_key.size() - pos); - return opt_key; -} - // ---------------------------------------------------------------------------- // DiffViewCtrl // ---------------------------------------------------------------------------- @@ -1212,32 +1204,6 @@ bool UnsavedChangesDialog::save(PresetCollection* dependent_presets, bool show_s return true; } -wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill = false, int idx = -1) -{ - const ConfigOptionDef& def = config.def()->options.at(opt_key); - const std::vector<std::string>& names = def.enum_labels;//ConfigOptionEnum<T>::get_enum_names(); - int val = 0; - - if (idx >= 0) - val = dynamic_cast<const ConfigOptionInts*>(config.option(opt_key))->get_at(idx); - else - val = config.option(opt_key)->getInt(); - - // Each infill doesn't use all list of infill declared in PrintConfig.hpp. - // So we should "convert" val to the correct one - if (is_infill) { - for (auto key_val : *def.enum_keys_map) - if (int(key_val.second) == val) { - auto it = std::find(def.enum_values.begin(), def.enum_values.end(), key_val.first); - if (it == def.enum_values.end()) - return ""; - return from_u8(_utf8(names[it - def.enum_values.begin()])); - } - return _L("Undefined"); - } - return from_u8(_utf8(names[val])); -} - // BBS #if 0 static size_t get_id_from_opt_key(std::string opt_key) @@ -1251,194 +1217,6 @@ static size_t get_id_from_opt_key(std::string opt_key) } #endif -static wxString get_full_label(std::string opt_key, const DynamicPrintConfig& config) -{ - opt_key = get_pure_opt_key(opt_key); - auto option = config.option(opt_key); - - if (!option || option->is_nil()) - return _L("N/A"); - - const ConfigOptionDef* opt = config.def()->get(opt_key); - return opt->full_label.empty() ? opt->label : opt->full_label; -} - -static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& config) -{ - int orig_opt_idx = -1; - int opt_idx = -1; - int pos = opt_key.find("#"); - std::string temp_str = opt_key; - if (pos > 0) { - boost::erase_head(temp_str, pos + 1); - orig_opt_idx = static_cast<size_t>(atoi(temp_str.c_str())); - } - opt_idx = orig_opt_idx >= 0 ? orig_opt_idx : 0; - opt_key = get_pure_opt_key(opt_key); - auto option = config.option(opt_key); - if (!option) { - return _L("N/A"); - } - auto opt_vector = dynamic_cast<const ConfigOptionVectorBase *>(option); - - if (option->is_scalar() && config.option(opt_key)->is_nil() || - option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx)) - return _L("N/A"); - - wxString out; - - const ConfigOptionDef* opt = config.def()->get(opt_key); - bool is_nullable = opt->nullable; - - switch (opt->type) { - case coInt: - return from_u8((boost::format("%1%") % config.opt_int(opt_key)).str()); - case coInts: { - if (is_nullable) { - auto values = config.opt<ConfigOptionIntsNullable>(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); - } - else { - auto values = config.opt<ConfigOptionInts>(opt_key); - if (orig_opt_idx >= 0 && orig_opt_idx < values->size()) { - return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); - } - else { - std::string value_str; - for (int i = 0; i < values->size(); i++) { - value_str += std::to_string(values->get_at(i)); - if (i != values->size() - 1) { - value_str += ","; - } - } - return from_u8(value_str); - } - } - return _L("Undefined"); - } - case coBool: - return config.opt_bool(opt_key) ? "true" : "false"; - case coBools: { - if (is_nullable) { - auto values = config.opt<ConfigOptionBoolsNullable>(opt_key); - if (opt_idx < values->size()) - return values->get_at(opt_idx) ? "true" : "false"; - } - else { - auto values = config.opt<ConfigOptionBools>(opt_key); - if (opt_idx < values->size()) - return values->get_at(opt_idx) ? "true" : "false"; - } - return _L("Undefined"); - } - case coPercent: - return from_u8((boost::format("%1%%%") % int(config.optptr(opt_key)->getFloat())).str()); - case coPercents: { - if (is_nullable) { - auto values = config.opt<ConfigOptionPercentsNullable>(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); - } - else { - auto values = config.opt<ConfigOptionPercents>(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); - } - return _L("Undefined"); - } - case coFloat: - return double_to_string(config.opt_float(opt_key)); - case coFloats: { - if (is_nullable) { - auto values = config.opt<ConfigOptionFloatsNullable>(opt_key); - if (opt_idx < values->size()) - return double_to_string(values->get_at(opt_idx)); - } - else { - auto values = config.opt<ConfigOptionFloats>(opt_key); - if (values && opt_idx < values->size()) - return double_to_string(values->get_at(opt_idx)); - } - return _L("Undefined"); - } - case coString: - return from_u8(config.opt_string(opt_key)); - case coStrings: { - const ConfigOptionStrings* strings = config.opt<ConfigOptionStrings>(opt_key); - if (strings) { - if (opt_key == "compatible_printers" || opt_key == "compatible_prints") { - if (strings->empty()) - return _L("All"); - for (size_t id = 0; id < strings->size(); id++) - out += from_u8(strings->get_at(id)) + "\n"; - out.RemoveLast(1); - return out; - } - if (!strings->empty() && opt_idx < strings->values.size()) - return from_u8(strings->get_at(opt_idx)); - } - break; - } - case coFloatOrPercent: { - const ConfigOptionFloatOrPercent* opt = config.opt<ConfigOptionFloatOrPercent>(opt_key); - if (opt) - out = double_to_string(opt->value) + (opt->percent ? "%" : ""); - return out; - } - case coEnum: { - return get_string_from_enum(opt_key, config, - opt_key == "top_surface_pattern" || - opt_key == "bottom_surface_pattern" || - opt_key == "internal_solid_infill_pattern" || - opt_key == "sparse_infill_pattern" || - opt_key == "ironing_pattern" || - opt_key == "support_ironing_pattern" || - opt_key == "support_pattern" || - opt_key == "support_interface_pattern") - ; - } - case coEnums: { - return get_string_from_enum(opt_key, config, - opt_key == "top_surface_pattern" || - opt_key == "bottom_surface_pattern" || - opt_key == "internal_solid_infill_pattern" || - opt_key == "sparse_infill_pattern" || - opt_key == "ironing_pattern" || - opt_key == "support_ironing_pattern" || - opt_key == "support_pattern" || - opt_key == "support_interface_pattern" - , opt_idx); - } - case coPoint: { - Vec2d val = config.opt<ConfigOptionPoint>(opt_key)->value; - return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); - } - case coPoints: { - //BBS: add bed_exclude_area - if (opt_key == "printable_area" || opt_key == "thumbnails") { - ConfigOptionPoints points = *config.option<ConfigOptionPoints>(opt_key); - //BuildVolume build_volume = {points.values, 0.}; - return get_thumbnails_string(points.values); - } - else if (opt_key == "bed_exclude_area") { - return get_thumbnails_string(config.option<ConfigOptionPoints>(opt_key)->values); - } - else if (opt_key == "head_wrap_detect_zone") { - return get_thumbnails_string(config.option<ConfigOptionPoints>(opt_key)->values); - } - else if (opt_key == "wrapping_exclude_area") { - return get_thumbnails_string(config.option<ConfigOptionPoints>(opt_key)->values); - } - Vec2d val = config.opt<ConfigOptionPoints>(opt_key)->get_at(opt_idx); - return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); - } - default: - break; - } - return out; -} - void UnsavedChangesDialog::update(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset, const wxString& header) { PresetCollection* presets = dependent_presets; diff --git a/src/slic3r/GUI/UpdateDialogs.hpp b/src/slic3r/GUI/UpdateDialogs.hpp index 04eb4ffb3c..784c10f09a 100644 --- a/src/slic3r/GUI/UpdateDialogs.hpp +++ b/src/slic3r/GUI/UpdateDialogs.hpp @@ -33,7 +33,6 @@ public: void on_hyperlink(wxHyperlinkEvent& evt); private: - wxCheckBox *cbox; }; diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 0820f7181b..78030c68da 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -661,7 +661,7 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) else if (strCmd == "user_guide_create_printer") { this->EndModal(wxID_CANCEL); this->Close(); - GUI::wxGetApp().CallAfter([this] {GUI::wxGetApp().sidebar().create_printer_preset();}); + GUI::wxGetApp().CallAfter([] {GUI::wxGetApp().sidebar().create_printer_preset();}); } else if (strCmd == "user_guide_cancel") { this->EndModal(wxID_CANCEL); @@ -944,7 +944,7 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle std::string preferred_model; std::string preferred_variant; PrinterTechnology preferred_pt = ptFFF; - auto get_preferred_printer_model = [preset_bundle, enabled_vendors, old_enabled_vendors, preferred_pt](const std::string& bundle_name, std::string& variant) { + auto get_preferred_printer_model = [preset_bundle, enabled_vendors, old_enabled_vendors](const std::string& bundle_name, std::string& variant) { const auto config = enabled_vendors.find(bundle_name); if (config == enabled_vendors.end()) return std::string(); diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index 4222ce745b..829e7ef106 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -489,7 +489,7 @@ void ZUserLogin::OnScriptMessage(wxWebViewEvent &evt) std::string jump_url = j["data"]["url"].get<std::string>(); int loopback_port = ensure_loopback_port(); jump_url = rewrite_loopback_url(jump_url, loopback_port); - CallAfter([this, jump_url] { + CallAfter([jump_url] { wxString url = wxString::FromUTF8(jump_url); wxLaunchDefaultBrowser(url); }); @@ -498,7 +498,7 @@ void ZUserLogin::OnScriptMessage(wxWebViewEvent &evt) else if (strCmd == "new_webpage") { if (j["data"].contains("url")) { std::string jump_url = j["data"]["url"].get<std::string>(); - CallAfter([this, jump_url] { + CallAfter([jump_url] { wxString url = wxString::FromUTF8(jump_url); wxLaunchDefaultBrowser(url); }); diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 123025ef85..bad0192115 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -108,13 +108,16 @@ public: private: wxWebView* m_browser; + wxButton * m_button_stop; + wxTextCtrl *m_url; +#if !BBL_RELEASE_TO_PUBLIC + // Created only by the internal-build toolbar in the constructor. wxBoxSizer *bSizer_toolbar; wxButton * m_button_back; wxButton * m_button_forward; - wxButton * m_button_stop; wxButton * m_button_reload; - wxTextCtrl *m_url; wxButton * m_button_tools; +#endif //BBL_RELEASE_TO_PUBLIC wxMenu* m_tools_menu; wxMenuItem* m_tools_handle_navigation; @@ -143,7 +146,6 @@ private: wxMenuItem* m_dev_tools; wxInfoBar *m_info; - wxStaticText* m_info_text; long m_zoomFactor; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 41f14b6a11..7ba24fd991 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -278,7 +278,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_ams_dry_ctr_win->Move(popup_pos); m_ams_dry_ctr_win->ShowModal(); } else { - m_percent_humidity_dry_popup->Update(info); + m_percent_humidity_dry_popup->UpdateInfo(info); wxPoint img_pos = ClientToScreen(wxPoint(0, 0)); wxPoint popup_pos(img_pos.x - m_percent_humidity_dry_popup->GetSize().GetWidth() + FromDIP(150), img_pos.y - FromDIP(80)); @@ -1034,7 +1034,7 @@ void AMSControl::UpdateAms(const std::string &series_name, humidity_info.humidity_percent = the_info.humidity_raw; humidity_info.left_dry_time = the_info.left_dray_time; humidity_info.current_temperature = the_info.current_temperature; - m_percent_humidity_dry_popup->Update(&humidity_info); + m_percent_humidity_dry_popup->UpdateInfo(&humidity_info); break; } } diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index c43c71f580..ac4283b7e8 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -641,17 +641,11 @@ private: AMSRoadShowMode m_road_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; AMSPassRoadSTEP m_load_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; - bool m_selected = {false}; - int m_passroad_width = {6}; - double m_radius = {4}; wxColour m_road_def_color; wxColour m_road_color; std::vector<ScalableBitmap> ams_humidity_img; - int m_humidity = {0}; - bool m_show_humidity = {false}; - bool m_vams_loading{false}; AMSModel m_ams_model; }; @@ -690,14 +684,10 @@ private: int m_left_road_length = {-1}; int m_right_road_length = {-1}; - int m_passroad_width = {6}; - double m_radius = {4}; AMSPassRoadSTEP m_pass_road_left_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; AMSPassRoadSTEP m_pass_road_right_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; std::map<int, wxColour> m_road_color; - bool m_vams_loading{false}; - AMSModel m_ams_model; }; /************************************************* diff --git a/src/slic3r/GUI/Widgets/AnimaController.cpp b/src/slic3r/GUI/Widgets/AnimaController.cpp index acf78c01f5..d5f665cde1 100644 --- a/src/slic3r/GUI/Widgets/AnimaController.cpp +++ b/src/slic3r/GUI/Widgets/AnimaController.cpp @@ -78,7 +78,7 @@ void AnimaIcon::Stop() m_timer->Stop(); } -void AnimaIcon::Enable() +void AnimaIcon::ShowEnabledIcon() { if (m_bitmap) { m_bitmap->SetBitmap(m_image_enable); } } diff --git a/src/slic3r/GUI/Widgets/AnimaController.hpp b/src/slic3r/GUI/Widgets/AnimaController.hpp index e2f67ff8a6..daf8f95314 100644 --- a/src/slic3r/GUI/Widgets/AnimaController.hpp +++ b/src/slic3r/GUI/Widgets/AnimaController.hpp @@ -13,7 +13,7 @@ public: void Play(); void Stop(); - void Enable(); + void ShowEnabledIcon(); bool IsPlaying() const { return IsRunning(); }; bool IsRunning() const; diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 5a5bd89403..22b1c34cab 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -162,6 +162,15 @@ void Button::SetCenter(bool isCenter) { this->isCenter = isCenter; } +void Button::SetIndicator(bool on) +{ + if (m_show_indicator == on) + return; + m_show_indicator = on; + messureSize(); + Refresh(); +} + void Button::SetVertical(bool vertical) { this->vertical = vertical; @@ -324,6 +333,13 @@ void Button::render(wxDC& dc) szContent.x -= d; } } + if (m_show_indicator) { + const int dot = FromDIP(6); + if (vertical) + szContent.y += dot + FromDIP(6); + else + szContent.x += dot + FromDIP(6); + } // move to center wxRect rcContent = { {0, 0}, size }; if (isCenter) { @@ -364,6 +380,17 @@ void Button::render(wxDC& dc) #endif dc.DrawText(text, pt); } + if (m_show_indicator) { + const int dot = FromDIP(6); // diameter + wxPoint dot_pt; + dot_pt.x = pt.x + (text.IsEmpty() ? 0 : textSize.x) + FromDIP(6) + dot / 2; + // Centre on the content vertically; a bitmap-only (empty-label) tab has no text row. + dot_pt.y = text.IsEmpty() ? rcContent.y + rcContent.height / 2 : pt.y + textSize.y / 2; + const wxColour c = StateColor::darkModeColorFor(m_indicator_color); + dc.SetBrush(wxBrush(c)); + dc.SetPen(wxPen(c)); + dc.DrawCircle(dot_pt, dot / 2); + } } void Button::messureSize() @@ -388,6 +415,14 @@ void Button::messureSize() if (szIcon.y > szContent.y) szContent.y = szIcon.y; } } + if (m_show_indicator) { + // Indicator dot sits to the right of the label: its diameter plus the gap from the text. + const int dot = FromDIP(6); + if (vertical) + szContent.y += dot + FromDIP(6); + else + szContent.x += dot + FromDIP(6); + } wxSize size = szContent + paddingSize * 2; if (minSize.GetHeight() > 0) size.SetHeight(minSize.GetHeight()); diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 2991edd425..758a9a4009 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -4,28 +4,30 @@ #include "../wxExtensions.hpp" #include "StaticBox.hpp" #include <wx/tipwin.h> +#include <wx/colour.h> class ButtonProps { public: - static int ChoiceButtonGap(){return 10;}; - static int WindowButtonGap(){return 10;}; + static int ChoiceButtonGap() { return 10; }; + static int WindowButtonGap() { return 10; }; }; -enum class ButtonStyle{ +enum class ButtonStyle { Regular, Confirm, Alert, Disabled, }; -enum class ButtonType{ - Compact , // Font10 FullyRounded For spaces with less areas - Window , // Font12 FullyRounded For regular buttons in windows and not related with parameter boxes - Choice , // Font14 Semi-Rounded For dialog/window choice buttons +enum class ButtonType { + Compact, // Font10 FullyRounded For spaces with less areas + Window, // Font12 FullyRounded For regular buttons in windows and not related with parameter boxes + Choice, // Font14 Semi-Rounded For dialog/window choice buttons Parameter, // Font14 Semi-Rounded For buttons that near parameter boxes - Icon , // ------ Semi-Rounded For buttons that only has icons. icons should be 16x16 and iconSize has to be defined as 16 while creation of button - Expanded , // Font14 Semi-Rounded For full length buttons. ex. buttons in static box + Icon, // ------ Semi-Rounded For buttons that only has icons. icons should be 16x16 and iconSize has to be defined as 16 while + // creation of button + Expanded, // Font14 Semi-Rounded For full length buttons. ex. buttons in static box }; class Button : public StaticBox @@ -36,15 +38,17 @@ class Button : public StaticBox wxSize paddingSize; ScalableBitmap active_icon; - StateColor text_color; + StateColor text_color; bool pressedDown = false; bool m_selected = true; - bool canFocus = true; + bool canFocus = true; bool isCenter = true; bool vertical = false; + bool m_show_indicator = false; + wxColour m_indicator_color = wxColour("#009688"); - static const int buttonWidth = 200; + static const int buttonWidth = 200; static const int buttonHeight = 50; public: @@ -68,19 +72,23 @@ public: void SetStyle(const ButtonStyle style /*= ButtonStyle::Regular*/, const ButtonType type /*= ButtonType::None*/); - void SetTextColor(StateColor const &color); + void SetTextColor(StateColor const& color); - void SetTextColorNormal(wxColor const &color); + void SetTextColorNormal(wxColor const& color); void SetSelected(bool selected = true) { m_selected = selected; } + // Show a small coloured dot to the right of the label (used by TabCtrl tabs to flag that + // the tab's category has a selected/toggled setting). + void SetIndicator(bool on); + // Only meant to be used by inspector, not public API ButtonStyle GetStyle() const { return m_style; } - ButtonType GetType() const { return m_type; } - bool IsSelected() const { return m_selected; } + ButtonType GetType() const { return m_type; } + bool IsSelected() const { return m_selected; } bool Enable(bool enable = true) override; - void EnableTooltipEvenDisabled();// The tip will be shown even if the button is disabled + void EnableTooltipEvenDisabled(); // The tip will be shown even if the button is disabled void SetCanFocus(bool canFocus) override; @@ -104,7 +112,7 @@ protected: private: bool m_has_style = false; ButtonStyle m_style; - ButtonType m_type; + ButtonType m_type; void paintEvent(wxPaintEvent& evt); @@ -115,10 +123,10 @@ private: // some useful events void mouseDown(wxMouseEvent& event); void mouseReleased(wxMouseEvent& event); - void mouseCaptureLost(wxMouseCaptureLostEvent &event); - void keyDownUp(wxKeyEvent &event); + void mouseCaptureLost(wxMouseCaptureLostEvent& event); + void keyDownUp(wxKeyEvent& event); - // + // void sendButtonEvent(); // parent motion diff --git a/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp index 735a118a20..63968a57c5 100644 --- a/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp +++ b/src/slic3r/GUI/Widgets/ErrorMsgStaticText.hpp @@ -17,7 +17,7 @@ public: void paintEvent(wxPaintEvent &evt); - void SetLabel(wxString msg){m_msg = msg;}; + void SetLabel(const wxString &msg) override { m_msg = msg; } }; #endif diff --git a/src/slic3r/GUI/Widgets/FanControl.hpp b/src/slic3r/GUI/Widgets/FanControl.hpp index b13ce19d41..2badbf8594 100644 --- a/src/slic3r/GUI/Widgets/FanControl.hpp +++ b/src/slic3r/GUI/Widgets/FanControl.hpp @@ -212,7 +212,6 @@ private: wxGridSizer* m_sizer_fanControl { nullptr }; wxBoxSizer *m_mode_sizer{ nullptr }; - wxBoxSizer *m_bottom_sizer{ nullptr }; // mode switch buttons std::unordered_map<int, SendModeSwitchButton*> m_mode_switch_btns; //<mode_id, SendModeSwitchButton> diff --git a/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp b/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp index 518bda1d19..20944df553 100644 --- a/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp +++ b/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp @@ -600,7 +600,7 @@ StaticBox* HotEndTable::CreateNozzleBox(const std::vector<int>& nozzle_indices) void HotEndTable::UpdateNozzleItems(const std::unordered_map<int, wgtDeviceNozzleRackNozzleItem*>& nozzle_items, std::shared_ptr<DevNozzleRack> nozzle_rack) { for (auto& item : nozzle_items) - item.second->Update(nozzle_rack); + item.second->UpdateInfo(nozzle_rack); } void HotEndTable::OnPaint(wxPaintEvent& evt) diff --git a/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp b/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp index 3baea061dc..3e2e41ccb7 100644 --- a/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp +++ b/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp @@ -89,8 +89,6 @@ private: bool m_right_on{ true }; wxStaticBitmap* badget; - Label* left; - Label* right; Label* left_diameter_desp; Label* right_diameter_desp; Label* left_flow_desp; diff --git a/src/slic3r/GUI/Widgets/RadioBox.cpp b/src/slic3r/GUI/Widgets/RadioBox.cpp index 7f20b8724c..f00447e0ec 100644 --- a/src/slic3r/GUI/Widgets/RadioBox.cpp +++ b/src/slic3r/GUI/Widgets/RadioBox.cpp @@ -36,11 +36,6 @@ void RadioBox::SetValue(bool value) update(); } -bool RadioBox::GetValue() -{ - return wxBitmapToggleButton::GetValue(); -} - void RadioBox::Rescale() { diff --git a/src/slic3r/GUI/Widgets/RadioBox.hpp b/src/slic3r/GUI/Widgets/RadioBox.hpp index b2c03aae15..a34bd594dd 100644 --- a/src/slic3r/GUI/Widgets/RadioBox.hpp +++ b/src/slic3r/GUI/Widgets/RadioBox.hpp @@ -15,14 +15,10 @@ public: public: void SetValue(bool value) override; - bool GetValue(); void Rescale(); bool Disable() { return wxBitmapToggleButton::Disable(); } - bool Enable() { - return wxBitmapToggleButton::Enable(); - } private: void update(); diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 6391c1a8c4..f6e7ca67f6 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -7,6 +7,7 @@ BEGIN_EVENT_TABLE(StaticBox, wxWindow) // catch paint events //EVT_ERASE_BACKGROUND(StaticBox::eraseEvent) +EVT_SIZE(StaticBox::sizeEvent) EVT_PAINT(StaticBox::paintEvent) END_EVENT_TABLE() @@ -140,6 +141,12 @@ void StaticBox::eraseEvent(wxEraseEvent& evt) #endif } +void StaticBox::sizeEvent(wxSizeEvent& evt) +{ + Refresh(); + evt.Skip(); +} + void StaticBox::paintEvent(wxPaintEvent& evt) { // depending on your system you may need to look at double-buffered dcs diff --git a/src/slic3r/GUI/Widgets/StaticBox.hpp b/src/slic3r/GUI/Widgets/StaticBox.hpp index b7cdee34ef..363d431c8e 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.hpp +++ b/src/slic3r/GUI/Widgets/StaticBox.hpp @@ -46,6 +46,8 @@ public: protected: void eraseEvent(wxEraseEvent& evt); + void sizeEvent(wxSizeEvent& evt); + void paintEvent(wxPaintEvent& evt); void render(wxDC& dc); diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 882d2f6897..34de109b8f 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -2,8 +2,8 @@ #include <wx/dc.h> -wxDEFINE_EVENT( wxEVT_TAB_SEL_CHANGING, wxCommandEvent ); -wxDEFINE_EVENT( wxEVT_TAB_SEL_CHANGED, wxCommandEvent ); +wxDEFINE_EVENT(wxEVT_TAB_SEL_CHANGING, wxCommandEvent); +wxDEFINE_EVENT(wxEVT_TAB_SEL_CHANGED, wxCommandEvent); BEGIN_EVENT_TABLE(TabCtrl, StaticBox) @@ -22,11 +22,7 @@ END_EVENT_TABLE() #define TAB_BUTTON_PADDING_Y 2 #define TAB_BUTTON_PADDING TAB_BUTTON_PADDING_X, TAB_BUTTON_PADDING_Y -TabCtrl::TabCtrl(wxWindow * parent, - wxWindowID id, - const wxPoint & pos, - const wxSize & size, - long style) +TabCtrl::TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : StaticBox(parent, id, pos, size, style) { #if 0 @@ -42,14 +38,11 @@ TabCtrl::TabCtrl(wxWindow * parent, hsizer->Add(sizer, 0, wxEXPAND | wxBOTTOM, border_width * 4); SetSizer(hsizer); Bind(wxEVT_COMMAND_BUTTON_CLICKED, &TabCtrl::buttonClicked, this); - //wxString reason; - //IsTransparentBackgroundSupported(&reason); + // wxString reason; + // IsTransparentBackgroundSupported(&reason); } -TabCtrl::~TabCtrl() -{ - delete images; -} +TabCtrl::~TabCtrl() { delete images; } int TabCtrl::GetSelection() const { return sel; } @@ -75,15 +68,13 @@ void TabCtrl::SelectItem(int item) Refresh(); } -void TabCtrl::Unselect() -{ - SelectItem(-1); -} +void TabCtrl::Unselect() { SelectItem(-1); } void TabCtrl::Rescale() { - for (auto & b : btns) + for (auto& b : btns) b->Rescale(); + relayout(); } bool TabCtrl::SetFont(wxFont const& font) @@ -95,28 +86,32 @@ bool TabCtrl::SetFont(wxFont const& font) return true; } -int TabCtrl::AppendItem(const wxString &item, - int image, int selImage, - void * clientData) +int TabCtrl::AppendItem(const wxString& item, int image, int selImage, void* clientData) { - Button * btn = new Button(); + Button* btn = new Button(); btn->Create(this, item, "", wxBORDER_NONE); btn->SetFont(GetFont()); - btn->SetTextColor(StateColor( - std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), - std::make_pair(*wxLIGHT_GREY, (int) StateColor::Normal))); + btn->SetTextColor( + StateColor(std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), std::make_pair(wxColour("#262E30"), (int) StateColor::Normal))); btn->SetBackgroundColor(StateColor()); btn->SetCornerRadius(0); btn->SetPaddingSize({TAB_BUTTON_PADDING}); btns.push_back(btn); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); - sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, TAB_BUTTON_SPACE); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, item_space); sizer->AddStretchSpacer(1); relayout(); return btns.size() - 1; } +int TabCtrl::AppendItem(const wxString& item, const wxBitmap& bitmap, void* clientData) +{ + const int index = AppendItem(item, -1, -1, clientData); + SetItemBitmap(index, bitmap); + return index; +} + bool TabCtrl::DeleteItem(int item) { if (item < 0 || item >= btns.size()) { @@ -136,7 +131,7 @@ bool TabCtrl::DeleteItem(int item) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); if (selection_changed) { - sel--; // `relayout()` uses `sel` so we need to update this before calling `relayout()` + sel--; // `relayout()` uses `sel` so we need to update this before calling `relayout()` } relayout(); if (selection_changed) { @@ -159,75 +154,87 @@ void TabCtrl::DeleteAllItems() unsigned int TabCtrl::GetCount() const { return btns.size(); } -wxString TabCtrl::GetItemText(unsigned int item) const +wxString TabCtrl::GetItemText(unsigned int item) const { return item < btns.size() ? btns[item]->GetLabel() : wxString{}; } + +void TabCtrl::SetItemText(unsigned int item, wxString const& value) { - return item < btns.size() ? btns[item]->GetLabel() : wxString{}; + if (item >= btns.size()) + return; + btns[item]->SetLabel(value); } -void TabCtrl::SetItemText(unsigned int item, wxString const &value) +void TabCtrl::SetItemBitmap(unsigned int item, const wxBitmap& bitmap) { - if (item >= btns.size()) return; - btns[item]->SetLabel(value); + if (item >= btns.size()) + return; + btns[item]->SetIcon(bitmap); + relayout(); +} + +void TabCtrl::SetItemIndicator(unsigned int item, bool on) +{ + if (item >= btns.size()) + return; + btns[item]->SetIndicator(on); + relayout(); } bool TabCtrl::GetItemBold(unsigned int item) const { - if (item >= btns.size()) return false; + if (item >= btns.size()) + return false; return btns[item]->GetFont() == bold; } void TabCtrl::SetItemBold(unsigned int item, bool bold) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetFont(bold ? this->bold : GetFont()); btns[item]->Rescale(); } void* TabCtrl::GetItemData(unsigned int item) const { - if (item >= btns.size()) return nullptr; + if (item >= btns.size()) + return nullptr; return btns[item]->GetClientData(); } void TabCtrl::SetItemData(unsigned int item, void* clientData) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetClientData(clientData); } void TabCtrl::AssignImageList(wxImageList* imageList) { - if (images == imageList) return; + if (images == imageList) + return; delete images; images = imageList; } -void TabCtrl::SetItemTextColour(unsigned int item, const StateColor &col) +void TabCtrl::SetItemTextColour(unsigned int item, const StateColor& col) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetTextColor(col); } -int TabCtrl::GetFirstVisibleItem() const -{ - return btns.size() == 0 ? -1 : 0; -} +int TabCtrl::GetFirstVisibleItem() const { return btns.size() == 0 ? -1 : 0; } -int TabCtrl::GetNextVisible(int item) const -{ - return ++item < btns.size() ? item : -1; -} +int TabCtrl::GetNextVisible(int item) const { return ++item < btns.size() ? item : -1; } -bool TabCtrl::IsVisible(unsigned int item) const -{ - return true; -} +bool TabCtrl::IsVisible(unsigned int item) const { return true; } void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) { auto size = GetSize(); wxWindow::DoSetSize(x, y, width, height, sizeFlags); - if (size == GetSize()) return; + if (size == GetSize()) + return; relayout(); } @@ -235,7 +242,9 @@ void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) WXLRESULT TabCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - if (nMsg == WM_GETDLGCODE) { return DLGC_WANTARROWS; } + if (nMsg == WM_GETDLGCODE) { + return DLGC_WANTARROWS; + } return wxWindow::MSWWindowProc(nMsg, wParam, lParam); } @@ -244,15 +253,15 @@ WXLRESULT TabCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) void TabCtrl::relayout() { int offset = 10; - int item = sel + 1; - int first = 0; + int item = sel + 1; + int first = 0; for (int i = 0; i < item; ++i) - offset += btns[i]->GetMinSize().x + TAB_BUTTON_SPACE * 2; + offset += btns[i]->GetMinSize().x + item_space * 2; if (item < btns.size()) - offset += btns[item]->GetMinSize().x + TAB_BUTTON_SPACE * 2; - int width = GetSize().x; + offset += btns[item]->GetMinSize().x + item_space * 2; + int width = GetSize().x; for (int i = 0; i < btns.size(); ++i) { - auto size = btns[i]->GetMinSize().x + TAB_BUTTON_SPACE * 2; + auto size = btns[i]->GetMinSize().x + item_space * 2; if (i < sel && offset > width) { sizer->Show(i * 2 + 1, false); sizer->Show(i * 2 + 2, false); @@ -273,14 +282,32 @@ void TabCtrl::relayout() sizer->GetItem(i * 2 + 2)->SetMinSize({0, 0}); } if (item >= btns.size()) - -- item; + --item; // Keep spacing 2 ~ 10 TAB_BUTTON_SPACE - int b = GetSize().x - offset - 10 - (item + 1 - first) * TAB_BUTTON_SPACE * 8; + int b = GetSize().x - offset - 10 - (item + 1 - first) * item_space * 8; sizer->GetItem(item * 2 + 2)->SetMinSize({b > 0 ? b : 0, 0}); Layout(); } -void TabCtrl::buttonClicked(wxCommandEvent &event) +void TabCtrl::SetItemSpace(int space) +{ + if (space < 0 || space == item_space) + return; + item_space = space; + relayout(); + Refresh(); +} + +int TabCtrl::GetFullSize() const +{ + // Mirrors relayout(): a 10px leading spacer plus every button's min width and spacing. + int width = 10; + for (const Button* btn : btns) + width += btn->GetMinSize().x + item_space * 2; + return width; +} + +void TabCtrl::buttonClicked(wxCommandEvent& event) { SetFocus(); auto btn = event.GetEventObject(); @@ -288,7 +315,7 @@ void TabCtrl::buttonClicked(wxCommandEvent &event) SelectItem(iter == btns.end() ? -1 : iter - btns.begin()); } -void TabCtrl::keyDown(wxKeyEvent &event) +void TabCtrl::keyDown(wxKeyEvent& event) { switch (event.GetKeyCode()) { case WXK_UP: @@ -307,11 +334,13 @@ void TabCtrl::keyDown(wxKeyEvent &event) void TabCtrl::doRender(wxDC& dc) { wxSize size = GetSize(); - int states = state_handler.states(); - if (sel < 0) { return; } + int states = state_handler.states(); + if (sel < 0) { + return; + } - auto x1 = btns[sel]->GetPosition().x; - auto x2 = x1 + btns[sel]->GetSize().x; + auto x1 = btns[sel]->GetPosition().x; + auto x2 = x1 + btns[sel]->GetSize().x; const int BS2 = (1 + border_width) / 2; #if 0 const int BS = border_width / 2; diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 04b5b8e24e..493c4edee5 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -3,32 +3,30 @@ #include "Button.hpp" -wxDECLARE_EVENT( wxEVT_TAB_SEL_CHANGING, wxCommandEvent ); -wxDECLARE_EVENT( wxEVT_TAB_SEL_CHANGED, wxCommandEvent ); +wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGING, wxCommandEvent); +wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGED, wxCommandEvent); class TabCtrl : public StaticBox { std::vector<Button*> btns; wxImageList* images = nullptr; - wxBoxSizer * sizer = nullptr; + wxBoxSizer* sizer = nullptr; int sel = -1; wxFont bold; + int item_space = 2; // space around each button, both sides (SetItemSpace) public: - TabCtrl(wxWindow * parent, - wxWindowID id, - const wxPoint & pos = wxDefaultPosition, - const wxSize & size = wxDefaultSize, - long style = 0); + TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); ~TabCtrl(); public: - virtual bool SetFont(wxFont const & font) override; + virtual bool SetFont(wxFont const& font) override; public: - int AppendItem(const wxString &item, int image = -1, int selImage = -1, void *clientData = nullptr); + int AppendItem(const wxString& item, int image = -1, int selImage = -1, void* clientData = nullptr); + int AppendItem(const wxString& item, const wxBitmap& bitmap, void* clientData = nullptr); bool DeleteItem(int item); @@ -36,7 +34,7 @@ public: unsigned int GetCount() const; - int GetSelection() const; + int GetSelection() const; void SelectItem(int item); @@ -45,15 +43,19 @@ public: virtual void Rescale(); wxString GetItemText(unsigned int item) const; - void SetItemText(unsigned int item, wxString const &value); + void SetItemText(unsigned int item, wxString const& value); + void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); - bool GetItemBold(unsigned int item) const; - void SetItemBold(unsigned int item, bool bold); + // Show/hide the small "has selection" dot next to a tab's text. + void SetItemIndicator(unsigned int item, bool on); - void* GetItemData(unsigned int item) const; - void SetItemData(unsigned int item, void *clientData); - - void AssignImageList(wxImageList *imageList); + bool GetItemBold(unsigned int item) const; + void SetItemBold(unsigned int item, bool bold); + + void* GetItemData(unsigned int item) const; + void SetItemData(unsigned int item, void* clientData); + + void AssignImageList(wxImageList* imageList); void SetItemTextColour(unsigned int item, const StateColor& col); @@ -62,6 +64,12 @@ public: int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; + // Extra space around each tab button (in px on both sides). Defaults to the control-wide + // standard; call before appending items so every button picks it up. + void SetItemSpace(int space); + + int GetFullSize() const; + private: virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO) override; @@ -71,10 +79,10 @@ private: void relayout(); - void buttonClicked(wxCommandEvent & event); - void keyDown(wxKeyEvent &event); + void buttonClicked(wxCommandEvent& event); + void keyDown(wxKeyEvent& event); - void doRender(wxDC & dc) override; + void doRender(wxDC& dc) override; // some useful events bool sendTabCtrlEvent(bool changing = false); diff --git a/src/slic3r/GUI/wxMediaCtrl3.h b/src/slic3r/GUI/wxMediaCtrl3.h index 1d64955ffd..ff4595ad32 100644 --- a/src/slic3r/GUI/wxMediaCtrl3.h +++ b/src/slic3r/GUI/wxMediaCtrl3.h @@ -8,6 +8,9 @@ #ifndef wxMediaCtrl3_h #define wxMediaCtrl3_h +#include <chrono> +#include "wx/window.h" +#include "wx/bitmap.h" #include "wx/uri.h" #include "wx/mediactrl.h" diff --git a/src/slic3r/GitCommitHash.cmake b/src/slic3r/GitCommitHash.cmake new file mode 100644 index 0000000000..9302885e6a --- /dev/null +++ b/src/slic3r/GitCommitHash.cmake @@ -0,0 +1,51 @@ +# Writes GIT_COMMIT_HASH and GIT_COMMIT_SUFFIX into a generated header. +# GIT_COMMIT_SUFFIX is "-dirty" for a build with uncommitted changes, and empty +# otherwise. +# +# A custom target runs this at the start of every build, which picks up a new +# commit without a reconfigure. The header is rewritten only when the value +# changes. +# +# Inputs: SOURCE_DIR, OUT_FILE. + +find_package(Git QUIET) + +set(HASH "") +set(SUFFIX "") + +if (DEFINED ENV{git_commit_hash} AND NOT "$ENV{git_commit_hash}" STREQUAL "") + if (GIT_FOUND AND EXISTS "${SOURCE_DIR}/.git") + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short "$ENV{git_commit_hash}" + WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE HASH OUTPUT_STRIP_TRAILING_WHITESPACE) + else () + # No .git directory (e.g. Flatpak sandbox) - truncate directly + string(SUBSTRING "$ENV{git_commit_hash}" 0 7 HASH) + endif () +elseif (GIT_FOUND AND EXISTS "${SOURCE_DIR}/.git") + execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h + WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE HASH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} diff --quiet HEAD + WORKING_DIRECTORY ${SOURCE_DIR} RESULT_VARIABLE DIRTY ERROR_QUIET) + if (DIRTY EQUAL 1) + set(SUFFIX "-dirty") + endif () +endif () + +if (NOT HASH) + set(HASH "0000000") # uninitialized +endif () + +message(STATUS "Build commit: ${HASH}${SUFFIX}") + +string(CONCAT CONTENT + "#pragma once\n" + "#define GIT_COMMIT_HASH \"${HASH}\"\n" + "#define GIT_COMMIT_SUFFIX \"${SUFFIX}\"\n") + +set(OLD "") +if (EXISTS "${OUT_FILE}") + file(READ "${OUT_FILE}" OLD) +endif () +if (NOT OLD STREQUAL CONTENT) + file(WRITE "${OUT_FILE}" "${CONTENT}") +endif () diff --git a/src/slic3r/Utils/3DPrinterOS.cpp b/src/slic3r/Utils/3DPrinterOS.cpp index 79c8a62700..61fcc80d5b 100755 --- a/src/slic3r/Utils/3DPrinterOS.cpp +++ b/src/slic3r/Utils/3DPrinterOS.cpp @@ -323,7 +323,7 @@ bool C3DPrinterOS::login(wxString& msg) const msg.clear(); std::string token = get_api_auth_token(msg); if (token.empty()) { - msg = _L("Error. Can't get api token for authorization"); + msg = _L("Error. Can't get API token for authorization"); return false; } @@ -627,7 +627,7 @@ void C3DPrinterOS::send_form( responseTree.put("result", false); responseTree.put("message", error); }) - .on_complete([&, this](std::string body, unsigned) { + .on_complete([&](std::string body, unsigned) { std::stringstream ss(body); try { pt::read_json(ss, responseTree); diff --git a/src/slic3r/Utils/BBLPrinterAgent.cpp b/src/slic3r/Utils/BBLPrinterAgent.cpp index ef85e0a1ff..5e73edf84c 100644 --- a/src/slic3r/Utils/BBLPrinterAgent.cpp +++ b/src/slic3r/Utils/BBLPrinterAgent.cpp @@ -1,11 +1,121 @@ #include "BBLPrinterAgent.hpp" #include "BBLNetworkPlugin.hpp" #include "NetworkAgentFactory.hpp" +#include "libslic3r/Utils.hpp" #include <boost/log/trivial.hpp> +#include <boost/nowide/fstream.hpp> +#include <nlohmann/json.hpp> +using json = nlohmann::json; + +#include <unordered_map> namespace Slic3r { +namespace { + +// Bambu's own catalog ids for every filament this app ships, Bambu's own included, since Orca +// content-addresses those too. Keyed both ways so each of the four translation entry points +// below is a single lookup. Loaded once per process, on first use. A missing or malformed file +// logs once and leaves both maps empty, so every translation degrades to identity. Same shape +// as DevFilaBlacklist::load_filaments_blacklist_config. +struct BambuFilamentIdMap { std::unordered_map<std::string, std::string> to_bambu, to_orca; }; + +const BambuFilamentIdMap& bambu_filament_id_map() +{ + static const BambuFilamentIdMap map = [] { + BambuFilamentIdMap m; + const std::string path = resources_dir() + "/printers/bambu_filament_ids.json"; + try { + boost::nowide::ifstream file(path); + if (!file.is_open()) { + BOOST_LOG_TRIVIAL(warning) << "Bambu filament id map not found, ids pass through untranslated: " << path; + return m; + } + json doc; + file >> doc; + for (const auto& [orca_filament_id, row] : doc.at("filaments").items()) { + const std::string bambu_id = row.at("bambu_id").get<std::string>(); + m.to_bambu.emplace(orca_filament_id, bambu_id); + m.to_orca.emplace(bambu_id, orca_filament_id); + } + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "Bambu filament id map unreadable, ids pass through untranslated: " << e.what(); + m = {}; + } + return m; + }(); + return map; +} + +// Rewrites every string under "tray_info_idx", "filament_id" or "filamentId", at any depth, in place. +void rewrite_filament_ids(json& j, const std::unordered_map<std::string, std::string>& map) +{ + if (j.is_object()) { + for (auto& [key, value] : j.items()) { + if (value.is_string() && (key == "tray_info_idx" || key == "filament_id" || key == "filamentId")) { + auto it = map.find(value.get_ref<const std::string&>()); + if (it != map.end()) + value = it->second; + } else + rewrite_filament_ids(value, map); + } + } else if (j.is_array()) + for (auto& element : j) + rewrite_filament_ids(element, map); +} + +// Text that does not parse as JSON, or that mentions none of the id keys, comes back byte-identical. +std::string rewrite_filament_ids(std::string text, const std::unordered_map<std::string, std::string>& map) +{ + if (map.empty() || (text.find("tray_info_idx") == std::string::npos && text.find("filament_id") == std::string::npos && + text.find("filamentId") == std::string::npos)) + return text; // nothing to map, skip the parse (moved, not copied) + try { + json j = json::parse(text); + rewrite_filament_ids(j, map); + return j.dump(); + } catch (const std::exception&) { + return text; // not JSON: forward as received + } +} + +// Wraps an inbound message callback so every Bambu id it delivers arrives already translated. +// A null fn is a deregistration (see GUI_App.cpp's shutdown phase 1 and NetworkAgent::apply_printer_callbacks +// clearing callbacks with {}), and must stay null rather than become a live wrapper around an empty target. +OnMessageFn to_orca_messages(OnMessageFn fn) +{ + if (!fn) + return fn; + return [fn = std::move(fn)](std::string dev_id, std::string msg) { fn(std::move(dev_id), BBLPrinterAgent::to_orca_payload(std::move(msg))); }; +} + +} // namespace + +std::string BBLPrinterAgent::to_orca_filament_id(const std::string& printer_filament_id) const +{ + const auto& map = bambu_filament_id_map().to_orca; + auto it = map.find(printer_filament_id); + return it != map.end() ? it->second : printer_filament_id; +} + +std::string BBLPrinterAgent::from_orca_filament_id(const std::string& orca_filament_id) const +{ + const auto& map = bambu_filament_id_map().to_bambu; + auto it = map.find(orca_filament_id); + return it != map.end() ? it->second : orca_filament_id; +} + +std::string BBLPrinterAgent::to_orca_payload(std::string json_text) +{ + return rewrite_filament_ids(std::move(json_text), bambu_filament_id_map().to_orca); +} + +std::string BBLPrinterAgent::from_orca_payload(std::string json_text) +{ + return rewrite_filament_ids(std::move(json_text), bambu_filament_id_map().to_bambu); +} + BBLPrinterAgent::BBLPrinterAgent() = default; BBLPrinterAgent::~BBLPrinterAgent() = default; @@ -22,6 +132,7 @@ void BBLPrinterAgent::set_cloud_agent(std::shared_ptr<ICloudServiceAgent> cloud) int BBLPrinterAgent::send_message(std::string dev_id, std::string json_str, int qos, int flag) { + json_str = from_orca_payload(std::move(json_str)); auto& plugin = BBLNetworkPlugin::instance(); auto agent = plugin.get_agent(); auto func = plugin.get_send_message(); @@ -67,6 +178,7 @@ int BBLPrinterAgent::disconnect_printer() int BBLPrinterAgent::send_message_to_printer(std::string dev_id, std::string json_str, int qos, int flag) { + json_str = from_orca_payload(std::move(json_str)); auto& plugin = BBLNetworkPlugin::instance(); auto agent = plugin.get_agent(); auto func = plugin.get_send_message_to_printer(); @@ -321,6 +433,7 @@ int dispatch_start(CurrentFn func, PrintParams& params, const CallbackFns&... ca auto agent = plugin.get_agent(); if (!func || !agent) return -1; + params.ams_mapping_info = BBLPrinterAgent::from_orca_payload(std::move(params.ams_mapping_info)); switch (plugin.network_abi()) { case NetworkAbi::Legacy: return reinterpret_cast<LegacyFn>(func)(agent, BBLNetworkPlugin::as_legacy(params), callbacks...); @@ -408,7 +521,7 @@ int BBLPrinterAgent::set_on_message_fn(OnMessageFn fn) auto agent = plugin.get_agent(); auto func = plugin.get_set_on_message_fn(); if (func && agent) { - return func(agent, fn); + return func(agent, to_orca_messages(std::move(fn))); } return -1; } @@ -441,7 +554,7 @@ int BBLPrinterAgent::set_on_local_message_fn(OnMessageFn fn) auto agent = plugin.get_agent(); auto func = plugin.get_set_on_local_message_fn(); if (func && agent) { - return func(agent, fn); + return func(agent, to_orca_messages(std::move(fn))); } return -1; } diff --git a/src/slic3r/Utils/BBLPrinterAgent.hpp b/src/slic3r/Utils/BBLPrinterAgent.hpp index a8880bf6bf..83e21bb6d8 100644 --- a/src/slic3r/Utils/BBLPrinterAgent.hpp +++ b/src/slic3r/Utils/BBLPrinterAgent.hpp @@ -84,6 +84,20 @@ public: int set_queue_on_main_fn(QueueOnMainFn fn) override; FilamentSyncMode get_filament_sync_mode() const override; + // Bambu's own catalog ids. Orca content-addresses every system filament, Bambu's included; + // the printer, the AMS and Bambu's cloud know only Bambu's ids, so this agent translates at + // the boundary through resources/printers/bambu_filament_ids.json (generated by + // scripts/update_bambu_filament_ids.py). An id without a map row is returned as it is. + std::string to_orca_filament_id(const std::string& printer_filament_id) const override; + std::string from_orca_filament_id(const std::string& orca_filament_id) const override; + + // Rewrite every string under "tray_info_idx", "filament_id" or "filamentId", at any depth, + // in a JSON document (an MQTT payload or PrintParams::ams_mapping_info). Text that does not + // parse, or contains none of the keys, is returned unchanged. + // Taken by value: most outbound traffic carries no filament id and is moved straight back out. + static std::string to_orca_payload(std::string json_text); + static std::string from_orca_payload(std::string json_text); + private: std::shared_ptr<ICloudServiceAgent> m_cloud_agent; }; diff --git a/src/slic3r/Utils/Bonjour.hpp b/src/slic3r/Utils/Bonjour.hpp index 50b71791fa..3ef8f0e1a2 100644 --- a/src/slic3r/Utils/Bonjour.hpp +++ b/src/slic3r/Utils/Bonjour.hpp @@ -115,6 +115,7 @@ class UdpSession { public: UdpSession(Bonjour::ReplyFn rfn); + virtual ~UdpSession() = default; virtual void handle_receive(const boost::system::error_code& error, size_t bytes) = 0; std::vector<char> buffer; boost::asio::ip::udp::endpoint remote_endpoint; diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 473f62337f..499228d13c 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -62,22 +62,29 @@ std::vector<std::string> not_support_auto_pa_cali_filaments = { void get_default_k_n_value(const std::string &filament_id, float &k, float &n) { - if (filament_id.compare("GFU01") == 0) { + // filament_id is our OF id; the literals below are the printer's own. An id the agent has + // no mapping for (e.g. a caller still on the old id) passes through unchanged. + auto* agent = wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(filament_id) : filament_id; + if (printer_filament_id.compare("GFU01") == 0) { /* TPU 95A */ k = 0.25; n = 1.0; - } else if (filament_id.compare("GFU03") == 0) { + } else if (printer_filament_id.compare("GFU03") == 0) { /* TPU 90A */ k = 0.35; n = 1.0; - } else if (filament_id.compare("GFU04") == 0) { + } else if (printer_filament_id.compare("GFU04") == 0) { /* TPU 85A */ k = 0.65; n = 1.0; - } else if (filament_id.compare("GFG00") == 0 || filament_id.compare("GFG01") == 0 || filament_id.compare("GFG60") == 0 || filament_id.compare("GFL06") == 0 || - filament_id.compare("GFL55") == 0 || filament_id.compare("GFG99") == 0 || filament_id.compare("GFG98") == 0 || filament_id.compare("GFG97") == 0 || - filament_id.compare("GFG50") == 0 || filament_id.compare("GFU02") == 0 || filament_id.compare("GFU98") == 0 || filament_id.compare("GFS00") == 0 || - filament_id.compare("GFS02") == 0) { + } else if (printer_filament_id.compare("GFG00") == 0 || printer_filament_id.compare("GFG01") == 0 || + printer_filament_id.compare("GFG60") == 0 || printer_filament_id.compare("GFL06") == 0 || + printer_filament_id.compare("GFL55") == 0 || printer_filament_id.compare("GFG99") == 0 || + printer_filament_id.compare("GFG98") == 0 || printer_filament_id.compare("GFG97") == 0 || + printer_filament_id.compare("GFG50") == 0 || printer_filament_id.compare("GFU02") == 0 || + printer_filament_id.compare("GFU98") == 0 || printer_filament_id.compare("GFS00") == 0 || + printer_filament_id.compare("GFS02") == 0) { /* 0.04 filaments */ k = 0.04; n = 1.0; @@ -1393,7 +1400,10 @@ void CalibUtils::calib_retraction(const CalibInfo &calib_info, wxString &error_m bool CalibUtils::is_support_auto_pa_cali(std::string filament_id) { - auto iter = std::find(not_support_auto_pa_cali_filaments.begin(), not_support_auto_pa_cali_filaments.end(), filament_id); + // filament_id is our OF id; not_support_auto_pa_cali_filaments holds the printer's own ids. + auto* agent = wxGetApp().getAgent(); + const std::string printer_filament_id = agent ? agent->from_orca_filament_id(filament_id) : filament_id; + auto iter = std::find(not_support_auto_pa_cali_filaments.begin(), not_support_auto_pa_cali_filaments.end(), printer_filament_id); if (iter != not_support_auto_pa_cali_filaments.end()) { return false; } diff --git a/src/slic3r/Utils/CrealityPrintAgent.cpp b/src/slic3r/Utils/CrealityPrintAgent.cpp index 55d99ff07b..9b3bd5843e 100644 --- a/src/slic3r/Utils/CrealityPrintAgent.cpp +++ b/src/slic3r/Utils/CrealityPrintAgent.cpp @@ -8,7 +8,9 @@ #include <nlohmann/json.hpp> #include <algorithm> +#include <cctype> #include <map> +#include <set> namespace Slic3r { @@ -16,6 +18,12 @@ namespace { constexpr const char* CrealityPrintAgent_VERSION = "0.1.0"; +std::string to_lower(std::string s) +{ + for (auto& c : s) c = static_cast<char>(std::tolower(static_cast<unsigned char>(c))); + return s; +} + bool has_visible_base_preset(const PresetCollection& filaments, const std::string& filament_id) { for (const auto& p : filaments.get_presets()) { @@ -27,19 +35,47 @@ bool has_visible_base_preset(const PresetCollection& filaments, const std::strin return false; } +// Lower-case words of a preset name with the "@scope" suffix dropped: +// "Generic PLA Matte @Creality K2-all" -> {"generic", "pla", "matte"}. +std::vector<std::string> name_words(const std::string& name) +{ + std::vector<std::string> words; + std::string word; + for (char c : name.substr(0, name.find('@'))) { + if (std::isalnum(static_cast<unsigned char>(c))) { + word += static_cast<char>(std::tolower(static_cast<unsigned char>(c))); + } else if (!word.empty()) { + words.push_back(word); + word.clear(); + } + } + if (!word.empty()) + words.push_back(word); + return words; +} + } // namespace // Score visible compatible filament presets against the CFS spool metadata and // return the best-matching filament_id. Scoring: // +20 preset name contains brand_name as a substring // (e.g. "Hyper PLA" in "Hyper PLA @Creality K2 0.4 nozzle") -// +10 preset name contains the vendor substring (e.g. "Creality") -// Tiebreak: prefer the SYSTEM (shipped) preset over user copies. Brand- -// specific system presets carry their own filament_id; user copies of -// generic presets inherit a generic filament_id from their parent, so -// preferring the user copy can collapse a brand-specific match back to -// "Generic PLA" via the inherited id. Plus: this code targets upstream -// OrcaSlicer where shipping the user's local tuning would be wrong. +// +10 the preset belongs to the spool's vendor - by its owning VendorProfile OR by +// its name. The profile test is what finds the vendor's own generics, which are +// named "Generic <material> @<scope>" and do not repeat the vendor; the name test +// still finds a third party filament shipped inside that vendor's bundle, which +// carries the bundle owner's profile but names its real brand. +// -5 per word of the preset name the spool never mentioned ("generic" excepted - +// it marks the unbranded base product rather than a qualifier), so the least +// specific preset that still explains the spool wins. Without it a spool +// reporting only "PLA" scores "Generic PLA High Speed" and "Generic PLA Matte" +// exactly as high as "Generic PLA"; those are three products with three +// filament_ids, so whichever sorted first won and the printer got the wrong +// one. Applied after the score gate, so it only reorders genuine matches. +// Tiebreak: prefer the SYSTEM (shipped) preset over user copies, then by name so the +// winner never depends on how std::sort leaves equal elements. User copies of generic +// presets inherit a generic filament_id from their parent, so preferring the user copy +// can collapse a brand-specific match back to "Generic PLA" via the inherited id. // Requires the preset's declared filament_type to equal the spool's base type // (PLA/PETG/ABS/...) so we never auto-pick a PETG preset for a PLA spool. // Falls back to filaments.filament_id_by_type(base_type) when nothing scores. @@ -48,15 +84,17 @@ std::string CrealityPrintAgent::match_filament_preset(const PresetCollection& fi const std::string& brand_name, const std::string& base_type) { - auto to_lower = [](std::string s) { - for (auto& c : s) c = static_cast<char>(std::tolower(static_cast<unsigned char>(c))); - return s; - }; - const std::string vendor_lower = to_lower(vendor); const std::string brand_lower = to_lower(brand_name); const std::string type_lower = to_lower(base_type); + // Everything the spool told us about itself, as words. A word in a preset's name + // that is not in here is a qualifier the spool never claimed. + std::set<std::string> spool_words{"generic"}; + for (const std::string& src : {brand_lower, vendor_lower, type_lower}) + for (auto& w : name_words(src)) + spool_words.insert(std::move(w)); + struct Match { const Preset* preset; int score; @@ -83,11 +121,20 @@ std::string CrealityPrintAgent::match_filament_preset(const PresetCollection& fi int score = 0; if (!brand_lower.empty() && name_lower.find(brand_lower) != std::string::npos) score += 20; - if (!vendor_lower.empty() && name_lower.find(vendor_lower) != std::string::npos) + // Profile OR name - neither alone covers both the vendor's own generics and the + // third party filaments shipped inside its bundle. See the header comment. + if (!vendor_lower.empty() + && ((p.vendor != nullptr && to_lower(p.vendor->name) == vendor_lower) + || name_lower.find(vendor_lower) != std::string::npos)) score += 10; - if (score > 0) - matches.push_back({&p, score, !p.is_system && !p.is_default}); + if (score == 0) continue; + + for (const auto& w : name_words(p.name)) + if (spool_words.count(w) == 0) + score -= 5; + + matches.push_back({&p, score, !p.is_system && !p.is_default}); } if (matches.empty()) { @@ -105,7 +152,7 @@ std::string CrealityPrintAgent::match_filament_preset(const PresetCollection& fi [](const Match& a, const Match& b) { if (a.score != b.score) return a.score > b.score; if (a.is_user != b.is_user) return !a.is_user; // prefer system over user - return false; + return a.preset->name < b.preset->name; // keep the winner deterministic }); BOOST_LOG_TRIVIAL(info) diff --git a/src/slic3r/Utils/FixModelByCgal.cpp b/src/slic3r/Utils/FixModelByCgal.cpp index 8d196f7201..9d973844bb 100644 --- a/src/slic3r/Utils/FixModelByCgal.cpp +++ b/src/slic3r/Utils/FixModelByCgal.cpp @@ -12,6 +12,7 @@ #include "libslic3r/MeshBoolean.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/format.hpp" #include "libslic3r/Thread.hpp" #include "../GUI/I18N.hpp" @@ -69,6 +70,9 @@ public: // Returns false if fixing was canceled. fix_result contains error message if failed. bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::ProgressDialog &progress_dialog, const wxString &msg_header, std::string &fix_result, bool keep_painting) { + // Hold SaveObjectGaurd to prevent backup manager from racing concurrent mesh mutations (use-after-free). + SaveObjectGaurd backup_gaurd(model_object); + // Orca: Synchronization primitives for progress updates between worker thread and GUI. std::mutex mtx; std::condition_variable condition; diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index f1ff056d10..6f43df74e4 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -254,10 +254,8 @@ int Http::priv::xfercb(void *userp, curl_off_t dltotal, curl_off_t dlnow, curl_o bool cb_cancel = false; if (self->progressfn) { - double speed; + double speed = 0.; curl_easy_getinfo(self->curl, CURLINFO_SPEED_UPLOAD, &speed); - if (speed > 0.01) - speed = speed; Progress progress(dltotal, dlnow, ultotal, ulnow, self->buffer, speed); self->progressfn(progress, cb_cancel); } @@ -323,8 +321,10 @@ void Http::priv::form_add_file(const char *name, const fs::path &path, const cha // We can't use CURLFORM_FILECONTENT, because curl doesn't support Unicode filenames on Windows // and so we use CURLFORM_STREAM with boost ifstream to read the file. + std::string filename_str; if (filename == nullptr) { - filename = path.string().c_str(); + filename_str = path.string(); + filename = filename_str.c_str(); } form_files.emplace_back(path, offset, length); diff --git a/src/slic3r/Utils/IPrinterAgent.hpp b/src/slic3r/Utils/IPrinterAgent.hpp index 0fa3616344..1f0d45dc1e 100644 --- a/src/slic3r/Utils/IPrinterAgent.hpp +++ b/src/slic3r/Utils/IPrinterAgent.hpp @@ -290,6 +290,16 @@ public: * Populates the MachineObject's DevFilaSystem with fetched filament data. */ virtual bool fetch_filament_info(std::string dev_id) { return false; } + + /** + * Translate one filament id across the printer boundary. + * + * Orca content-addresses every system filament; a printer, its AMS and its vendor cloud + * know only that vendor's own catalog ids. An agent whose printers already speak Orca's + * ids leaves them alone, and so does an id with no mapping. + */ + virtual std::string to_orca_filament_id(const std::string& printer_filament_id) const { return printer_filament_id; } + virtual std::string from_orca_filament_id(const std::string& orca_filament_id) const { return orca_filament_id; } }; } // namespace Slic3r diff --git a/src/slic3r/Utils/Moonraker.cpp b/src/slic3r/Utils/Moonraker.cpp index f1ca432390..73fdb8486a 100644 --- a/src/slic3r/Utils/Moonraker.cpp +++ b/src/slic3r/Utils/Moonraker.cpp @@ -80,7 +80,7 @@ bool Moonraker::test(wxString &msg) const res = false; msg = format_error(body, error, status); }) - .on_complete([&, this](std::string body, unsigned) { + .on_complete([&](std::string body, unsigned) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: /server/info body: %2%") % name % body; try { std::stringstream ss(body); @@ -141,7 +141,7 @@ bool Moonraker::get_storage(wxArrayString &storage_path, wxArrayString &storage_ % name % error % status % body; } }) - .on_complete([&, this](std::string body, unsigned) { + .on_complete([&](std::string body, unsigned) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: /server/files/roots body: %2%") % name % body; try { std::stringstream ss(body); diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp index cd3ef82b62..571d707a9f 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp @@ -19,6 +19,7 @@ #include <chrono> #include <cstdint> #include <cctype> +#include <map> #include <thread> namespace { @@ -619,51 +620,70 @@ std::string MoonrakerPrinterAgent::map_filament_type_to_generic_id(const std::st { const std::string upper = trim_and_upper(filament_type); - // Map to OrcaFilamentLibrary preset IDs (compatible with all printers) - // Source: resources/profiles/OrcaFilamentLibrary/filament/ + // Normalize reported material names (trimmed, uppercased) to an OrcaFilamentLibrary + // generic family. The family's filament_id is resolved from the loaded system presets + // below rather than hardcoded, so profile id re-mints never require touching this table. + // scripts/test_moonraker_lane_data.py parses this initializer; keep the {"A", "B"} format. + static const std::map<std::string, std::string> type_to_ofl_family = { + // PLA variants + {"PLA", "PLA"}, + {"PLA-CF", "PLA-CF"}, + {"PLA SILK", "PLA Silk"}, + {"PLA-SILK", "PLA Silk"}, + {"PLA HIGH SPEED", "PLA High Speed"}, + {"PLA-HS", "PLA High Speed"}, + {"PLA HS", "PLA High Speed"}, - // PLA variants - if (upper == "PLA") return "OGFL99"; - if (upper == "PLA-CF") return "OGFL98"; - if (upper == "PLA SILK" || upper == "PLA-SILK") return "OGFL96"; - if (upper == "PLA HIGH SPEED" || upper == "PLA-HS" || upper == "PLA HS") return "OGFL95"; + // ABS/ASA variants + {"ABS", "ABS"}, + {"ASA", "ASA"}, - // ABS/ASA variants - if (upper == "ABS") return "OGFB99"; - if (upper == "ASA") return "OGFB98"; + // PETG/PET variants + {"PETG", "PETG"}, + {"PET", "PETG"}, + {"PCTG", "PCTG"}, - // PETG/PET variants - if (upper == "PETG" || upper == "PET") return "OGFG99"; - if (upper == "PCTG") return "OGFG97"; + // PA/Nylon variants + {"PA", "PA"}, + {"NYLON", "PA"}, + {"PA-CF", "PA-CF"}, + {"PPA", "PPA-CF"}, + {"PPA-CF", "PPA-CF"}, + {"PPA-GF", "PPA-GF"}, - // PA/Nylon variants - if (upper == "PA" || upper == "NYLON") return "OGFN99"; - if (upper == "PA-CF") return "OGFN98"; - if (upper == "PPA" || upper == "PPA-CF") return "OGFN97"; - if (upper == "PPA-GF") return "OGFN96"; + // PC variants + {"PC", "PC"}, - // PC variants - if (upper == "PC") return "OGFC99"; + // PP/PE variants + {"PE", "PE"}, + {"PP", "PP"}, - // PP/PE variants - if (upper == "PE") return "OGFP99"; - if (upper == "PP") return "OGFP97"; + // Support materials + {"PVA", "PVA"}, + {"HIPS", "HIPS"}, + {"BVOH", "BVOH"}, - // Support materials - if (upper == "PVA") return "OGFS99"; - if (upper == "HIPS") return "OGFS98"; - if (upper == "BVOH") return "OGFS97"; + // TPU variants + {"TPU", "TPU"}, - // TPU variants - if (upper == "TPU") return "OGFU99"; + // Other materials + {"EVA", "EVA"}, + {"PHA", "PHA"}, + {"COPE", "CoPE"}, + {"SBS", "SBS"}, + }; - // Other materials - if (upper == "EVA") return "OGFR99"; - if (upper == "PHA") return "OGFR98"; - if (upper == "COPE") return "OGFLC99"; - if (upper == "SBS") return "OFLSBS99"; + auto it = type_to_ofl_family.find(upper); + if (it == type_to_ofl_family.end()) + return UNKNOWN_FILAMENT_ID; - // Unknown material + if (auto* bundle = GUI::wxGetApp().preset_bundle) { + const Preset* preset = bundle->filaments.find_preset("Generic " + it->second + " @System"); + if (preset != nullptr && preset->is_system && !preset->filament_id.empty()) + return preset->filament_id; + } + + // Unknown material, or no loaded preset data to resolve against return UNKNOWN_FILAMENT_ID; } diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 0d77e5e660..b15e10c591 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -929,6 +929,20 @@ bool NetworkAgent::fetch_filament_info(std::string dev_id) return false; } +std::string NetworkAgent::to_orca_filament_id(const std::string& printer_filament_id) const +{ + if (m_printer_agent) + return m_printer_agent->to_orca_filament_id(printer_filament_id); + return printer_filament_id; +} + +std::string NetworkAgent::from_orca_filament_id(const std::string& orca_filament_id) const +{ + if (m_printer_agent) + return m_printer_agent->from_orca_filament_id(orca_filament_id); + return orca_filament_id; +} + int NetworkAgent::request_bind_ticket(std::string* ticket) { if (m_printer_agent) diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index d7032b7a20..76128073a4 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -165,6 +165,8 @@ public: int start_sdcard_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn); FilamentSyncMode get_filament_sync_mode() const; bool fetch_filament_info(std::string dev_id); + std::string to_orca_filament_id(const std::string& printer_filament_id) const; + std::string from_orca_filament_id(const std::string& orca_filament_id) const; int request_bind_ticket(std::string* ticket); int get_hms_snapshot(std::string dev_id, std::string file_name, std::function<void(std::string, int)> callback); diff --git a/src/slic3r/Utils/Obico.cpp b/src/slic3r/Utils/Obico.cpp index 5541d1c683..92d748b496 100644 --- a/src/slic3r/Utils/Obico.cpp +++ b/src/slic3r/Utils/Obico.cpp @@ -86,7 +86,7 @@ bool Obico::test(wxString& msg) const res = false; msg = format_error(body, error, status); }) - .on_complete([&, this](std::string body, unsigned) { + .on_complete([&](std::string body, unsigned) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got version: %2%") % name % body; }) #ifdef WIN32 diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 4419395b4d..4bfe429cd3 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -859,9 +859,11 @@ std::string OrcaCloudServiceAgent::build_login_cmd() display_name = "unknown name"; } json cmd; - cmd["command"] = "orca_userlogin"; - cmd["data"]["name"] = display_name; - cmd["data"]["avatar"] = get_user_avatar(); + cmd["command"] = "orca_userlogin"; + cmd["data"]["name"] = display_name; + cmd["data"]["avatar"] = get_user_avatar(); + // The unique handle, shown under the display name in the homepage account menu. + cmd["data"]["account"] = get_user_name(); return cmd.dump(); } diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 017deb0fc9..b328c43cca 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -536,7 +536,7 @@ void PresetUpdater::priv::sync_resources(std::string http_url, std::map<std::str cancel_http = true; } }) - .on_complete([this, &resource_list, resources](std::string body, unsigned) { + .on_complete([&resource_list, resources](std::string body, unsigned) { try { BOOST_LOG_TRIVIAL(info) << "[Orca Updater]: request_resources, body=" << body; diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index 0d269e1cd5..a524f29b71 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -73,7 +73,7 @@ bool Repetier::test(wxString &msg) const res = false; msg = format_error(body, error, status); }) - .on_complete([&, this](std::string body, unsigned) { + .on_complete([&](std::string body, unsigned) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got version: %2%") % name % body; try { diff --git a/src/slic3r/Utils/SimplyPrint.cpp b/src/slic3r/Utils/SimplyPrint.cpp index bbfd5209c9..a3edfd98ee 100644 --- a/src/slic3r/Utils/SimplyPrint.cpp +++ b/src/slic3r/Utils/SimplyPrint.cpp @@ -192,7 +192,7 @@ bool SimplyPrint::do_api_call(std::function<Http(bool)> bool res = true; - const auto create_request = [this, &build_request, &res, &on_complete](const std::string& access_token, bool is_retry) { + const auto create_request = [&build_request, &res, &on_complete](const std::string& access_token, bool is_retry) { auto http = build_request(is_retry); set_auth(http, access_token); http.header("User-Agent", "SimplyPrint Orca Plugin") @@ -300,7 +300,7 @@ bool SimplyPrint::do_temp_upload(const boost::filesystem::path& file_path, return http; }, - [&error_fn, &filename, this](std::string body, unsigned status) { + [&error_fn, &filename](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(info) << boost::format("SimplyPrint: File uploaded: HTTP %1%: %2%") % status % body; // Get file UUID @@ -423,7 +423,7 @@ bool SimplyPrint::do_chunk_upload(const boost::filesystem::path& file_path, cons return http; }, - [&error_fn, i, chunk_amount, this, &chunk_id, &delete_token](std::string body, unsigned status) { + [&error_fn, i, chunk_amount, &chunk_id, &delete_token](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(info) << boost::format("SimplyPrint: File chunk [%1%/%2%] uploaded: HTTP %3%: %4%") % (i + 1) % chunk_amount % status % body; if (i == 0) { // First chunk, parse chunk id diff --git a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp index 9b9a6809fd..ab7aa9bd52 100644 --- a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp +++ b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp @@ -39,7 +39,7 @@ std::string find_closest_color_preset_by_vendor_and_type(const PresetCollection& std::string p_color = p.config.opt_string("default_filament_colour", 0u); unsigned int p_color_value; if (!p_color.empty()) { - unsigned int hash_pos = p_color.find("#"); + size_t hash_pos = p_color.find("#"); p_color_value = std::stoul(p_color.substr(hash_pos != std::string::npos ? hash_pos + 1 : 0), nullptr, 16); } else { // Default to black if no color specified in profile. Assume other profiles might be a closer color match. diff --git a/src/slic3r/plugin/PluginAuditManager.hpp b/src/slic3r/plugin/PluginAuditManager.hpp index d6751a57fd..153f9d6107 100644 --- a/src/slic3r/plugin/PluginAuditManager.hpp +++ b/src/slic3r/plugin/PluginAuditManager.hpp @@ -1,7 +1,8 @@ #ifndef slic3r_PluginAuditManager_hpp_ #define slic3r_PluginAuditManager_hpp_ -#include <Python.h> +// Via pybind11 so this file requests the same python3xx.lib as everything else. +#include <pybind11/conduit/wrap_include_python_h.h> #include <memory> #include <mutex> #include <string> diff --git a/src/slic3r/plugin/PythonInterpreter.hpp b/src/slic3r/plugin/PythonInterpreter.hpp index ff69ce6846..e15aa91598 100644 --- a/src/slic3r/plugin/PythonInterpreter.hpp +++ b/src/slic3r/plugin/PythonInterpreter.hpp @@ -1,7 +1,8 @@ #ifndef slic3r_PythonInterpreter_hpp_ #define slic3r_PythonInterpreter_hpp_ -#include <Python.h> +// Via pybind11 so this file requests the same python3xx.lib as everything else. +#include <pybind11/conduit/wrap_include_python_h.h> #include <pytypedefs.h> #include <atomic> #include <functional> diff --git a/src/slic3r/win_platform.hpp b/src/slic3r/win_platform.hpp new file mode 100644 index 0000000000..0c5a8e81b2 --- /dev/null +++ b/src/slic3r/win_platform.hpp @@ -0,0 +1,19 @@ +#pragma once + +// Force-included into libslic3r_gui when SLIC3R_PCH is OFF, standing in for +// pchheader.hpp, which includes <Windows.h> before anything else. Arriving +// late and transitively, rpcndr.h defines a global `byte` that collides with +// std::byte under `using namespace std`, and the control and URL moniker +// types the GUI uses are never declared. +#ifdef _WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include <Windows.h> + #include <CommCtrl.h> + #include <urlmon.h> +#endif // _WIN32 + diff --git a/tests/fff_print/CMakeLists.txt b/tests/fff_print/CMakeLists.txt index fc46bb8fdc..3247bfda66 100644 --- a/tests/fff_print/CMakeLists.txt +++ b/tests/fff_print/CMakeLists.txt @@ -19,6 +19,7 @@ add_executable(${_TEST_NAME}_tests test_skirt_brim.cpp test_slicing_pipeline_hook.cpp test_support_material.cpp + test_tree_support.cpp test_trianglemesh.cpp test_wipe_tower.cpp ) diff --git a/tests/fff_print/test_cooling.cpp b/tests/fff_print/test_cooling.cpp index ec29b5fdc9..a21ff236ce 100644 --- a/tests/fff_print/test_cooling.cpp +++ b/tests/fff_print/test_cooling.cpp @@ -2,7 +2,10 @@ #include "test_helpers.hpp" +#include <algorithm> +#include <sstream> #include <string> +#include <vector> using namespace Slic3r; using namespace Slic3r::Test; @@ -25,3 +28,68 @@ TEST_CASE("Cooling consumes its internal speed markers", "[Cooling]") const std::string gcode = slice({ cube(20) }, { { "layer_height", 0.2 } }); CHECK(gcode.find(";_EXTRUDE_SET_SPEED") == std::string::npos); } + +TEST_CASE("Overhang fan transitions do not depend on overhang speed", "[Cooling][Regression]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ + { "bridge_speed", 2.0 }, + { "enable_arc_fitting", false }, + { "enable_overhang_bridge_fan", true }, + { "enable_overhang_speed", false }, + { "initial_layer_print_height", 0.3 }, + { "inner_wall_speed", 30.0 }, + { "layer_height", 0.3 }, + { "outer_wall_speed", 30.0 }, + { "overhang_1_4_speed", "30" }, + { "overhang_2_4_speed", "29" }, + { "overhang_3_4_speed", "6" }, + { "overhang_4_4_speed", "3" }, + { "slow_down_for_layer_cooling", false }, + { "slowdown_for_curled_perimeters", false }, + }); + config.set_key_value("fan_max_speed", new ConfigOptionFloats{20.0}); + config.set_key_value("fan_min_speed", new ConfigOptionFloats{20.0}); + config.set_key_value("overhang_fan_speed", new ConfigOptionInts{100}); + config.set_key_value("overhang_fan_threshold", new ConfigOptionEnumsGeneric{Overhang_threshold_2_4}); + config.set_key_value("layer_change_gcode", new ConfigOptionString{";TEST_LAYER_Z=[layer_z]"}); + + const auto fan_commands = [](const std::string &gcode) { + std::vector<std::pair<std::string, std::string>> commands; + std::istringstream input(gcode); + std::string layer; + std::string line; + while (std::getline(input, line)) { + if (line.rfind(";TEST_LAYER_Z=", 0) == 0) + layer = line; + else if (!layer.empty() && (line.rfind("M106", 0) == 0 || line.rfind("M107", 0) == 0)) + commands.emplace_back(layer, line); + } + return commands; + }; + const auto feedrates = [](const std::string &gcode) { + std::vector<std::string> values; + std::istringstream input(gcode); + std::string word; + while (input >> word) + if (!word.empty() && word.front() == 'F') + values.push_back(word); + return values; + }; + + constexpr double sphere_radius = 50.0; // 100 mm diameter. + const std::string without_speed_gcode = slice({make_sphere(sphere_radius, PI / 24.0)}, config); + config.set_deserialize_strict({{"enable_overhang_speed", true}}); + const std::string with_speed_gcode = slice({make_sphere(sphere_radius, PI / 24.0)}, config); + + const auto without_speed_fan = fan_commands(without_speed_gcode); + const auto with_speed_fan = fan_commands(with_speed_gcode); + const auto without_speed_feedrates = feedrates(without_speed_gcode); + const auto with_speed_feedrates = feedrates(with_speed_gcode); + + REQUIRE_FALSE(without_speed_fan.empty()); + REQUIRE(std::any_of(without_speed_fan.begin(), without_speed_fan.end(), + [](const auto &command) { return command.second.find("S255") != std::string::npos; })); + REQUIRE(with_speed_feedrates != without_speed_feedrates); + CHECK(with_speed_fan == without_speed_fan); +} diff --git a/tests/fff_print/test_fill.cpp b/tests/fff_print/test_fill.cpp index d26639c659..04e5b61831 100644 --- a/tests/fff_print/test_fill.cpp +++ b/tests/fff_print/test_fill.cpp @@ -699,6 +699,213 @@ TEST_CASE("Solid infill direction offsets every layer when no template is set", } } +// Orca: the spiral inset pattern chains the concentric loops into a single continuous path per +// island, so it has to cope with the degenerate loops offsetting leaves behind and it must not join +// loops that only look adjacent. +namespace { + +Slic3r::Polylines spiral_inset_fill(const Slic3r::ExPolygon &surface_shape, double spacing) +{ + std::unique_ptr<Slic3r::Fill> filler(Slic3r::Fill::new_from_type("spiralinset")); + filler->spacing = spacing; + // Cancel the half-spacing contraction fill_surface() applies, so the filler sees the shape as given. + filler->overlap = 0.5 * spacing; + + Slic3r::FillParams fill_params; + fill_params.density = 1.f; + fill_params.dont_adjust = true; + + Slic3r::Surface surface(Slic3r::stBottom, surface_shape); + return filler->fill_surface(&surface, fill_params); +} + +Slic3r::ExPolygon rectangle(double x, double y, double w, double h) +{ + return Slic3r::ExPolygon({Slic3r::Point::new_scale(x, y), Slic3r::Point::new_scale(x + w, y), + Slic3r::Point::new_scale(x + w, y + h), Slic3r::Point::new_scale(x, y + h)}); +} + +// Area of the surface the toolpaths fail to cover, and the largest single patch of it, in mm2. Each +// bead is measured at its own width so the variable width walls are not sold short. +std::pair<double, double> uncovered_area(const Slic3r::ExPolygon &surface_shape, const Slic3r::Polygons &covered) +{ + double total = 0, biggest = 0; + for (const Slic3r::ExPolygon &gap : Slic3r::diff_ex(Slic3r::ExPolygons{surface_shape}, Slic3r::union_(covered))) { + const double area = unscale<double>(unscale<double>(gap.area())); + total += area; + biggest = std::max(biggest, area); + } + return {total, biggest}; +} + +Slic3r::Polygons beads_of(const Slic3r::Polylines &paths, double width) +{ + return Slic3r::offset(paths, float(scale_(0.5 * width))); +} + +Slic3r::Polygons beads_of(const Slic3r::ThickPolylines &paths) +{ + Slic3r::Polygons covered; + for (const Slic3r::ThickPolyline &path : paths) + for (size_t i = 0; i + 1 < path.points.size(); ++i) { + Slic3r::Polyline segment; + segment.points = {path.points[i], path.points[i + 1]}; + Slic3r::append(covered, Slic3r::offset(Slic3r::Polylines{segment}, + float(0.5 * std::max(path.width[2 * i], path.width[2 * i + 1])))); + } + return covered; +} + +} // namespace + +TEST_CASE("Spiral inset fill drops loops shorter than the end clipping", "[Fill][Regression]") +{ + // A sliver whose whole perimeter is shorter than the length clipped off the end of a loop, so the + // clipping consumes the path entirely. Such a loop carries no extrusion and must be dropped + // rather than kept as an empty path and read back from. + const double spacing = 0.45; + + Slic3r::Polylines paths; + REQUIRE_NOTHROW(paths = spiral_inset_fill(rectangle(0, 0, 0.05, 0.05), spacing)); + for (const Slic3r::Polyline &path : paths) + CHECK(path.size() >= 2); + + // The same surface at a size the clipping cannot swallow still gets filled. + REQUIRE_NOTHROW(paths = spiral_inset_fill(rectangle(0, 0, 5, 5), spacing)); + REQUIRE(paths.size() == 1); + CHECK(paths.front().size() >= 2); +} + +TEST_CASE("Spiral inset fill keeps separate islands on separate paths", "[Fill]") +{ + // Two lobes joined by a neck narrower than the loop spacing: the inward offsets break the surface + // into two islands, which cannot share one spiral, and no path may leave the surface. + const double spacing = 0.45; + Slic3r::ExPolygon dumbbell = rectangle(0, 0, 6, 6); + dumbbell = Slic3r::union_ex(Slic3r::ExPolygons{dumbbell, rectangle(6, 2.9, 4, 0.2), rectangle(10, 0, 6, 6)}).front(); + + const Slic3r::Polylines paths = spiral_inset_fill(dumbbell, spacing); + REQUIRE(paths.size() >= 2); + + // Inflate by a hair so that loops sitting exactly on the outline still count as contained. + const Slic3r::ExPolygons within = Slic3r::offset_ex(dumbbell, float(SCALED_EPSILON)); + REQUIRE(within.size() == 1); + for (const Slic3r::Polyline &path : paths) { + CHECK(path.size() >= 2); + CHECK(within.front().contains(path)); + } +} + + +TEST_CASE("Spiral inset fill stays connected across sharp corners", "[Fill][Regression]") +{ + // At a corner of half-angle a, the next ring inward retreats along the bisector by spacing/sin(a), + // which leaves it several spacings from the end of the ring it continues. Judging the break by + // distance broke the spiral into loose rings at every spike; nesting is what decides the island. + const double spacing = 0.45; + const Slic3r::ExPolygon spike({Slic3r::Point::new_scale(0, 0), Slic3r::Point::new_scale(30, 0), + Slic3r::Point::new_scale(15, 4)}); + + const Slic3r::Polylines paths = spiral_inset_fill(spike, spacing); + CHECK(paths.size() == 1); + + const Slic3r::ExPolygons within = Slic3r::offset_ex(spike, float(SCALED_EPSILON)); + REQUIRE(within.size() == 1); + for (const Slic3r::Polyline &path : paths) + CHECK(within.front().contains(path)); +} + +TEST_CASE("Spiral inset fill starts on a convex corner", "[Fill][Regression]") +{ + // The only right angle on this outline is the reflex one: the two edges meeting at the origin + // span 90 degrees exactly as a square corner would, but the material lies outside them. The next + // ring in steps away from a reflex corner along the bisector instead of hugging it, so starting + // the spiral there sent it across a long diagonal on every single ring. + const double spacing = 0.45; + const Slic3r::ExPolygon notched({Slic3r::Point::new_scale(0, 0), Slic3r::Point::new_scale(0, 10), + Slic3r::Point::new_scale(-16, 18), Slic3r::Point::new_scale(-16, -2), + Slic3r::Point::new_scale(-8, -16), Slic3r::Point::new_scale(18, -16), + Slic3r::Point::new_scale(10, 0)}); + + const Slic3r::Polylines paths = spiral_inset_fill(notched, spacing); + REQUIRE(paths.size() >= 1); + + // Every edge of the outline is at least 45 degrees off the bisector of that reflex corner, and + // so is every ring offset from it. A long segment running along the bisector can therefore only + // be the spiral striking out across the rings to reach the next one. + for (const Slic3r::Polyline &path : paths) + for (const Slic3r::Line &segment : path.lines()) { + const Vec2d v = (segment.b - segment.a).cast<double>(); + const double direction = std::fmod(std::atan2(v.y(), v.x()) * 180.0 / M_PI + 180.0, 180.0); + if (std::abs(direction - 45.0) > 25.0) + continue; + CAPTURE(direction, unscale<double>(segment.length())); + CHECK(segment.length() <= scale_(1.5 * spacing)); + } +} + +TEST_CASE("Spiral inset fill closes the gaps with variable width walls", "[Fill]") +{ + // Fixed width loops cannot fill a region that is not a whole number of lines across and leave the + // remainder open, which on a ring shows up as a wedge several lines wide. Plain concentric avoids + // that by building solid surfaces out of Arachne's variable width walls, and so must this pattern. + const double spacing = 0.45; + Slic3r::ExPolygon ring = rectangle(0, 0, 24, 24); + Slic3r::Polygon hole; + for (int i = 0; i < 64; ++i) { + const double angle = -2.0 * PI * i / 64.0; // clockwise, so it reads as a hole + hole.points.emplace_back(Slic3r::Point::new_scale(12 + 7.3 * std::cos(angle), 12 + 7.3 * std::sin(angle))); + } + ring.holes.emplace_back(hole); + + Slic3r::PrintConfig print_config; + Slic3r::PrintObjectConfig object_config; + auto make_filler = [&]() { + std::unique_ptr<Slic3r::Fill> filler(Slic3r::Fill::new_from_type("spiralinset")); + filler->spacing = spacing; + filler->overlap = 0.5 * spacing; // cancel the contraction, so both see the same surface + filler->print_config = &print_config; + filler->print_object_config = &object_config; + return filler; + }; + + Slic3r::FillParams params; + params.density = 1.f; + params.dont_adjust = false; + params.layer_height = 0.2; + + const Slic3r::Surface surface(Slic3r::stTop, ring); + + std::unique_ptr<Slic3r::Fill> fixed = make_filler(); + const Slic3r::Polylines fixed_width = fixed->fill_surface(&surface, params); + REQUIRE(!fixed_width.empty()); + const auto fixed_gaps = uncovered_area(ring, beads_of(fixed_width, fixed->spacing)); + + params.use_arachne = true; + std::unique_ptr<Slic3r::Fill> variable = make_filler(); + const Slic3r::ThickPolylines variable_width = variable->fill_surface_arachne(&surface, params); + REQUIRE(!variable_width.empty()); + const auto variable_gaps = uncovered_area(ring, beads_of(variable_width)); + + CAPTURE(fixed_gaps.first, fixed_gaps.second, variable_gaps.first, variable_gaps.second); + // The wedges the fixed width loops leave behind are what the variable width walls take up. + CHECK(variable_gaps.second < 0.5 * fixed_gaps.second); + CHECK(variable_gaps.first < fixed_gaps.first); + + // And it is still a spiral: far fewer paths than the ring has loops. + // And the walls are still chained into spirals rather than printed one path per wall. The ring is + // at its narrowest (12 - 7.3) mm across and is filled from both sides, so it is at least this many + // walls thick there and thicker elsewhere. Arachne's short thin feature walls cannot join a spiral, + // so only the substantial paths count towards this. + const size_t walls_across = size_t(2.0 * (12.0 - 7.3) / spacing); + size_t spirals = 0; + for (const Slic3r::ThickPolyline &path : variable_width) + if (path.length() > scale_(10.0 * spacing)) + ++spirals; + CAPTURE(spirals, walls_across, variable_width.size(), fixed_width.size()); + CHECK(2 * spirals < walls_across); +} + TEST_CASE("Honeycomb infill rounds its cell corners with the smooth factor", "[Fill]") { // A cell whose sides are several times the line width, so that the corners have room to be rounded. diff --git a/tests/fff_print/test_gcodewriter.cpp b/tests/fff_print/test_gcodewriter.cpp index b09b38e794..c0c9e794b9 100644 --- a/tests/fff_print/test_gcodewriter.cpp +++ b/tests/fff_print/test_gcodewriter.cpp @@ -574,6 +574,9 @@ static DynamicPrintConfig dual_extruder_toolchange_config() config.set_key_value("nozzle_temperature_range_high", new ConfigOptionInts({240, 240})); config.set_key_value("flush_multiplier", new ConfigOptionFloats({1})); config.set_key_value("flush_volumes_matrix", new ConfigOptionFloats({0, 140, 140, 0})); + // Inside the 200x200 test bed; the default y, 220, is not, and generation rejects that. + config.set_key_value("wipe_tower_x", new ConfigOptionFloats({50.})); + config.set_key_value("wipe_tower_y", new ConfigOptionFloats({50.})); return config; } diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index f854939c8c..4564c0b034 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -3,11 +3,103 @@ #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Layer.hpp" +#include <cmath> +#include <map> +#include <set> +#include <vector> + #include "test_helpers.hpp" // get access to init_print, etc +// Not self-contained: its inline constructor uses PrintObject, PrintRegion, SlicingParameters and +// Geometry, so it must follow the headers (pulled in via test_helpers.hpp) that define them. +#include "libslic3r/Support/SupportParameters.hpp" + using namespace Slic3r::Test; using namespace Slic3r; +// Distinct layer Z heights carrying support interface extrusion. +static size_t support_interface_layer_count(const std::string &gcode) +{ + return layers_with_role(gcode, "support material interface").size(); +} + +// Distinct layer Z heights carrying support base extrusion. The base G-code label "support material" +// is a substring of "support material interface", so a base line is a support line that is not an +// interface line. +static size_t support_base_layer_count(const std::string &gcode) +{ + std::set<double> layers; + GCodeReader parser; + parser.parse_buffer(gcode, [&layers](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (! line.extruding(self)) return; + const std::string_view comment = line.comment(); + if (comment.find("support material") != std::string_view::npos && + comment.find("interface") == std::string_view::npos) + layers.insert(self.z()); + }); + return layers.size(); +} + +// Dominant support-interface fill direction per interface layer, in radians [0, pi). Uses the +// length-weighted axial mean (each segment angle doubled so a line and its reverse agree, then +// halved): the parallel infill lines reinforce while the surrounding perimeter cancels. +static std::map<double, double> interface_fill_angle_by_layer(const std::string &gcode) +{ + std::map<double, std::pair<double, double>> acc; // z -> summed length*(cos2a, sin2a) + GCodeReader parser; + parser.parse_buffer(gcode, [&acc](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (! line.extruding(self)) return; + if (line.comment().find("support material interface") == std::string_view::npos) return; + const double dx = line.dist_X(self), dy = line.dist_Y(self); + const double len = std::hypot(dx, dy); + if (len < 1e-6) return; + const double a2 = 2.0 * std::atan2(dy, dx); + auto &p = acc[self.z()]; + p.first += len * std::cos(a2); + p.second += len * std::sin(a2); + }); + std::map<double, double> out; + for (const auto &kv : acc) { + double a = 0.5 * std::atan2(kv.second.second, kv.second.first); + if (a < 0) a += M_PI; + out[kv.first] = a; + } + return out; +} + +// Acute angle (degrees) between two axial fill directions in [0, pi). +static double axial_angle_diff_deg(double a, double b) +{ + const double d = std::fmod(std::fabs(a - b), M_PI); + return std::min(d, M_PI - d) * 180.0 / M_PI; +} + +// Denser interface spacing yields more extruded length. +static double support_interface_extrusion_length(const std::string &gcode) +{ + double len = 0; + GCodeReader parser; + parser.parse_buffer(gcode, [&len](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (! line.extruding(self)) return; + if (line.comment().find("support material interface") == std::string_view::npos) return; + len += std::hypot(line.dist_X(self), line.dist_Y(self)); + }); + return len; +} + +// A cap slab overhanging a base, joined by a central stem: the cap can only be supported by resting on the +// base, forcing a genuine bottom contact. A horizontal tunnel does not work here -- tree/organic can arch a +// branch in from the opening and avoid the floor entirely. +static TriangleMesh support_capital() +{ + TriangleMesh model = make_cube(40, 40, 2); // base [0,40]x[0,40]x[0,2] + TriangleMesh stem = make_cube(8, 8, 12); stem.translate(16, 16, 1); // stem centered, z 1..13 + TriangleMesh cap = make_cube(40, 40, 2); cap.translate(0, 0, 12); // cap z 12..14 + model.merge(stem); + model.merge(cap); + return model; +} + TEST_CASE("Three raft layers are created", "[SupportMaterial]") { Slic3r::Print print; @@ -104,3 +196,272 @@ TEST_CASE("Support G-code emission survives a second slice in the same process", const std::string second = slice({ TestMesh::overhang }, { { "enable_support", 1 } }); REQUIRE(! layers_with_role(second, "support").empty()); } + +// The contact layer counts toward the configured interface layer count, so N configured top +// interface layers produce exactly N interface layers, not N+1. +TEST_CASE("Support top interface layer count matches the configured value", "[SupportMaterial]") +{ + const int top = GENERATE(1, 2, 3, 4, 6); + const std::string g = slice({ TestMesh::overhang }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_on_build_plate_only", 1 }, + { "support_interface_top_layers", top }, + { "support_interface_bottom_layers", 0 }, + }); + CAPTURE(top); + REQUIRE(support_base_layer_count(g) > 0); // support actually formed + REQUIRE(support_interface_layer_count(g) == size_t(top)); +} + +// A rotated cube-with-hole is a horizontal tunnel whose ceiling and floor both receive support, so top +// and bottom interfaces can be exercised independently (the floor is the bottom contact). +static TriangleMesh support_tunnel() +{ + TriangleMesh tunnel = Slic3r::Test::mesh(TestMesh::cube_with_hole); + tunnel.rotate_x(float(M_PI / 2)); + return tunnel; +} + +static size_t tunnel_interface_layers(const TriangleMesh &tunnel, int top, int bottom) +{ + const std::string g = slice({ tunnel }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_on_build_plate_only", 0 }, + { "support_interface_top_layers", top }, + { "support_interface_bottom_layers", bottom }, + }); + REQUIRE(support_base_layer_count(g) > 0); // support actually formed + return support_interface_layer_count(g); +} + +TEST_CASE("No support interface is generated when neither top nor bottom is configured", "[SupportMaterial]") +{ + REQUIRE(tunnel_interface_layers(support_tunnel(), 0, 0) == 0); +} + +TEST_CASE("Bottom interface layer count matches its setting with top interface off", "[SupportMaterial]") +{ + const int bottom = GENERATE(1, 3, 6); + CAPTURE(bottom); + REQUIRE(tunnel_interface_layers(support_tunnel(), 0, bottom) == size_t(bottom)); +} + +// support_interface_bottom_layers = -1 means "same as top". +TEST_CASE("Support interface bottom layers default to the top layer count", "[SupportMaterial]") +{ + const TriangleMesh tunnel = support_tunnel(); + REQUIRE(tunnel_interface_layers(tunnel, 0, -1) == tunnel_interface_layers(tunnel, 0, 0)); + REQUIRE(tunnel_interface_layers(tunnel, 3, -1) == tunnel_interface_layers(tunnel, 3, 3)); +} + +TEST_CASE("Default support still emits base and interface material", "[SupportMaterial][Regression]") +{ + const std::string g = slice({ TestMesh::overhang }, { { "enable_support", 1 } }); + REQUIRE(support_base_layer_count(g) > 0); + REQUIRE(support_interface_layer_count(g) > 0); +} + +// Organic runs TreeSupport3D + TreeModelVolumes, the others the classic TreeSupport.cpp path. +TEST_CASE("Every tree support style produces base and interface material", "[SupportMaterial]") +{ + const char *style = GENERATE("organic", "tree_slim", "tree_strong", "tree_hybrid"); + INFO("style=" << style); + const std::string g = slice({ TestMesh::overhang }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_type", "tree(auto)" }, + { "support_style", style }, + { "support_interface_top_layers", 3 }, + }); + CHECK(support_base_layer_count(g) > 0); + CHECK(support_interface_layer_count(g) > 0); +} + +TEST_CASE("Raft interface angle alternates by 45 degrees per interface id", "[SupportMaterial]") +{ + Slic3r::Print print; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, print, { { "enable_support", 1 } }); + SupportParameters sp(*print.objects().front()); + sp.raft_angle_interface = 0.5f; + REQUIRE_THAT(sp.raft_interface_angle(0), Catch::Matchers::WithinAbs(0.5 + M_PI / 4., 1e-6)); + REQUIRE_THAT(sp.raft_interface_angle(1), Catch::Matchers::WithinAbs(0.5 - M_PI / 4., 1e-6)); +} + +// The angle inputs are overwritten directly, so the pattern-to-angle mapping is checked +// independently of the sliced object's configuration. +TEST_CASE("Support interface fill angle follows the configured interface pattern", "[SupportMaterial]") +{ + Slic3r::Print print; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, print, { { "enable_support", 1 } }); + SupportParameters sp(*print.objects().front()); + sp.interface_angle = 0.3f; + sp.base_angle = 1.1f; + const double tol = 1e-6; + + SECTION("Rectilinear shifts the interface angle by -45deg for snug support") { + sp.support_interface_pattern = smipRectilinear; + sp.support_style = smsSnug; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.interface_angle - M_PI_4, tol)); + REQUIRE_THAT(sp.support_interface_angle(3), Catch::Matchers::WithinAbs(sp.interface_angle - M_PI_4, tol)); + } + SECTION("Rectilinear leaves the interface angle alone for the other styles") { + sp.support_interface_pattern = smipRectilinear; + sp.support_style = smsGrid; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.interface_angle, tol)); + } + SECTION("Rectilinear interlaced alternates -/+45deg by interface id parity") { + sp.support_interface_pattern = smipRectilinearInterlaced; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.interface_angle - M_PI_4, tol)); + REQUIRE_THAT(sp.support_interface_angle(1), Catch::Matchers::WithinAbs(sp.interface_angle + M_PI_4, tol)); + } + SECTION("Grid uses the base angle") { + sp.support_interface_pattern = smipGrid; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.base_angle, tol)); + } + SECTION("Auto and concentric use the interface angle unchanged") { + sp.support_interface_pattern = smipAuto; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.interface_angle, tol)); + sp.support_interface_pattern = smipConcentric; + REQUIRE_THAT(sp.support_interface_angle(0), Catch::Matchers::WithinAbs(sp.interface_angle, tol)); + } +} + +// End-to-end that the pattern reaches the emitted fill, not just support_interface_angle(). +TEST_CASE("Interlaced support interface alternates fill angle while rectilinear does not", "[SupportMaterial]") +{ + auto interface_angles = [](const char *pattern) { + std::vector<double> a; + for (const auto &kv : interface_fill_angle_by_layer(slice({ TestMesh::overhang }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_on_build_plate_only", 1 }, + { "support_interface_top_layers", 6 }, + { "support_interface_pattern", pattern } }))) + a.push_back(kv.second); + return a; + }; + + const std::vector<double> rectilinear = interface_angles("rectilinear"); + const std::vector<double> interlaced = interface_angles("rectilinear_interlaced"); + REQUIRE(rectilinear.size() >= 3); + REQUIRE(interlaced.size() >= 3); + + for (size_t i = 1; i < rectilinear.size(); ++i) + REQUIRE(axial_angle_diff_deg(rectilinear[i], rectilinear[0]) < 15.0); + + for (size_t i = 1; i < interlaced.size(); ++i) + REQUIRE(axial_angle_diff_deg(interlaced[i], interlaced[i - 1]) > 60.0); +} + +// Normal and non-organic tree support share the same interface angle logic: with a rectilinear interface +// pattern both emit their interface fill at the same angle (both go through support_interface_angle()). +TEST_CASE("Normal and tree support use the same interface fill angle", "[SupportMaterial]") +{ + auto mean_interface_angle = [](const char *type, const char *style) { + const auto angles = interface_fill_angle_by_layer(slice({ TestMesh::overhang }, { + { "enable_support", 1 }, { "layer_height", 0.2 }, { "support_on_build_plate_only", 1 }, + { "support_type", type }, { "support_style", style }, + { "support_interface_top_layers", 6 }, { "support_interface_pattern", "rectilinear" } })); + REQUIRE(angles.size() >= 3); + // Axial mean, as in interface_fill_angle_by_layer: a plain mean would split angles either + // side of the [0, pi) wrap. + double x = 0, y = 0; + for (const auto &kv : angles) { + x += std::cos(2.0 * kv.second); + y += std::sin(2.0 * kv.second); + } + double mean = 0.5 * std::atan2(y, x); + if (mean < 0) mean += M_PI; + return mean; + }; + REQUIRE(axial_angle_diff_deg(mean_interface_angle("normal(auto)", "default"), + mean_interface_angle("tree(auto)", "tree_slim")) < 10.0); +} + +// Every style, because the non-organic tree styles once emitted one more top interface layer than the rest. +TEST_CASE("Top interface layer count equals the configured value for every support style", "[SupportMaterial]") +{ + auto [type, style] = GENERATE(table<const char *, const char *>({ + { "normal(auto)", "grid" }, { "normal(auto)", "snug" }, + { "tree(auto)", "organic" }, { "tree(auto)", "tree_slim" }, + { "tree(auto)", "tree_strong" }, { "tree(auto)", "tree_hybrid" }, + })); + CAPTURE(style); + const std::string g = slice({ TestMesh::overhang }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_type", type }, + { "support_style", style }, + { "support_interface_top_layers", 4 }, + }); + REQUIRE(support_interface_layer_count(g) == 4u); +} + +// The bottom interface was dropped in earlier versions when support started on the model rather +// than the plate. +TEST_CASE("Non-organic tree support generates a bottom interface on internal geometry", "[SupportMaterial]") +{ + const std::string g = slice({ support_tunnel() }, { + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "support_on_build_plate_only", 0 }, + { "support_type", "tree(auto)" }, + { "support_style", "tree_slim" }, + { "support_interface_top_layers", 0 }, + { "support_interface_bottom_layers", 6 }, + }); + REQUIRE(support_base_layer_count(g) > 0); + REQUIRE(support_interface_layer_count(g) > 0); +} + +// The capital forces the model contact; on a horizontal tunnel organic can arch a branch in and make none. +TEST_CASE("A bottom interface is produced for every support style on a forced model contact", "[SupportMaterial]") +{ + auto [type, style] = GENERATE(table<const char *, const char *>({ + { "normal(auto)", "default" }, { "tree(auto)", "tree_slim" }, + { "tree(auto)", "tree_strong" }, { "tree(auto)", "tree_hybrid" }, + { "tree(auto)", "organic" }, + })); + CAPTURE(style); + REQUIRE(support_interface_layer_count(slice({ support_capital() }, { + { "enable_support", 1 }, { "layer_height", 0.2 }, { "support_on_build_plate_only", 0 }, + { "support_type", type }, { "support_style", style }, + { "support_interface_top_layers", 0 }, { "support_interface_bottom_layers", 6 } })) > 0); +} + +TEST_CASE("Bottom interface spacing controls bottom interface density for every support style", "[SupportMaterial]") +{ + auto [type, style] = GENERATE(table<const char *, const char *>({ + { "normal(auto)", "default" }, { "tree(auto)", "tree_slim" }, + { "tree(auto)", "tree_strong" }, { "tree(auto)", "tree_hybrid" }, + { "tree(auto)", "organic" }, + })); + CAPTURE(style); + const TriangleMesh model = support_capital(); + auto len = [&model](const char *support_type, const char *support_style, double spacing) { + return support_interface_extrusion_length(slice({ model }, { + { "enable_support", 1 }, { "layer_height", 0.2 }, { "support_on_build_plate_only", 0 }, + { "support_type", support_type }, { "support_style", support_style }, { "support_interface_top_layers", 0 }, + { "support_interface_bottom_layers", 6 }, { "support_bottom_interface_spacing", spacing } })); + }; + REQUIRE(len(type, style, 0.0) > len(type, style, 4.0) * 1.5); +} + +// Interface and base flows are identical in width and rate unless a separate support-interface +// filament is used, so density is the observable here, not flow. +TEST_CASE("Bottom-only support interface keeps the dense interface density", "[SupportMaterial]") +{ + Slic3r::Print print; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, print, { + { "enable_support", 1 }, + { "support_interface_top_layers", 0 }, + { "support_interface_bottom_layers", 6 }, + { "support_bottom_interface_spacing", 0.0 }, // solid: density resolves to 1.0 + { "support_base_pattern_spacing", 2.5 }, // sparse: density stays below 1.0 + }); + SupportParameters sp(*print.objects().front()); + REQUIRE(sp.bottom_interface_density > sp.support_density); +} + diff --git a/tests/fff_print/test_tree_support.cpp b/tests/fff_print/test_tree_support.cpp new file mode 100644 index 0000000000..fbb40bb8f3 --- /dev/null +++ b/tests/fff_print/test_tree_support.cpp @@ -0,0 +1,190 @@ +#include <catch2/catch_all.hpp> + +#include <algorithm> + +#include "libslic3r/Layer.hpp" +#include "libslic3r/TriangleMesh.hpp" + +#include "test_helpers.hpp" + +using namespace Slic3r::Test; +using namespace Slic3r; + +namespace { + +// The upper plate overhangs both the lower plate and open air, so branches land on the model and on +// the bed in the same slice. +TriangleMesh two_tier_mesh() +{ + TriangleMesh lower = make_cube(30, 30, 3); + TriangleMesh column = make_cube(8, 8, 15); + TriangleMesh upper = make_cube(50, 50, 3); + // Each part overlaps the one below rather than resting on it; a coplanar join slices ambiguously. + column.translate(11.f, 11.f, 2.f); + upper.translate(-10.f, -10.f, 16.f); + TriangleMesh mesh = lower; + mesh.merge(column); + mesh.merge(upper); + return mesh; +} + +TriangleMesh scaled(TestMesh id, float scale) +{ + TriangleMesh mesh = Slic3r::Test::mesh(id); + mesh.scale(scale); + return mesh; +} + +// `extra` is applied last, so a caller can add or override any key. +void slice_with_tree_support(const TriangleMesh &mesh, Slic3r::Print &print, const char *style, + int threshold_angle = 30, int build_plate_only = 0, int raft_layers = 0, + std::initializer_list<Slic3r::ConfigBase::SetDeserializeItem> extra = {}) +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ + { "enable_support", 1 }, + { "support_type", "tree(auto)" }, + { "support_style", style }, + { "support_on_build_plate_only", build_plate_only }, + { "support_threshold_angle", threshold_angle }, + { "raft_layers", raft_layers }, + { "layer_height", 0.2 }, + }); + config.set_deserialize_strict(extra); + Slic3r::Test::init_and_process_print({ mesh }, print, config); +} + +Points support_points(const Slic3r::Print &print) +{ + Points points; + for (const SupportLayer *layer : print.objects().front()->support_layers()) + layer->support_fills.collect_points(points); + return points; +} + +size_t support_point_count(const TriangleMesh &mesh, const char *style, int threshold_angle = 30, + int build_plate_only = 0) +{ + Slic3r::Print print; + slice_with_tree_support(mesh, print, style, threshold_angle, build_plate_only); + return support_points(print).size(); +} + +// Index of the first differing point, or the common length when they match. An index keeps a +// failure readable; comparing the vectors themselves dumps thousands of points. +size_t first_difference(const Points &a, const Points &b) +{ + const size_t common = std::min(a.size(), b.size()); + for (size_t i = 0; i < common; ++i) + if (a[i] != b[i]) + return i; + return common; +} + +// Slice `mesh` twice and require an identical support point sequence. Point counts and total +// length are order insensitive, so the sequence is what a reordering shows up in. +void sliced_twice_matches(const TriangleMesh &mesh, int build_plate_only, const char *style = "tree_slim", + std::initializer_list<Slic3r::ConfigBase::SetDeserializeItem> extra = {}) +{ + Slic3r::Print first_print, second_print; + slice_with_tree_support(mesh, first_print, style, 30, build_plate_only, 0, extra); + slice_with_tree_support(mesh, second_print, style, 30, build_plate_only, 0, extra); + const Points first = support_points(first_print); + const Points second = support_points(second_print); + REQUIRE(first.size() > 1000); // without support the comparison below passes vacuously + REQUIRE(second.size() == first.size()); + REQUIRE(first_difference(first, second) == first.size()); +} + +} // namespace + +TEST_CASE("Tree support is generated for an overhang and not for a plain cube", "[TreeSupport]") +{ + REQUIRE(support_point_count(scaled(TestMesh::overhang, 2.f), "tree_slim") > 1000); + REQUIRE(support_point_count(Slic3r::Test::cube(20), "tree_slim") == 0); +} + +TEST_CASE("Restricting tree support to the build plate changes what is generated", "[TreeSupport]") +{ + const TriangleMesh mesh = two_tier_mesh(); + const size_t anywhere = support_point_count(mesh, "tree_slim", 30, 0); + const size_t plate_only = support_point_count(mesh, "tree_slim", 30, 1); + REQUIRE(anywhere > 1000); + REQUIRE(plate_only > 1000); + // The upper plate overhangs the lower one, so some branches would land on the model. + REQUIRE(plate_only != anywhere); +} + +TEST_CASE("Tree support layers rise monotonically within the layer height limits", "[TreeSupport]") +{ + Slic3r::Print print; + slice_with_tree_support(scaled(TestMesh::overhang, 2.f), print, "tree_slim"); + const double nozzle = print.config().nozzle_diameter.values.front(); + + size_t checked = 0; + double previous = 0; + bool previous_was_adjacent = false; + for (const SupportLayer *layer : print.objects().front()->support_layers()) { + if (layer->print_z <= 0 || layer->height <= 0) { + // Layers with no nodes are left at zero. Skipping one leaves a hole, so the next pair + // spans more than one layer and its gap says nothing about the layer height limit. + previous_was_adjacent = false; + continue; + } + if (previous > 0) { + CAPTURE(previous, layer->print_z); + REQUIRE(layer->print_z > previous); + if (previous_was_adjacent) + REQUIRE(layer->print_z - previous <= nozzle + EPSILON); + } + previous = layer->print_z; + previous_was_adjacent = true; + ++checked; + } + REQUIRE(checked > 10); +} + +TEST_CASE("A raft is still generated under tree support", "[TreeSupport]") +{ + // The mesh supports itself, so a layer count alone passes with no raft at all. + Slic3r::Print rafted, unrafted; + slice_with_tree_support(scaled(TestMesh::overhang, 2.f), rafted, "tree_slim", 30, 0, 3); + slice_with_tree_support(scaled(TestMesh::overhang, 2.f), unrafted, "tree_slim", 30, 0, 0); + const PrintObject *rafted_object = rafted.objects().front(); + const PrintObject *unrafted_object = unrafted.objects().front(); + REQUIRE(rafted_object->support_layers().size() > unrafted_object->support_layers().size()); + // The raft goes under the object. + REQUIRE(rafted_object->layers().front()->print_z > unrafted_object->layers().front()->print_z); +} + +// drop_nodes() decides the node merges and spawns the next layer's nodes in parallel. Every one of +// those decisions has to be applied in a fixed order, or the same model gives different branches on +// each slice. +TEST_CASE("Tree support toolpaths do not depend on thread scheduling", "[TreeSupport][Regression]") +{ + // Scaled up so that a layer holds enough nodes for the parallel range to be split. At stock + // size it stays in one chunk and the order never varies. + SECTION("overhang") { sliced_twice_matches(scaled(TestMesh::overhang, 2.f), 0); } + SECTION("bridge with hole") { sliced_twice_matches(scaled(TestMesh::bridge_with_hole, 3.f), 0); } + // Dropping every branch that cannot reach the bed leaves the survivors dense enough that the + // neighbour merge fires in bulk. + SECTION("on the build plate") { sliced_twice_matches(scaled(TestMesh::overhang, 4.f), 1); } + // Branches resting on the model are what put nodes in a part group other than 0, which is the + // only way to reach the prune in the second pass. tree_hybrid additionally builds polygon + // nodes, so it is the only style that exercises the overhang merge. + SECTION("resting on the model") { sliced_twice_matches(two_tier_mesh(), 0); } + SECTION("hybrid on the model") { sliced_twice_matches(two_tier_mesh(), 0, "tree_hybrid"); } +} + +// Prim breaks equal-distance ties by heap address. A 1 mm branch diameter puts neighbours close +// enough to tie, and an explicit line width pins max_move_dist, so the moved tie winner reaches +// the support toolpaths. +TEST_CASE("Tree support toolpaths do not depend on the MST tie order", "[TreeSupport][Regression]") +{ + sliced_twice_matches(two_tier_mesh(), 0, "tree_hybrid", { + { "tree_support_branch_diameter", 1.0 }, + { "tree_support_branch_distance", 5.0 }, + { "tree_support_branch_angle", 40 }, + { "support_line_width", 0.4 }, + }); +} diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index 2bd7ac4189..24d50d6e66 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -152,6 +152,8 @@ static DynamicPrintConfig wipe_tower_toolchange_config(const std::string &gcode_ { "outer_wall_filament_id", 2 }, { "inner_wall_filament_id", 2 }, { "enable_prime_tower", true }, + { "wipe_tower_x", 50 }, // inside the 200x200 test bed + { "wipe_tower_y", 50 }, // (the default y, 220, is not) { "layer_height", 0.3 }, { "gcode_flavor", gcode_flavor }, }); @@ -182,3 +184,148 @@ TEST_CASE("The wipe tower's toolchange planner flush follows the gcode flavor", CHECK_THAT(tower, !Catch::Matchers::ContainsSubstring(unexpected)); } } + +// What Print feeds the shared estimate. The libslic3r WipeTowerEstimate cases cannot see this: +// they call the estimator directly. The estimate counts the filaments the print really uses, +// so the two-filament shape gives the outer wall the second one. +static DynamicPrintConfig tower_estimate_config(const char *wall_type, unsigned int filaments = 2) +{ + // 100 mm3 per purge on a 50 mm wide tower: one purge is 100/(layer_height * 50) of depth. + return multifilament_config(filaments, { + { "outer_wall_filament_id", filaments == 2 ? "2" : "1" }, + { "enable_prime_tower", "1" }, + { "wipe_tower_wall_type", wall_type }, + { "prime_tower_width", "50" }, + { "prime_volume", "100" }, + { "prime_tower_infill_gap", "100%" }, + { "prime_tower_brim_width", "3" }, + { "purge_in_prime_tower", "0" }, + { "single_extruder_multi_material", "0" }, + { "timelapse_type", "0" }, + { "layer_height", "0.2" }, + { "enable_wrapping_detection", "0" }, + { "raft_layers", "0" } }); +} + +TEST_CASE("The tower is sized for the thinnest layer any object on the plate is sliced at", "[WipeTower]") +{ + // The tower has to survive its thinnest layer, so an override finer than the preset drives + // the estimate even on the second object. Two 20 mm cubes, the second at 0.1 mm. + const DynamicPrintConfig config = tower_estimate_config("rectangle"); + const std::vector<std::vector<ConfigBase::SetDeserializeItem>> overrides = { + {}, { { "layer_height", "0.1" } } }; + + Print print; + Model model; + init_print({ cube(20), cube(20) }, print, model, config, &overrides); + + // One purge at 0.1 mm: 100 / (0.1 * 50) = 20 mm, above the 20 mm-tall tower's stability + // floor. At the preset's 0.2 mm it would be half that, so the two are easy to tell apart. + const float floor_20mm = WipeTower::get_limit_depth_by_height(20.f); + REQUIRE(floor_20mm < 10.f); + CHECK_THAT(print.wipe_tower_data(2).depth, Catch::Matchers::WithinAbs(20., 1e-4)); +} + +TEST_CASE("Validation is given the tower's effective width, not the configured one", "[WipeTower]") +{ + // A rib wall squares the tower, so its width is its depth. Validation reads this rather + // than re-deriving the rule from the wall type. + Print print; + Model model; + + SECTION("a rectangle wall keeps the configured width") { + const DynamicPrintConfig config = tower_estimate_config("rectangle"); + init_print({ cube(20) }, print, model, config); + const WipeTowerData &data = print.wipe_tower_data(2); + CHECK_THAT(data.width, Catch::Matchers::WithinAbs(50., 1e-4)); + CHECK(data.depth < data.width); + } + + SECTION("a rib wall reports the squared footprint") { + const DynamicPrintConfig config = tower_estimate_config("rib"); + init_print({ cube(20) }, print, model, config); + const WipeTowerData &data = print.wipe_tower_data(2); + CHECK_THAT(data.width, Catch::Matchers::WithinAbs(data.depth, 1e-4)); + CHECK(data.width > 0.f); + } +} + +TEST_CASE("Generating the tower keeps its reported width current", "[WipeTower]") +{ + // width is handed out after the slice, so leaving it at the estimate reports a zero-width + // tower to every post-generation consumer. + const DynamicPrintConfig config = wipe_tower_toolchange_config("marlin"); + Print print; + Model model; + init_print({ cube(10) }, print, model, config); + print.apply(model, config); + REQUIRE(print.wipe_tower_data(2).width > 0.f); + + print.process(); + REQUIRE(print.is_step_done(psWipeTower)); + const WipeTowerData &data = print.wipe_tower_data(); + // A width the generator never wrote reads as zero. A rib wall squares the tower, so the + // generated width is the body square: under the configured 50 mm, and inside the depth. + CHECK(data.width > 0.f); + CHECK(data.width < 50.f); + CHECK(data.width <= data.depth + EPSILON); +} + +TEST_CASE("A single-filament plate reserves a tower only when one is actually printed", "[WipeTower]") +{ + // The estimate has to answer this the way Print::apply does: reporting no tower for one + // that is built collapses the validation hull to a point, and reporting one for a tower + // that is not built takes that bed area away from the arranger and draws a preview box + // over nothing. + Print print; + Model model; + + SECTION("no tool change and nothing else that prints one") { + const DynamicPrintConfig config = tower_estimate_config("rib", 1); + init_print({ cube(20) }, print, model, config); + REQUIRE_FALSE(print.has_wipe_tower()); + CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); + } + + // A raft puts the tower on every layer below the object, but only where there is a tower: + // Print::apply runs normalize_fdm_2, which clears enable_prime_tower for a plate that + // purges one filament and has neither smooth timelapse nor wrapping detection on. + SECTION("a raft alone does not print one") { + DynamicPrintConfig config = tower_estimate_config("rib", 1); + config.set_deserialize_strict({ { "raft_layers", "3" } }); + init_print({ cube(20) }, print, model, config); + REQUIRE_FALSE(print.config().enable_prime_tower.value); + REQUIRE_FALSE(print.has_wipe_tower()); + CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); + } + + SECTION("smooth timelapse prints one, and keeps enable_prime_tower on") { + DynamicPrintConfig config = tower_estimate_config("rib", 1); + config.set_deserialize_strict({ { "timelapse_type", "1" } }); + init_print({ cube(20) }, print, model, config); + REQUIRE(print.has_wipe_tower()); + CHECK(print.wipe_tower_data(1).depth > 0.f); + } +} + +TEST_CASE("A tower printed without a tool change is still validated against the bed", "[WipeTower]") +{ + // Wrapping detection prints a tower on a plate that purges one filament. Neither the old + // estimate (which read the wall type and smooth timelapse) nor the old containment gate (the + // filament count or smooth timelapse) knew about it, so between them that tower was never + // checked against the bed. + Print print; + Model model; + DynamicPrintConfig config = tower_estimate_config("rectangle", 1); + // Relative E without a per-layer G92 is rejected before the tower is ever looked at, and + // has_wipe_tower() wants a real exclusion polygon before it honours wrapping detection. + config.set_deserialize_strict({ { "enable_wrapping_detection", "1" }, + { "wrapping_exclude_area", "180x180,190x180,190x190,180x190" }, + { "wipe_tower_x", "500" }, { "wipe_tower_y", "500" }, { "use_relative_e_distances", "0" } }); + + init_print({ cube(20) }, print, model, config); + REQUIRE(print.extruders(true).size() == 1); + REQUIRE(print.has_wipe_tower()); + CHECK(print.wipe_tower_data(1).depth > 0.f); + CHECK_THAT(print.validate().string, Catch::Matchers::ContainsSubstring("printable area")); +} diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index bf3981f519..5c10ab1496 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(${_TEST_NAME}_tests test_arachne_walls.cpp test_arrange.cpp test_bambu_networking.cpp + test_buildvolume.cpp test_calib.cpp test_clipper_offset.cpp test_clipper_utils.cpp @@ -28,6 +29,7 @@ add_executable(${_TEST_NAME}_tests test_polygon.cpp test_mutable_polygon.cpp test_mutable_priority_queue.cpp + test_minimum_spanning_tree.cpp test_nozzle_volume_type.cpp test_step.cpp test_stl.cpp @@ -38,6 +40,8 @@ add_executable(${_TEST_NAME}_tests test_utils.cpp test_timeutils.cpp test_voronoi.cpp + test_wipe_tower_estimate.cpp + test_wipe_tower.cpp test_optimizers.cpp test_ordering_strategies.cpp # test_png_io.cpp diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 4c0a09cf3f..5c38859a12 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -1,6 +1,5 @@ #include "libslic3r/Model.hpp" -#include "libslic3r/TriangleSelector.hpp" #include "libslic3r/Format/3mf.hpp" #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/Format/STL.hpp" @@ -9,9 +8,12 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/MultiNozzleUtils.hpp" #include "libslic3r/ProjectTask.hpp" +#include "libslic3r/PublishSettings.hpp" #include "test_utils.hpp" +#include <nlohmann/json.hpp> + #include <boost/filesystem/operations.hpp> #include <catch2/catch_tostring.hpp> @@ -499,7 +501,6 @@ SCENARIO("Nozzle-group metadata .3mf round-trip", "[3mf][MultiNozzle]") { } } - // A mixed-color filament occupies an ordinary filament slot, and painting with it stores an // ordinary extruder state: a project saved by BambuStudio encodes filament 5 of a 5-slot setup // as paint state 5, with the mix described by the parallel filament_mixed_* project arrays. @@ -590,3 +591,639 @@ SCENARIO("Mixed-color filament setup and painting round-trip through a .3mf", "[ } } } +// Locks the serialization contract of the "Publish" metadata: the orca_published flag and the +// orca_published_keys JSON array in model.model_info->metadata_items must survive a store_bbs_3mf -> +// load_bbs_3mf round-trip unchanged. (The full preset-preservation behavior is exercised +// headlessly in test_preset_bundle_loading.cpp.) +SCENARIO("Published 3MF round-trips the published flag and published_keys metadata", "[3mf]") { + GIVEN("a model carrying published metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = R"(["layer_height","wall_thickness"])"; + + // store_bbs_3mf stages project_settings.config through the model's backup path; point + // it at a writable temp dir (the default lives under a read-only root in CI). + ScopedTemporaryDir backup_dir("orca_pub"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the published metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height","wall_thickness"])"); + + // The orca_published_keys value is a JSON array of setting keys; it must parse back to + // the same keys that were selected. + nlohmann::json keys = nlohmann::json::parse(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG]); + REQUIRE(keys.is_array()); + REQUIRE(keys.size() == 2); + REQUIRE(keys[0] == "layer_height"); + REQUIRE(keys[1] == "wall_thickness"); + } + release_PlateData_list(dst_plates); + } + } +} + +// A normal 3MF (no Publish metadata) must load identically: the loader must not fabricate a +// "orca_published" flag or orca_published_keys for files that never carried them. +SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { + GIVEN("a model without any published metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + ScopedTemporaryDir backup_dir("orca_legacy"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("no published key is fabricated") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_TAG) == 0); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_KEYS_TAG) == 0); + } + release_PlateData_list(dst_plates); + } + } +} + +// Locks the serialization contract of the orca_published_material_keys metadata: the per-entry JSON +// must survive a store_bbs_3mf -> load_bbs_3mf round-trip verbatim, exactly like orca_published_keys. +SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf]") { + GIVEN("a model carrying published material keys metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + const std::string material_keys_json = + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99"},"slot":0,"keys":["filament_retraction_length","filament_z_hop"]}])"; + + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = material_keys_json; + + ScopedTemporaryDir backup_dir("orca_pub_mat"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the published material keys metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] == material_keys_json); + + // The value must parse back to one material entry carrying the nested identity + // object, the author slot ordinal and the key list. + nlohmann::json entries = nlohmann::json::parse(material_keys_json); + REQUIRE(entries.is_array()); + REQUIRE(entries.size() == 1); + REQUIRE(entries[0]["material"]["filament_type"] == "PLA"); + REQUIRE(entries[0]["material"]["filament_vendor"] == "Generic"); + REQUIRE(entries[0]["material"]["filament_id"] == "GFL99"); + REQUIRE(entries[0]["slot"] == 0); + REQUIRE(entries[0]["keys"].is_array()); + REQUIRE(entries[0]["keys"].size() == 2); + REQUIRE(entries[0]["keys"][0] == "filament_retraction_length"); + } + release_PlateData_list(dst_plates); + } + } +} + +SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer tags", "[3mf]") { + GIVEN("a multi-instance model carrying published metadata and a published_config payload") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + // A second instance: tag-less third-party files get their multi-instance objects split, + // published files must not (the loader recognizes them by their metadata). + model.objects.front()->add_instance(); + + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.set_key_value("layer_height", new ConfigOptionFloat(0.24)); + full_cfg.set_key_value("retraction_length", new ConfigOptionFloats({ 1.2 })); + + const std::vector<std::string> published_keys = { "layer_height", "retraction_length" }; + const std::vector<PublishedMaterialEntry> material_keys = { + { "PLA", "Generic", "GFL99", "", "Generic PLA", 0, { "filament_retraction_length" } } + }; + + // The payload builder keeps the published and identity keys and drops everything else. + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + REQUIRE(filtered_cfg.option("layer_height") != nullptr); + REQUIRE(filtered_cfg.option("retraction_length") != nullptr); + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + REQUIRE(filtered_cfg.option("filament_type") != nullptr); + REQUIRE(filtered_cfg.option("wipe_tower_x") != nullptr); + REQUIRE(filtered_cfg.option("sparse_infill_density") == nullptr); + REQUIRE(filtered_cfg.option("machine_start_gcode") == nullptr); + + // Serialize the payload exactly like export_published_3mf does. + std::string payload; + for (const std::string &key : filtered_cfg.keys()) + payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; + + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = R"(["layer_height","retraction_length"])"; + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = payload; + + ScopedTemporaryDir backup_dir("orca_min_pub"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored using SaveStrategy::MinimalPublished and reloaded") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + // Create a fake project preset to verify MinimalPublished omits it. + Preset preset(Preset::TYPE_PRINT, "TestPrintPreset"); + preset.config = full_cfg; + std::vector<Preset*> project_presets = { &preset }; + + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &filtered_cfg; + store_params.project_presets = project_presets; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + ScopedTemporaryDir loaded_backup_dir("orca_min_pub_loaded"); + dst_model.set_backup_path(loaded_backup_dir.string()); + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> loaded_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &loaded_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the 3MF loads without project config or embedded presets") { + REQUIRE(loaded); + REQUIRE(dst_config.empty()); + REQUIRE(loaded_presets.empty()); + } + THEN("the file carries no slicer tags and classifies as a generic 3MF") { + REQUIRE_FALSE(is_bbl_3mf); + REQUIRE_FALSE(is_orca_3mf); + // No Application / OrcaSlicer tag: old receivers import the geometry silently + // instead of showing a baked-in, wrong "old version" popup. + REQUIRE_FALSE(file_version.valid()); + } + THEN("the geometry keeps BBS-grade handling: instances are not split") { + REQUIRE(dst_model.objects.size() == 1); + REQUIRE(dst_model.objects.front()->instances.size() == 2); + } + THEN("the published metadata and payload round-trip unchanged") { + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height","retraction_length"])"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] == payload); + } + THEN("the payload parses back to the published values") { + DynamicPrintConfig parsed_payload; + parsed_payload.load_from_ini_string(dst_model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG], ForwardCompatibilitySubstitutionRule::Enable); + REQUIRE(parsed_payload.option("layer_height") != nullptr); + REQUIRE_THAT(parsed_payload.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.24, 1e-6)); + REQUIRE(parsed_payload.option("retraction_length") != nullptr); + REQUIRE_THAT(parsed_payload.opt<ConfigOptionFloats>("retraction_length")->get_at(0), Catch::Matchers::WithinAbs(1.2, 1e-6)); + } + release_PlateData_list(dst_plates); + } + } +} + +// A minimal published 3MF must not leak the slicer tags of the source project. The exporter seeds +// metadata_item_map from the input file's metadata_items, so re-publishing a project opened from a +// regular Orca/BBS 3MF (the typical remix flow) must strip the Application / OrcaSlicer tags it +// came with, otherwise old receivers route onto the baked-in "old version" popup. +SCENARIO("MinimalPublished strips slicer tags carried by the source project", "[3mf]") { + GIVEN("a model loaded from a regular Orca/BBS 3MF whose metadata carries the slicer tags") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items["Application"] = "BambuStudio-2.0.0"; + model.model_info->metadata_items["OrcaSlicer"] = "2.1.0"; + + ScopedTemporaryDir backup_dir("orca_strip_tags"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored using SaveStrategy::MinimalPublished and reloaded") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> loaded_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &loaded_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the source slicer tags are stripped, not carried through") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items.count("Application") == 0); + REQUIRE(dst_model.model_info->metadata_items.count("OrcaSlicer") == 0); + // The published marker itself must survive. + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + } + THEN("the file classifies as a generic 3MF without a version popup") { + REQUIRE_FALSE(is_bbl_3mf); + REQUIRE_FALSE(is_orca_3mf); + REQUIRE_FALSE(file_version.valid()); + } + release_PlateData_list(dst_plates); + } + } +} + +// An entry masks the non-published slots to their defaults so publishing slot 1 never leaks slot +// 0's value into the file. Both a full entry (the whole-slot key list) and a partial entry (a +// per-slot key) go through the same masking path in filter_published_config (keys and full_keys +// are filtered identically), so the two forms are exercised together. +SCENARIO("Published entries mask the other slots to their defaults", "[3mf]") { + const bool full = GENERATE(true, false); + GIVEN("a full print configuration with two filament slots") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + full_cfg.opt<ConfigOptionStrings>("filament_colour")->values = { "#111111", "#222222" }; + // filament_flow_ratio carries a non-empty option default (1.0) of the same type, so the + // mask can restore it on the non-published slot. + full_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio", true)->values = { 1.02, 0.98 }; + + WHEN("filtering with a published entry for slot 1") { + PublishedMaterialEntry entry; + entry.slot = 1; + if (full) { + entry.full = true; + entry.full_keys = { "filament_flow_ratio" }; + } else { + entry.keys = { "filament_flow_ratio" }; + } + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { entry }); + + THEN("the selected key is present with the author's slot value") { + REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); + } + THEN("the non-published slot is masked to its default") { + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + +// A key needing slot masking that cannot be masked (no registered option default of the same +// type) is dropped from the payload entirely instead of shipping the author's whole vector. +SCENARIO("Unmaskable keys are dropped from the published payload instead of leaking", "[3mf]") { + GIVEN("a config carrying a synthetic def-less vector key and a maskable one") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + full_cfg.opt<ConfigOptionStrings>("filament_colour")->values = { "#111111", "#222222" }; + // Not a PrintConfig key: print_config_def has no default to mask with. + full_cfg.set_key_value("orca_synthetic_setting", new ConfigOptionFloats({ 9.9, 8.8 })); + full_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio", true)->values = { 1.02, 0.98 }; + + PublishedMaterialEntry partial_entry; + partial_entry.slot = 1; + partial_entry.keys = { "orca_synthetic_setting", "filament_flow_ratio" }; + + WHEN("filtering with a partial entry for slot 1") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { partial_entry }); + + THEN("the unmaskable synthetic key is not published") { + REQUIRE(filtered_cfg.option("orca_synthetic_setting") == nullptr); + } + THEN("the maskable key is present, author slot kept, other slot masked") { + REQUIRE(filtered_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio") != nullptr); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloatsNullable>("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + +// A per-extruder printer key carrying a "#N" variant (e.g. retraction_length#1) must not serialize +// every extruder's value: the base is masked to the author's extruder and the other slots are +// restored to their option default, matching the material-side slot-masking invariant. A bare +// printer base key (no variant) keeps whole-vector serialization. +SCENARIO("Published per-extruder printer keys mask the other extruders to their defaults", "[3mf]") { + GIVEN("a full print configuration with three extruders carrying per-extruder retraction values") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + // Non-default values on the un-selected slots, so a leak is distinguishable from the mask + // restoring the option default (retraction_length defaults to {0.8}). + full_cfg.opt<ConfigOptionFloats>("retraction_length")->values = { 3.0, 1.2, 4.0 }; + + WHEN("filtering with only extruder 1's retraction_length checked") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, { "retraction_length#1" }, {}); + + THEN("the author's extruder value survives") { + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[1], Catch::Matchers::WithinAbs(1.2, 1e-6)); + } + THEN("the other extruders are masked to their default") { + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[0], Catch::Matchers::WithinAbs(0.8, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[2], Catch::Matchers::WithinAbs(0.8, 1e-6)); + } + } + WHEN("filtering the bare base key without a '#N' variant") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, { "retraction_length" }, {}); + + THEN("the whole vector is serialized unmasked") { + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[0], Catch::Matchers::WithinAbs(3.0, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[1], Catch::Matchers::WithinAbs(1.2, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt<ConfigOptionFloats>("retraction_length")->values[2], Catch::Matchers::WithinAbs(4.0, 1e-6)); + } + } + } +} + +// The extended per-entry fields (full dump list, published type and colour) travel inside the +// published_material_keys metadata and round-trip unchanged. +SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { + GIVEN("a model carrying extended published material keys metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + const std::string material_keys_json = + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99","setting_id":"RFs9eCKYOMUSmvZf","name":"Generic PLA Matte @System"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; + + model.model_info = std::make_shared<ModelInfo>(); + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = material_keys_json; + + ScopedTemporaryDir backup_dir("orca_pub_mat2"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the extended material metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] == material_keys_json); + + // The value must parse back with every extended field intact. + nlohmann::json entries = nlohmann::json::parse(material_keys_json); + REQUIRE(entries.is_array()); + REQUIRE(entries.size() == 1); + REQUIRE(entries[0]["full"].get<bool>() == true); + REQUIRE(entries[0]["full_keys"].is_array()); + REQUIRE(entries[0]["full_keys"].size() == 2); + REQUIRE(entries[0]["publish_type"].get<bool>() == true); + REQUIRE(entries[0]["type"] == "PLA"); + REQUIRE(entries[0]["publish_color"].get<bool>() == false); + } + release_PlateData_list(dst_plates); + } + } +} + +// A published mixed filament serializes its whole definition (components, ratios, gradient) +// masked to the author's slot: the mix slot's values survive, the non-published slots reset to +// their defaults, so a partial publish never leaks another slot's mix data. +SCENARIO("Published mixed-filament keys are masked to the author's slot", "[3mf]") { + GIVEN("a full print configuration with three slots, one of them mixed") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + full_cfg.opt<ConfigOptionStrings>("filament_colour")->values = { "#111111", "#222222", "#333333" }; + full_cfg.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 1 }; + full_cfg.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "1,2" }; + full_cfg.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + full_cfg.opt<ConfigOptionBools>("filament_mixed_gradient")->values = { 0, 0, 1 }; + full_cfg.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + full_cfg.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + full_cfg.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + + PublishedMaterialEntry mix_entry; + mix_entry.slot = 2; + mix_entry.keys = { + "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" + }; + + WHEN("filtering with a mixed entry for slot 2") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { mix_entry }); + + THEN("the author's mixed slot keeps its definition") { + REQUIRE(filtered_cfg.option("filament_is_mixed") != nullptr); + REQUIRE(filtered_cfg.opt<ConfigOptionBools>("filament_is_mixed")->values == std::vector<unsigned char>{ 0, 0, 1 }); + const auto& components = filtered_cfg.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + CHECK(filtered_cfg.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] == "0.6,0.4"); + CHECK(filtered_cfg.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values[2] == "0,0.1|1,0.9"); + CHECK(filtered_cfg.opt<ConfigOptionBools>("filament_mixed_gradient")->values[2]); + CHECK(filtered_cfg.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values[2]); + } + THEN("the non-published slots are masked to their defaults") { + CHECK(filtered_cfg.opt<ConfigOptionStrings>("filament_mixed_components")->values[0] == ""); + CHECK(filtered_cfg.opt<ConfigOptionStrings>("filament_mixed_components")->values[1] == ""); + CHECK(filtered_cfg.opt<ConfigOptionBools>("filament_is_mixed")->values[0] == 0); + CHECK(filtered_cfg.opt<ConfigOptionBools>("filament_is_mixed")->values[1] == 0); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + +// The published flag is gated on the exact string "1": any other serialized value means "not +// published", so a receiver never treats a file as published on a loose truthiness check. +TEST_CASE("is_published_3mf_flag accepts only the literal \"1\"", "[3mf]") { + CHECK(is_published_3mf_flag("1")); + CHECK_FALSE(is_published_3mf_flag("0")); + CHECK_FALSE(is_published_3mf_flag("false")); + CHECK_FALSE(is_published_3mf_flag("true")); + CHECK_FALSE(is_published_3mf_flag("")); + CHECK_FALSE(is_published_3mf_flag("YES")); +} + +// bbs_3mf_is_published is the lightweight metadata probe used to decide whether a file was +// produced by the publish feature (GUI "recently published" tracking). It must return true only +// for a file whose metadata carries the flag set to "1", and false for legacy files and for a +// file whose flag is present but not "1" (which loads as a normal, non-published 3MF). +SCENARIO("bbs_3mf_is_published detects only genuinely published 3MFs", "[3mf]") { + auto store_model = [](const std::string &path, const std::string &flag_value, const std::string &keys_value) { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + model.model_info = std::make_shared<ModelInfo>(); + // An empty flag_value means "don't write the flag at all" (a legacy file). + if (!flag_value.empty()) + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = flag_value; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = keys_value; + ScopedTemporaryDir backup_dir("orca_is_pub"); + model.set_backup_path(backup_dir.string()); + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = path.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + }; + + GIVEN("a minimal published 3MF whose flag is \"1\"") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "1", R"(["layer_height"])"); + WHEN("probed by bbs_3mf_is_published") { + THEN("it is recognized as published") { + CHECK(bbs_3mf_is_published(temp.string())); + } + } + } + GIVEN("a legacy 3MF without any published flag") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "", R"(["layer_height"])"); + WHEN("probed by bbs_3mf_is_published") { + THEN("it is not recognized as published") { + CHECK_FALSE(bbs_3mf_is_published(temp.string())); + } + } + } + GIVEN("a 3MF carrying the flag set to \"0\"") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "0", R"(["layer_height"])"); + WHEN("probed and loaded") { + THEN("it is not recognized as published") { + CHECK_FALSE(bbs_3mf_is_published(temp.string())); + } + THEN("it loads as a normal, non-published 3MF") { + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector<Preset*> project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + REQUIRE(load_bbs_3mf(temp.string().c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig)); + REQUIRE(dst_model.model_info != nullptr); + // The key is present but not "1", so nothing treats the file as published; the + // stored keys still round-trip verbatim. + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "0"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height"])"); + release_PlateData_list(dst_plates); + } + } + } +} + diff --git a/tests/libslic3r/test_arachne_walls.cpp b/tests/libslic3r/test_arachne_walls.cpp index 4ca18400af..2b6580ed11 100644 --- a/tests/libslic3r/test_arachne_walls.cpp +++ b/tests/libslic3r/test_arachne_walls.cpp @@ -22,6 +22,8 @@ #include "libslic3r/Arachne/utils/ExtrusionLine.hpp" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.hpp" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" +#include "libslic3r/Feature/FuzzySkin/FuzzySkin.hpp" +#include "libslic3r/Flow.hpp" #include "libslic3r/Polygon.hpp" #include "libslic3r/ExPolygon.hpp" #include "libslic3r/ClipperUtils.hpp" @@ -309,3 +311,71 @@ TEST_CASE("Beading interpolation tolerates a thicker side with fewer insets", "[ CHECK(result.bead_widths[i] == expected.bead_widths[i]); } } + +namespace { + +// Closed 20 mm square loop at a uniform width. +Arachne::ExtrusionJunctions square_loop(coord_t width) +{ + const coord_t s = scaled<coord_t>(20.); + return {{Point(0, 0), width, 0}, {Point(s, 0), width, 0}, {Point(s, s), width, 0}, {Point(0, s), width, 0}, {Point(0, 0), width, 0}}; +} + +FuzzySkinConfig thick_fuzzy_config(FuzzySkinMode mode, NoiseType noise_type, double thickness_mm) +{ + FuzzySkinConfig cfg{}; + cfg.type = FuzzySkinType::All; + cfg.thickness = scaled<coord_t>(thickness_mm); + cfg.point_distance = scaled<coord_t>(0.3); + cfg.fuzzy_first_layer = true; + cfg.noise_type = noise_type; + cfg.noise_scale = 1.0; + cfg.noise_octaves = 4; + cfg.noise_persistence = 0.5; + cfg.mode = mode; + cfg.layer_id = 5; + return cfg; +} + +} // namespace + +// Extrusion and Combined mode add noise to each junction's width. A junction narrower than +// height * (1 - PI/4) makes Flow::rounded_rectangle_extrusion_spacing() throw and fails the slice. +// The fuzz thickness is 3x the line width so the clamp is hit on every run regardless of RNG seed. +// Ridged multifractal is covered because its output is not bounded to [-1, 1], so it scales past +// the configured thickness; the floor has to hold for any noise value, not just an in-range one. +TEST_CASE("Fuzzy skin extrusion width is floored at the minimum the flow accepts", "[Arachne][FuzzySkin]") { + using namespace Slic3r::Feature::FuzzySkin; + + const double layer_height = GENERATE(0.08, 0.2, 0.28); + const auto mode = GENERATE(FuzzySkinMode::Extrusion, FuzzySkinMode::Combined); + const auto noise_type = GENERATE(NoiseType::Classic, NoiseType::Perlin, NoiseType::Billow, NoiseType::RidgedMulti, NoiseType::Voronoi); + CAPTURE(layer_height, int(mode), int(noise_type)); + + const double line_width_mm = 0.42; + auto loop = square_loop(scaled<coord_t>(line_width_mm)); + fuzzy_extrusion_line(loop, /*slice_z*/ 1.0, layer_height, thick_fuzzy_config(mode, noise_type, 3 * line_width_mm)); + + REQUIRE(loop.size() > 100); + + const auto narrowest = std::min_element(loop.begin(), loop.end(), [](const auto& a, const auto& b) { return a.w < b.w; }); + const double narrowest_mm = unscaled<double>(narrowest->w); + const double floor_mm = layer_height * (1. - 0.25 * PI); + CAPTURE(narrowest_mm, floor_mm); + + CHECK(narrowest_mm < line_width_mm); // the clamp was exercised + CHECK(narrowest_mm > floor_mm); + CHECK_NOTHROW(Flow::rounded_rectangle_extrusion_spacing(float(narrowest_mm), float(layer_height))); +} + +// Displacement mode only moves points; widths must pass through unchanged. +TEST_CASE("Fuzzy skin displacement mode leaves widths untouched", "[Arachne][FuzzySkin]") { + using namespace Slic3r::Feature::FuzzySkin; + + const coord_t width = scaled<coord_t>(0.42); + auto loop = square_loop(width); + fuzzy_extrusion_line(loop, /*slice_z*/ 1.0, /*layer_height*/ 0.2, thick_fuzzy_config(FuzzySkinMode::Displacement, NoiseType::Classic, 1.26)); + + REQUIRE(loop.size() > 100); + CHECK(std::all_of(loop.begin(), loop.end(), [width](const auto& j) { return j.w == width; })); +} diff --git a/tests/libslic3r/test_buildvolume.cpp b/tests/libslic3r/test_buildvolume.cpp new file mode 100644 index 0000000000..b2e8040d68 --- /dev/null +++ b/tests/libslic3r/test_buildvolume.cpp @@ -0,0 +1,40 @@ +#include <catch2/catch_all.hpp> + +#include "libslic3r/BuildVolume.hpp" + +using namespace Slic3r; + +static std::vector<Vec2d> rect_area(double w, double d) +{ + return { { 0., 0. }, { w, 0. }, { w, d }, { 0., d } }; +} + +// extruder_printable_height and extruder_printable_area are independent config options, so a +// profile can leave the heights short. BuildVolume must not index past the end of the heights. +TEST_CASE("BuildVolume falls back to the bed height when extruder_printable_height is short", "[BuildVolume]") +{ + const std::vector<Vec2d> bed = rect_area(200., 200.); + const std::vector<std::vector<Vec2d>> areas = { rect_area(200., 200.), rect_area(100., 200.) }; + const std::vector<double> heights = { 180. }; + + const BuildVolume build_volume(bed, 250., areas, heights); + + REQUIRE(build_volume.get_extruder_area_count() == 2); + // The extruder with a height of its own keeps it, and differs from the bed, so it gets its own volume. + CHECK_THAT(build_volume.get_extruder_area_volume(0).bboxf.max.z(), Catch::Matchers::WithinAbs(180., 1e-6)); + // The extruder without one falls back to the bed's printable_height instead of reading out of range. + CHECK_THAT(build_volume.get_extruder_area_volume(1).bboxf.max.z(), Catch::Matchers::WithinAbs(250., 1e-6)); +} + +TEST_CASE("BuildVolume keeps per-extruder heights when both vectors match", "[BuildVolume]") +{ + const std::vector<Vec2d> bed = rect_area(200., 200.); + const std::vector<std::vector<Vec2d>> areas = { rect_area(120., 200.), rect_area(100., 200.) }; + const std::vector<double> heights = { 180., 200.5 }; + + const BuildVolume build_volume(bed, 250., areas, heights); + + REQUIRE(build_volume.get_extruder_area_count() == 2); + CHECK_THAT(build_volume.get_extruder_area_volume(0).bboxf.max.z(), Catch::Matchers::WithinAbs(180., 1e-6)); + CHECK_THAT(build_volume.get_extruder_area_volume(1).bboxf.max.z(), Catch::Matchers::WithinAbs(200.5, 1e-6)); +} diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index 12b161322d..bd147b5881 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -828,3 +828,266 @@ SCENARIO("ConfigOptionVector::set_to_index throws on incompatible type", "[Confi } } } + +TEST_CASE("read_cli applies valid values and collects non-option arguments", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--nozzle-temperature", "210,190", "--reduce-crossing-wall=1", "model.3mf"}; + REQUIRE(config.read_cli(5, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionInts>("nozzle_temperature")->values == std::vector<int>{210, 190}); + REQUIRE(config.opt<ConfigOptionBool>("reduce_crossing_wall")->value); + REQUIRE(extra == t_config_option_keys{"model.3mf"}); + REQUIRE(keys == t_config_option_keys{"nozzle_temperature", "reduce_crossing_wall"}); +} + +TEST_CASE("read_cli rejects nil for a non-nullable vector option", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--nozzle-temperature", "nil"}; + REQUIRE_FALSE(config.read_cli(3, argv, &extra, &keys)); +} + +TEST_CASE("read_cli rejects an invalid boolean value", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--reduce-crossing-wall=maybe"}; + REQUIRE_FALSE(config.read_cli(2, argv, &extra, &keys)); +} + +TEST_CASE("read_cli accepts the common spellings of a boolean value", "[Config]") { + const auto [text, expected] = GENERATE(table<const char*, bool>({ + {"--reduce-crossing-wall=1", true}, + {"--reduce-crossing-wall=true", true}, + {"--reduce-crossing-wall=Yes", true}, + {"--reduce-crossing-wall=on", true}, + {"--reduce-crossing-wall=enabled", true}, + {"--reduce-crossing-wall=TRUE", true}, + {"--reduce-crossing-wall=oN", true}, + {"--reduce-crossing-wall=0", false}, + {"--reduce-crossing-wall=false", false}, + {"--reduce-crossing-wall=No", false}, + {"--reduce-crossing-wall=off", false}, + {"--reduce-crossing-wall=disabled", false}, + {"--reduce-crossing-wall=FALSE", false}, + {"--reduce-crossing-wall=DiSaBlEd", false}, + })); + + DYNAMIC_SECTION(text) { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", text}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBool>("reduce_crossing_wall")->value == expected); + } +} + +TEST_CASE("read_cli accepts the common boolean spellings inside a bools vector", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=true,no,1"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBools>("filament_soluble")->values == std::vector<unsigned char>{1, 0, 1}); +} + +TEST_CASE("read_cli trims whitespace around boolean spellings", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--reduce-crossing-wall= true ", "--filament-soluble= true , no ,1"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBool>("reduce_crossing_wall")->value); + REQUIRE(config.opt<ConfigOptionBools>("filament_soluble")->values == std::vector<unsigned char>{1, 0, 1}); +} + +TEST_CASE("read_cli normalizes boolean spellings when a bools vector is repeated", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=true", "--filament-soluble=off"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBools>("filament_soluble")->values == std::vector<unsigned char>{1, 0}); +} + +TEST_CASE("read_cli keeps nil alongside boolean spellings in a nullable bools vector", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--enable-overhang-speed=nil,yes,off"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + auto* opt = config.opt<ConfigOptionBoolsNullable>("enable_overhang_speed"); + REQUIRE(opt != nullptr); + REQUIRE(opt->values.size() == 3); + REQUIRE(opt->is_nil(0)); + REQUIRE(opt->values[1] == 1); + REQUIRE(opt->values[2] == 0); +} + +TEST_CASE("read_cli rejects an empty item inside a bools vector", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=true,,1"}; + REQUIRE_FALSE(config.read_cli(2, argv, &extra, &keys)); +} + +TEST_CASE("read_cli rejects an unknown spelling next to a valid one in a bools vector", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=true,affirmative"}; + REQUIRE_FALSE(config.read_cli(2, argv, &extra, &keys)); +} + +// The normalization lives in read_cli's boolean branches, so options of other types keep the +// value verbatim - a path named "on" or a colour named "true" must not turn into "1". +TEST_CASE("read_cli leaves boolean spellings alone for non-boolean options", "[Config]") { + SECTION("string option") { + Slic3r::DynamicPrintAndCLIConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--logfile=true"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionString>("logfile")->value == "true"); + } + SECTION("strings vector option") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-colour=on;off"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{"on", "off"}); + } +} + +TEST_CASE("read_cli treats a bare boolean flag as true without consuming the next argument", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--reduce-crossing-wall", "model.3mf"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBool>("reduce_crossing_wall")->value); + REQUIRE(extra == t_config_option_keys{"model.3mf"}); +} + +TEST_CASE("read_cli rejects an invalid scalar numeric value", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--top-shell-layers", "several"}; + REQUIRE_FALSE(config.read_cli(3, argv, &extra, &keys)); +} + +TEST_CASE("read_cli appends values when a vector option is repeated", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--nozzle-temperature", "210", "--nozzle-temperature", "190,200"}; + REQUIRE(config.read_cli(5, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionInts>("nozzle_temperature")->values == std::vector<int>{210, 190, 200}); + // the key is recorded once, on first use + REQUIRE(keys == t_config_option_keys{"nozzle_temperature"}); +} + +TEST_CASE("read_cli parses a bools vector given in the --flag=values form", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=1,0,1"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBools>("filament_soluble")->values == std::vector<unsigned char>{1, 0, 1}); +} + +TEST_CASE("read_cli rejects an invalid value inside a bools vector", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble=1,maybe"}; + REQUIRE_FALSE(config.read_cli(2, argv, &extra, &keys)); +} + +TEST_CASE("read_cli appends true for a bare bools vector flag", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-soluble"}; + REQUIRE(config.read_cli(2, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionBools>("filament_soluble")->values == std::vector<unsigned char>{1}); +} + +TEST_CASE("read_cli splits a strings vector on semicolons and unescapes quoted items", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-colour", "#FF0000;\"a\\nb\";#00FF00"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + auto& values = config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(values == std::vector<std::string>{"#FF0000", "a\nb", "#00FF00"}); +} + +TEST_CASE("read_cli rejects a strings vector with an unterminated quote", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-colour", "\"oops"}; + REQUIRE_FALSE(config.read_cli(3, argv, &extra, &keys)); +} + +TEST_CASE("read_cli parses a points vector in the NxM coordinate form", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--printable-area", "0x0,200x0,200x200,0x200"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + auto& points = config.opt<ConfigOptionPoints>("printable_area")->values; + REQUIRE(points.size() == 4); + REQUIRE_THAT(points[1].x(), Catch::Matchers::WithinAbs(200.0, 1e-9)); + REQUIRE_THAT(points[1].y(), Catch::Matchers::WithinAbs(0.0, 1e-9)); + REQUIRE_THAT(points[3].x(), Catch::Matchers::WithinAbs(0.0, 1e-9)); + REQUIRE_THAT(points[3].y(), Catch::Matchers::WithinAbs(200.0, 1e-9)); +} + +// logfile is a CLI-only option, so it needs the config type whose def pulls in cli_misc_config_def. +TEST_CASE("read_cli stores the log file path as a string", "[Config]") { + Slic3r::DynamicPrintAndCLIConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--logfile", "orca.log"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + REQUIRE(config.opt<ConfigOptionString>("logfile")->value == "orca.log"); +} + +TEST_CASE("read_cli accepts nil entries for a nullable vector option", "[Config]") { + Slic3r::DynamicPrintConfig config; + t_config_option_keys extra, keys; + const char* argv[] = {"orca-slicer", "--filament-retraction-length", "nil,2.5"}; + REQUIRE(config.read_cli(3, argv, &extra, &keys)); + auto* opt = config.opt<ConfigOptionFloatsNullable>("filament_retraction_length"); + REQUIRE(opt != nullptr); + REQUIRE(opt->values.size() == 2); + REQUIRE(opt->is_nil(0)); + REQUIRE_FALSE(opt->is_nil(1)); + REQUIRE_THAT(opt->values[1], Catch::Matchers::WithinAbs(2.5, 1e-9)); +} + +// get_at() returns values.front() for an out-of-range index, so calling it on an empty vector +// option is UB. filament_id and filament_is_support are unpopulated on a CLI from-scratch slice. +TEST_CASE("get_filament_type treats empty vector options as absent", "[Config][Filament]") +{ + DynamicPrintConfig config; + std::string displayed; + + SECTION("an empty filament_type yields no type at all") + { + config.set_key_value("filament_type", new ConfigOptionStrings()); + REQUIRE(config.get_filament_type(displayed, 0) == ""); + } + + SECTION("an empty filament_is_support falls back to the plain filament type") + { + config.set_key_value("filament_type", new ConfigOptionStrings({"PETG"})); + config.set_key_value("filament_is_support", new ConfigOptionBools()); + REQUIRE(config.get_filament_type(displayed, 0) == "PETG"); + REQUIRE(displayed == "PETG"); + } + + SECTION("a support filament with an empty filament_id resolves from the type alone") + { + config.set_key_value("filament_type", new ConfigOptionStrings({"PLA"})); + config.set_key_value("filament_is_support", new ConfigOptionBools({true})); + config.set_key_value("filament_id", new ConfigOptionStrings()); + REQUIRE(config.get_filament_type(displayed, 0) == "PLA-S"); + REQUIRE(displayed == "Sup.PLA"); + } + + SECTION("a populated filament_id still selects the support type by id") + { + config.set_key_value("filament_type", new ConfigOptionStrings({"PETG"})); + config.set_key_value("filament_is_support", new ConfigOptionBools({true})); + config.set_key_value("filament_id", new ConfigOptionStrings({"GFS00"})); + REQUIRE(config.get_filament_type(displayed, 0) == "PLA-S"); + REQUIRE(displayed == "Sup.PLA"); + } +} diff --git a/tests/libslic3r/test_config_variant_expansion.cpp b/tests/libslic3r/test_config_variant_expansion.cpp index dd7de2af44..2469789d5b 100644 --- a/tests/libslic3r/test_config_variant_expansion.cpp +++ b/tests/libslic3r/test_config_variant_expansion.cpp @@ -130,6 +130,12 @@ TEST_CASE("get_config_index_base resolves (volume type, extruder type, id) to a } } +TEST_CASE("support interface pattern registry includes spiral inset", "[Config]") +{ + const auto &values = ConfigOptionEnum<SupportMaterialInterfacePattern>::get_enum_values(); + REQUIRE(values.at("spiralinset") == SupportMaterialInterfacePattern::smipSpiralInset); +} + TEST_CASE("get_extruder_nozzle_volume_count reads the per-extruder volume-type layout", "[Config]") { std::vector<std::vector<NozzleVolumeType>> nozzle_volume_types; @@ -479,3 +485,84 @@ TEST_CASE("update_values_to_printer_extruders_for_multiple_filaments resolves pe REQUIRE(config.option<ConfigOptionInts>("filament_self_index")->values == std::vector<int>({1, 2})); } } + +// update_values_from_multi_to_multi_2 walks the DESTINATION PRINTER's variant list while writing +// into a row taken from the destination PRINT preset, whose arrays are sized to its own +// print_extruder_variant. Those two widths disagree until the print preset is re-selected for the +// new printer -- Tab::load_current_preset() runs this migration first -- so a project authored on +// a single-variant printer, opened and switched to a wider one, wrote past the end of the row. +TEST_CASE("update_values_from_multi_to_multi_2 sizes the destination row to the variant count", + "[Config][VariantExpansion]") +{ + const std::vector<std::string> src_variants{"Direct Drive Standard"}; + const std::vector<std::string> dst_variants{"Direct Drive Standard", "Direct Drive High Flow", + "Direct Drive Standard", "Direct Drive High Flow"}; + const std::set<std::string> keys{"outer_wall_speed"}; + + // The per-object override as authored on the single-variant printer. + const auto object_override = [] { + DynamicPrintConfig c; + c.option<ConfigOptionFloatsNullable>("outer_wall_speed", true)->values = {42.}; + return c; + }; + + SECTION("a row narrower than the variant list is grown, not overrun") { + DynamicPrintConfig object_config = object_override(); + DynamicPrintConfig dst; + dst.option<ConfigOptionFloatsNullable>("outer_wall_speed", true)->values = {200.}; + + REQUIRE(object_config.update_values_from_multi_to_multi_2(src_variants, dst_variants, dst, keys) == 0); + + const auto& out = object_config.option<ConfigOptionFloatsNullable>("outer_wall_speed")->values; + REQUIRE(out.size() == dst_variants.size()); + // Both "Direct Drive Standard" columns match the source variant, so they take the override. + CHECK(out[0] == Catch::Approx(42.)); + CHECK(out[2] == Catch::Approx(42.)); + // The High Flow columns have no matching source variant: nil, so the destination keeps + // tracking the print preset rather than being pinned to another variant's value. + CHECK(std::isnan(out[1])); + CHECK(std::isnan(out[3])); + } + + // The regression guard: where the row already matches the variant list -- every case that was + // not corrupting the heap -- the resize is a no-op and the output is unchanged. + SECTION("a correctly sized row is untouched") { + DynamicPrintConfig object_config = object_override(); + DynamicPrintConfig dst; + dst.option<ConfigOptionFloatsNullable>("outer_wall_speed", true)->values = {200., 500., 210., 510.}; + + REQUIRE(object_config.update_values_from_multi_to_multi_2(src_variants, dst_variants, dst, keys) == 0); + + const auto& out = object_config.option<ConfigOptionFloatsNullable>("outer_wall_speed")->values; + REQUIRE(out.size() == 4); + CHECK(out[0] == Catch::Approx(42.)); // matched -> override + CHECK(out[1] == Catch::Approx(500.)); // unmatched -> preset value preserved + CHECK(out[2] == Catch::Approx(42.)); + CHECK(out[3] == Catch::Approx(510.)); + } + + // is_nil(idx) indexes values[idx] with no bounds check, so a source shorter than its own + // variant list read out of range before the guard was added. + SECTION("a source shorter than its variant list is read in range") { + DynamicPrintConfig object_config = object_override(); // one value... + DynamicPrintConfig dst; + dst.option<ConfigOptionFloatsNullable>("outer_wall_speed", true)->values = {200., 500.}; + + REQUIRE(object_config.update_values_from_multi_to_multi_2( + {"Direct Drive Standard", "Direct Drive Standard"}, // ...but two source variants + {"Direct Drive Standard", "Direct Drive High Flow"}, dst, keys) == 0); + + const auto& out = object_config.option<ConfigOptionFloatsNullable>("outer_wall_speed")->values; + REQUIRE(out.size() == 2); + CHECK(out[0] == Catch::Approx(42.)); + CHECK(out[1] == Catch::Approx(500.)); + } + + SECTION("an empty destination variant list is refused") { + DynamicPrintConfig object_config = object_override(); + DynamicPrintConfig dst; + dst.option<ConfigOptionFloatsNullable>("outer_wall_speed", true)->values = {200.}; + + CHECK(object_config.update_values_from_multi_to_multi_2(src_variants, {}, dst, keys) == -1); + } +} diff --git a/tests/libslic3r/test_minimum_spanning_tree.cpp b/tests/libslic3r/test_minimum_spanning_tree.cpp new file mode 100644 index 0000000000..5f9998171c --- /dev/null +++ b/tests/libslic3r/test_minimum_spanning_tree.cpp @@ -0,0 +1,66 @@ +#include <catch2/catch_all.hpp> + +#include <algorithm> + +#include "libslic3r/MinimumSpanningTree.hpp" +#include "libslic3r/Point.hpp" + +using namespace Slic3r; + +// A 5x5 lattice: at every step of Prim's algorithm several candidates sit at the same +// distance from the tree, so the tie-break decides the tree's shape. +static std::vector<Point> lattice() +{ + std::vector<Point> vertices; + for (int y = 0; y < 5; ++y) + for (int x = 0; x < 5; ++x) + vertices.emplace_back(Point::new_scale(x, y)); + return vertices; +} + +static std::vector<Point> sorted_neighbours(const MinimumSpanningTree &mst, const Point &vertex) +{ + std::vector<Point> neighbours = mst.adjacent_nodes(vertex); + std::sort(neighbours.begin(), neighbours.end()); + return neighbours; +} + +TEST_CASE("Minimum spanning tree connects every vertex", "[MinimumSpanningTree]") +{ + const std::vector<Point> vertices = lattice(); + const MinimumSpanningTree mst(vertices); + + REQUIRE(mst.vertices().size() == vertices.size()); + size_t adjacency_entries = 0; + for (const Point &vertex : vertices) { + const std::vector<Point> neighbours = mst.adjacent_nodes(vertex); + REQUIRE(! neighbours.empty()); + adjacency_entries += neighbours.size(); + } + // A tree on n vertices has n - 1 edges, each listed from both ends. + REQUIRE(adjacency_entries == 2 * (vertices.size() - 1)); +} + +TEST_CASE("Minimum spanning tree does not depend on the order of the non-root vertices", "[MinimumSpanningTree][Regression]") +{ + const std::vector<Point> vertices = lattice(); + const MinimumSpanningTree reference(vertices); + + // The root stays first: Prim's tree legitimately depends on where it starts. + // Every other order of the remaining vertices must give the same tree. + std::vector<std::vector<Point>> orders; + orders.emplace_back(vertices); + std::reverse(orders.back().begin() + 1, orders.back().end()); + for (size_t shift = 1; shift + 1 < vertices.size(); ++shift) { + orders.emplace_back(vertices); + std::rotate(orders.back().begin() + 1, orders.back().begin() + 1 + shift, orders.back().end()); + } + + for (const std::vector<Point> &order : orders) { + const MinimumSpanningTree mst(order); + for (const Point &vertex : vertices) { + INFO("vertex " << vertex.x() << "," << vertex.y()); + REQUIRE(sorted_neighbours(mst, vertex) == sorted_neighbours(reference, vertex)); + } + } +} diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 55c18bfa9e..ecdede7053 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1,19 +1,42 @@ #include <catch2/catch_all.hpp> +#include <algorithm> #include <boost/filesystem.hpp> #include <fstream> #include "libslic3r/PresetBundle.hpp" #include "libslic3r/AppConfig.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Utils.hpp" +#include "libslic3r/miniz_extension.hpp" #include "test_utils.hpp" +#include <algorithm> +#include <iostream> +#include <initializer_list> + using namespace Slic3r; namespace { namespace fs = boost::filesystem; +// Whether a key is listed in a vector of keys (published_keys / skipped_keys). +bool contains_key(const std::vector<std::string> &keys, const std::string &key) +{ + return std::find(keys.begin(), keys.end(), key) != keys.end(); +} + +void check_double_vector(const std::vector<double> &actual, std::initializer_list<double> expected) +{ + REQUIRE(actual.size() == expected.size()); + size_t index = 0; + for (double value : expected) + REQUIRE_THAT(actual[index++], Catch::Matchers::WithinAbs(value, 1e-6)); +} + void write_print_preset(const DynamicPrintConfig &default_config, const fs::path &file, const std::string &name, const std::string &inherits = {}) { DynamicPrintConfig config(default_config); @@ -52,6 +75,22 @@ void set_renamed_from(PresetCollection &coll, const std::string &preset_name, st it->renamed_from = std::move(old_names); } +// A single-slot PLA file config for the published-material load tests (mirrors what the GUI +// builds from a 3mf's project settings before load_config_model). +DynamicPrintConfig published_pla_file_config() +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9 }; + return config; +} + // A standalone print preset collection that exposes the protected rename-map builder, so a // renamed_from scenario can be set up without the full system-profile load pipeline. // (PresetCollection is non-copyable - it holds a mutex - so it is constructed directly with @@ -184,6 +223,44 @@ TEST_CASE("Printer extruder count tolerates missing nozzle diameter", "[Preset][ CHECK(bundle.get_printer_extruder_count() == 2); } +TEST_CASE("Selected printer uses its default or saved bed type", "[Preset][Bundle]") +{ + PresetBundle bundle; + Preset& printer = add_inmemory_preset(bundle.printers, "Test Printer"); + printer.is_system = true; + printer.config.option<ConfigOptionString>("printer_model")->value = "TEST-MODEL"; + printer.config.option<ConfigOptionString>("printer_variant")->value = "0.4"; + printer.config.option<ConfigOptionString>("default_bed_type")->value = "Engineering Plate"; + + AppConfig app_config; + app_config.set("curr_bed_type", std::to_string(static_cast<int>(btPTE))); + PresetBundle::PresetPreferences preferred_selection; + BedType expected_bed_type; + + SECTION("New printer uses its symbolic default") { + expected_bed_type = btEP; + preferred_selection = {"TEST-MODEL", "0.4"}; + } + SECTION("Re-enabled printer uses its saved selection") { + expected_bed_type = btPC; + preferred_selection = {"TEST-MODEL", "0.4"}; + app_config.set_printer_setting("Test Printer", "curr_bed_type", + std::to_string(static_cast<int>(expected_bed_type))); + } + SECTION("Existing printer keeps its saved selection after presets reload") { + expected_bed_type = btPCT; + app_config.set("presets", PRESET_PRINTER_NAME, "Test Printer"); + app_config.set_printer_setting("Test Printer", "curr_bed_type", + std::to_string(static_cast<int>(expected_bed_type))); + } + + bundle.load_selections(app_config, preferred_selection); + bundle.export_selections(app_config); + + CHECK(bundle.project_config.opt_enum<BedType>("curr_bed_type") == expected_bed_type); + CHECK(app_config.get_printer_setting("Test Printer", "curr_bed_type") == std::to_string(static_cast<int>(expected_bed_type))); +} + TEST_CASE("find_preset resolves a system preset's renamed_from", "[Preset][Rename]") { RenameTestCollection coll; @@ -515,6 +592,401 @@ struct LibraryFilamentTestCollection : public PresetCollection } // namespace +TEST_CASE("Missing app config is accepted as default CLI state", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + AppConfig app_config; + app_config.set_loading_path((dir.path() / "missing.conf").string()); + CHECK(app_config.load_if_exists().empty()); +} + +TEST_CASE("Read-only user preset loading does not create or delete files", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + PresetBundle bundle; + PresetsConfigSubstitutions substitutions; + + const fs::path missing_root = dir.path() / "missing-user"; + bundle.prints.load_presets(missing_root.string(), PRESET_PRINT_NAME, substitutions, + ForwardCompatibilitySubstitutionRule::EnableSilent, nullptr, + PresetOrigin(), true); + CHECK_FALSE(fs::exists(missing_root / PRESET_PRINT_NAME)); + + const fs::path malformed = dir.path() / "existing-user" / PRESET_PRINT_NAME / "malformed.json"; + fs::create_directories(malformed.parent_path()); + std::ofstream(malformed.string()) << "{not-json"; + bundle.prints.load_presets((dir.path() / "existing-user").string(), PRESET_PRINT_NAME, substitutions, + ForwardCompatibilitySubstitutionRule::EnableSilent, nullptr, + PresetOrigin(), true); + CHECK(fs::exists(malformed)); +} + +TEST_CASE("Typeless preset resolution probes loaded FFF collections", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "typeless-process.json"; + std::ofstream(source_file.string()) << R"({"name":"Typeless Process","from":"User"})"; + + PresetBundle bundle; + Preset &process = add_inmemory_preset(bundle.prints, "Typeless Process"); + process.file = source_file.string(); + process.config.option<ConfigOptionFloats>("travel_speed", true)->values = {321.0}; + + DynamicPrintConfig raw; + Preset::Type resolved_type = Preset::TYPE_INVALID; + std::string error; + REQUIRE(bundle.resolve_preset_config_type(raw, resolved_type, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error.empty()); + CHECK(resolved_type == Preset::TYPE_PRINT); + REQUIRE(raw.option<ConfigOptionFloats>("travel_speed")->values.size() == 1); + CHECK_THAT(raw.option<ConfigOptionFloats>("travel_speed")->values.front(), Catch::Matchers::WithinAbs(321.0, 1e-6)); +} + +TEST_CASE("Typeless preset resolution preserves duplicate identity ambiguity", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "duplicate-process.json"; + std::ofstream(source_file.string()) << "{}"; + + PresetBundle bundle; + add_inmemory_preset(bundle.prints, "First Process Identity").file = source_file.string(); + add_inmemory_preset(bundle.prints, "Second Process Identity").file = source_file.string(); + + DynamicPrintConfig raw; + Preset::Type resolved_type = Preset::TYPE_INVALID; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config_type(raw, resolved_type, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error == "Preset identity is ambiguous"); + CHECK(resolved_type == Preset::TYPE_INVALID); +} + +TEST_CASE("Typeless preset resolution rejects cross-type ambiguity", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "ambiguous.json"; + std::ofstream(source_file.string()) << "{}"; + + PresetBundle bundle; + add_inmemory_preset(bundle.prints, "Process Identity").file = source_file.string(); + add_inmemory_preset(bundle.filaments, "Filament Identity").file = source_file.string(); + + DynamicPrintConfig raw; + Preset::Type resolved_type = Preset::TYPE_INVALID; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config_type(raw, resolved_type, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error == "Preset type is ambiguous"); + CHECK(resolved_type == Preset::TYPE_INVALID); +} + +TEST_CASE("Typeless preset resolution rejects a missing type candidate", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "unknown.json"; + std::ofstream(source_file.string()) << "{}"; + + PresetBundle bundle; + DynamicPrintConfig raw; + Preset::Type resolved_type = Preset::TYPE_INVALID; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config_type(raw, resolved_type, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error == "Preset type could not be resolved"); + CHECK(resolved_type == Preset::TYPE_INVALID); +} + +TEST_CASE("Exact file resolution rejects multiple preset identities", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "duplicate.json"; + std::ofstream(source_file.string()) << "{}"; + + PresetBundle bundle; + Preset &first = add_inmemory_preset(bundle.prints, "First Identity"); + first.file = source_file.string(); + Preset &second = add_inmemory_preset(bundle.prints, "Second Identity"); + second.file = source_file.string(); + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "Parent"; + + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error == "Preset identity is ambiguous"); +} + +TEST_CASE("System preset resolution returns the canonical vendor configuration", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir source_dir; + PresetBundle bundle; + + VendorProfile vendor("VendorB"); + vendor.name = "Vendor B"; + auto [vendor_it, inserted] = bundle.vendors.emplace(vendor.id, std::move(vendor)); + REQUIRE(inserted); + + Preset &resolved = add_inmemory_preset(bundle.prints, "Vendor B Process", "fdm_process_common"); + resolved.is_system = true; + resolved.vendor = &vendor_it->second; + resolved.file = (source_dir.path() / "vendor-b-process.json").string(); + std::ofstream(resolved.file) << "{}"; + resolved.config.option<ConfigOptionFloats>("travel_speed", true)->values = {321.0}; + resolved.config.option<ConfigOptionInt>("wall_loops", true)->value = 2; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + raw.option<ConfigOptionInt>("wall_loops", true)->value = 5; + + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, resolved.file, + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error.empty()); + REQUIRE(raw.option<ConfigOptionFloats>("travel_speed")->values.size() == 1); + CHECK_THAT(raw.option<ConfigOptionFloats>("travel_speed")->values.front(), Catch::Matchers::WithinAbs(321.0, 1e-6)); + CHECK(raw.option<ConfigOptionInt>("wall_loops")->value == 2); +} + +TEST_CASE("Manifest-backed preset resolution loads the source vendor tree", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path vendor_dir = dir.path() / "Acme"; + const fs::path child_file = vendor_dir / "process" / "nested" / "child.json"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"fdm_process_common","sub_path":"process/base.json"},)" + << R"({"name":"Acme Process","sub_path":"process/nested/child.json"}]})"; + fs::create_directories(child_file.parent_path()); + std::ofstream((vendor_dir / "process" / "base.json").string()) + << R"({"type":"process","name":"fdm_process_common","from":"system",)" + << R"("instantiation":"false","travel_speed":["321"]})"; + std::ofstream(child_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","inherits":"fdm_process_common","wall_loops":"5"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + raw.option<ConfigOptionInt>("wall_loops", true)->value = 5; + + PresetBundle bundle; + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, child_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error.empty()); + REQUIRE(raw.option<ConfigOptionFloats>("travel_speed")->values.size() == 1); + CHECK_THAT(raw.option<ConfigOptionFloats>("travel_speed")->values.front(), Catch::Matchers::WithinAbs(321.0, 1e-6)); + CHECK(raw.option<ConfigOptionInt>("wall_loops")->value == 5); +} + +TEST_CASE("Manifest-backed resolution is scoped to the explicit source root", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + auto write_vendor = [&](const std::string &root_name, double travel_speed) { + const fs::path root = dir.path() / root_name; + const fs::path child_file = root / "Acme" / "process" / "child.json"; + fs::create_directories(child_file.parent_path()); + std::ofstream((root / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"fdm_process_common","sub_path":"process/base.json"},)" + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + std::ofstream((root / "Acme" / "process" / "base.json").string()) + << R"({"type":"process","name":"fdm_process_common","from":"system",)" + << R"("instantiation":"false","travel_speed":[")" << travel_speed << R"("]})"; + std::ofstream(child_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","inherits":"fdm_process_common"})"; + return child_file; + }; + + const fs::path source_a = write_vendor("root-a", 111.0); + const fs::path source_b = write_vendor("root-b", 222.0); + REQUIRE(fs::exists(source_a)); + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "synthetic-parent-marker"; + + PresetBundle bundle; + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, source_b.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + REQUIRE(raw.option<ConfigOptionFloats>("travel_speed")->values.size() == 1); + CHECK_THAT(raw.option<ConfigOptionFloats>("travel_speed")->values.front(), Catch::Matchers::WithinAbs(222.0, 1e-6)); +} + +TEST_CASE("Exact-only resolution rejects an unconfigured manifest-backed file", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path source_file = dir.path() / "Acme" / "process" / "child.json"; + fs::create_directories(source_file.parent_path()); + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + std::ofstream(source_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","layer_height":"0.2"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "Some Parent"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, source_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error, false)); + CHECK(error == "Preset was not found in the loaded bundle"); +} + +TEST_CASE("Vendor filament resolution uses the shared Orca library base", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path library_dir = dir.path() / PresetBundle::ORCA_FILAMENT_LIBRARY; + const fs::path vendor_dir = dir.path() / "Acme"; + const fs::path child_file = vendor_dir / "filament" / "nested" / "petg.json"; + + std::ofstream((dir.path() / (std::string(PresetBundle::ORCA_FILAMENT_LIBRARY) + ".json")).string()) + << R"({"version":"1.0.0","name":"OrcaFilamentLibrary","filament_list":[)" + << R"({"name":"fdm_filament_pet","sub_path":"filament/pet.json","filament_id":"GFL99"}]})"; + fs::create_directories(library_dir / "filament"); + std::ofstream((library_dir / "filament" / "pet.json").string()) + << R"({"type":"filament","name":"fdm_filament_pet","from":"system",)" + << R"("filament_id":"GFL99","instantiation":"false",)" + << R"("filament_type":["PETG"],"filament_density":["1.27"]})"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","filament_list":[)" + << R"({"name":"Acme PETG","sub_path":"filament/nested/petg.json","filament_id":"GFA00"}]})"; + fs::create_directories(child_file.parent_path()); + std::ofstream(child_file.string()) + << R"({"type":"filament","name":"Acme PETG","from":"system",)" + << R"("filament_id":"GFA00","instantiation":"true","inherits":"fdm_filament_pet"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_filament_pet"; + + PresetBundle bundle; + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_FILAMENT, child_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error.empty()); + CHECK(raw.opt_string("filament_type", 0u) == "PETG"); + REQUIRE(raw.option<ConfigOptionFloats>("filament_density")->values.size() == 1); + CHECK_THAT(raw.option<ConfigOptionFloats>("filament_density")->values.front(), Catch::Matchers::WithinAbs(1.27, 1e-6)); +} + +TEST_CASE("Manifest-backed resolution rejects a missing parent", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path child_file = dir.path() / "Acme" / "process" / "child.json"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + fs::create_directories(child_file.parent_path()); + std::ofstream(child_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","inherits":"Missing Parent","layer_height":"0.2"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "Missing Parent"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, child_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK_FALSE(error.empty()); +} + +TEST_CASE("Manifest-backed resolution rejects a vendor load with malformed entries", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path child_file = dir.path() / "Acme" / "process" / "child.json"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[123,)" + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + fs::create_directories(child_file.parent_path()); + std::ofstream(child_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","layer_height":"0.2"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, child_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK_FALSE(error.empty()); +} + +TEST_CASE("Manifest-backed resolution rejects files absent from the vendor manifest", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path listed_file = dir.path() / "Acme" / "process" / "listed.json"; + const fs::path unlisted_file = dir.path() / "Acme" / "process" / "unlisted.json"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"Listed Process","sub_path":"process/listed.json"}]})"; + fs::create_directories(listed_file.parent_path()); + std::ofstream(listed_file.string()) + << R"({"type":"process","name":"Listed Process","from":"system",)" + << R"("instantiation":"true","layer_height":"0.2"})"; + std::ofstream(unlisted_file.string()) + << R"({"type":"process","name":"Unlisted Process","from":"system",)" + << R"("instantiation":"true","inherits":"fdm_process_common"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, unlisted_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error == "Source file is not an instantiated preset in its vendor manifest"); +} + +TEST_CASE("Manifest-backed resolution rejects a mismatched preset type", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path process_file = dir.path() / "Acme" / "process" / "child.json"; + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + fs::create_directories(process_file.parent_path()); + std::ofstream(process_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","layer_height":"0.2"})"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "fdm_filament_common"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_FILAMENT, process_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error == "Source file is not an instantiated preset in its vendor manifest"); +} + +TEST_CASE("Resolution terminates when no vendor manifest exists", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path detached_file = dir.path() / "detached.json"; + std::ofstream(detached_file.string()) << "{}"; + + DynamicPrintConfig raw; + raw.option<ConfigOptionString>(BBL_JSON_KEY_INHERITS, true)->value = "Missing Parent"; + + PresetBundle bundle; + std::string error; + CHECK_FALSE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, detached_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(error == "Preset was not found in the loaded bundle"); +} + // Orca: a filament in the Orca Filament Library that names its compatible printers has to hide the generic // library filament sharing its alias, the same way a vendor owned filament does. Otherwise both are compatible // with that printer and the plater combo box lists the shared alias twice. @@ -566,6 +1038,87 @@ TEST_CASE("A printer specific filament supersedes the generic library filament w CHECK(is_compatible_with_printer(generic_lib, PresetWithVendorProfile(*printer_c, nullptr))); } +namespace { + +// One system printer plus the filament presets a machine facing dialog has to choose between: +// an Orca Filament Library generic with no compatible_printers, a same alias vendor filament +// that names the printer, a library filament with no vendor twin, and a vendor filament that +// belongs to a different printer. +struct MachineFilaments +{ + PresetBundle bundle; + VendorProfile library{PresetBundle::ORCA_FILAMENT_LIBRARY}; + VendorProfile vendor{"Vendor"}; + + MachineFilaments() + { + // VendorProfile's constructor takes an id; the library rule keys off the name. + library.name = PresetBundle::ORCA_FILAMENT_LIBRARY; + vendor.name = "Vendor"; + + Preset &printer = add_inmemory_preset(bundle.printers, "Printer A 0.4 nozzle"); + printer.is_system = true; + printer.vendor = &vendor; + printer.config.option<ConfigOptionString>("printer_model", true)->value = "Printer A"; + + add_filament(library, "Generic ABS @System", "Generic ABS", {}); + add_filament(vendor, "Generic ABS @Printer A", "Generic ABS", { "Printer A 0.4 nozzle" }); + add_filament(library, "FilAr ABS @System", "FilAr ABS", {}); + add_filament(vendor, "Vendor PLA @Printer B", "Vendor PLA", { "Printer B 0.4 nozzle" }); + + // update_library_profile_excluded_from() is protected and has its own test above; record + // the exclusion it derives from the same alias vendor filament. + Preset *shadowed = bundle.filaments.find_preset("Generic ABS @System"); + REQUIRE(shadowed != nullptr); + shadowed->m_excluded_from.insert("Printer A 0.4 nozzle"); + } + + void add_filament(const VendorProfile &owner, const std::string &name, const std::string &alias, + std::vector<std::string> compatible_printers) + { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.is_system = true; + preset.alias = alias; + preset.vendor = &owner; + compatible_list(bundle.filaments, name, "compatible_printers") = std::move(compatible_printers); + } + + bool offers(const std::string &preset_name, bool include_user_presets = false) + { + const std::vector<Preset *> offered = + bundle.get_filament_presets_for_machine("Printer A", "0.4", include_user_presets); + return std::any_of(offered.begin(), offered.end(), + [&preset_name](const Preset *p) { return p->name == preset_name; }); + } +}; + +} // namespace + +TEST_CASE("Filaments offered for a machine follow the app's compatibility rule", "[Preset][Bundle]") +{ + MachineFilaments f; + + SECTION("a library filament with no compatible_printers is offered") { + CHECK(f.offers("FilAr ABS @System")); + } + + SECTION("a same alias vendor filament shadows the library generic") { + CHECK(f.offers("Generic ABS @Printer A")); + CHECK_FALSE(f.offers("Generic ABS @System")); + } + + SECTION("a filament naming a different printer is not offered") { + CHECK_FALSE(f.offers("Vendor PLA @Printer B")); + } + + SECTION("a user filament is offered only when the printer supports user presets") { + add_inmemory_preset(f.bundle.filaments, "My PLA"); + + CHECK_FALSE(f.offers("My PLA", /*include_user_presets=*/false)); + CHECK(f.offers("My PLA", /*include_user_presets=*/true)); + } +} + namespace { @@ -705,6 +1258,2807 @@ TEST_CASE("Sizing the filament list to a multi-tool nozzle count keeps mixed slo } } +// A "published" 3MF keeps the user's currently-selected presets and overlays only the +// author-selected process keys onto the edited preset (mirrors the GUI load path: normalize +// before load_config_model, then the overlay in load_config_file_config). +TEST_CASE("Published 3MF overlays only the author-selected process keys onto the edited preset", "[Preset][Bundle][Published]") +{ + // The file config the GUI builds from a .3mf's project settings. + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // The loader derives the filament count from filament_colour and throws when it is + // empty; a 3mf always carries it. + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt_float("layer_height") = 0.28; // process scalar + config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values = { 140., 150. }; // matching-size vector + config.opt<ConfigOptionStrings>("post_process")->values = { "script-a", "script-b" }; // mismatched vector + config.opt<ConfigOptionInts>("nozzle_temperature")->values = { 220 }; // filament key (not applied anywhere) + // Structural (denylisted) key: must be silently ignored. full_print_config() omits the + // *_settings_id keys, so create one explicitly. + config.opt_string("print_settings_id", true) = "file process"; + config.opt<ConfigOptionFloats>("flush_multiplier")->values = { 2., 2. }; // must NOT cross over + config.opt<ConfigOptionFloats>("wipe_tower_x")->values = { 100. }; // plate geometry, does cross over + config.opt<ConfigOptionFloat>("wipe_tower_rotation_angle")->value = 45.; // published-only plate geometry, crosses over + config.option("curr_bed_type")->setInt(BedType::btPC); // must NOT cross over + return config; + }; + + const std::vector<std::string> published_keys = { + "layer_height", "wiping_volumes_extruders", "post_process", "nozzle_temperature", "print_settings_id" + }; + + PresetBundle bundle; + const std::string pre_load_name = bundle.prints.get_edited_preset().name; + const size_t pre_load_size = bundle.prints.size(); + + // The edited presets are the overlay targets: recognizable pre-load values. + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values = { 10., 20. }; + bundle.prints.get_edited_preset().config.opt<ConfigOptionStrings>("post_process")->values = { "existing-script" }; + bundle.prints.get_edited_preset().config.opt_string("print_settings_id") = "user process"; + // Capture the ctor-seeded project_config values so the assertions below check the load + // leaves them untouched rather than hardcoding the defaults. + const std::vector<std::string> seed_filament_colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + const std::vector<double> seed_flush_multiplier = bundle.project_config.opt<ConfigOptionFloats>("flush_multiplier")->values; + const int seed_bed_type = bundle.project_config.option("curr_bed_type")->getInt(); + + DynamicPrintConfig config = make_file_config(); + // The GUI normalizes the config before load; mirror that so only the production path runs. + Preset::normalize(config); + + PublishedConfig pub; + pub.published = true; + pub.published_keys = published_keys; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // a) Process scalar overlaid; matching-size vector applied, mismatched one lands in + // skipped_keys; applied keys are not reported. + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); + check_double_vector(bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values, { 140., 150. }); + CHECK(bundle.prints.get_edited_preset().config.opt<ConfigOptionStrings>("post_process")->values == std::vector<std::string>{ "existing-script" }); + CHECK(contains_key(pub.skipped_keys, "post_process")); + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); + + // b) A filament key is never applied anywhere and is reported as skipped. + CHECK(bundle.prints.get_edited_preset().config.option("nozzle_temperature") == nullptr); + CHECK(contains_key(pub.skipped_keys, "nozzle_temperature")); + + // c) A structural key is silently ignored: neither applied nor reported as skipped. + CHECK(bundle.prints.get_edited_preset().config.opt_string("print_settings_id") == "user process"); + CHECK_FALSE(contains_key(pub.skipped_keys, "print_settings_id")); + + // d) Only plate/bed geometry crosses in published mode: filament/purge data and bed type + // stay at the ctor seeds. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values == seed_filament_colour); + CHECK(bundle.project_config.opt<ConfigOptionFloats>("flush_multiplier")->values == seed_flush_multiplier); + CHECK(bundle.project_config.option("curr_bed_type")->getInt() == seed_bed_type); + check_double_vector(bundle.project_config.opt<ConfigOptionFloats>("wipe_tower_x")->values, { 100. }); + CHECK_THAT(bundle.project_config.opt<ConfigOptionFloat>("wipe_tower_rotation_angle")->value, Catch::Matchers::WithinAbs(45., 0.000001)); + + // e) The published path keeps the user's currently-selected presets: same preset, same size. + CHECK(bundle.prints.get_edited_preset().name == pre_load_name); + CHECK(bundle.prints.size() == pre_load_size); + + // f) Non-published control: the overlay is disabled, the file's presets are imported + // instead, and no skipped_keys are produced. + PresetBundle control_bundle; + const size_t control_pre_size = control_bundle.prints.size(); + PublishedConfig control_pub; + control_pub.published = false; + control_pub.published_keys = published_keys; + DynamicPrintConfig control_config = make_file_config(); + Preset::normalize(control_config); + control_bundle.load_config_model("test.3mf", std::move(control_config), Semver(), &control_pub); + + CHECK(control_pub.skipped_keys.empty()); + CHECK(control_bundle.prints.size() > control_pre_size); + // The file's layer_height reached the edited preset via the normal import, not the overlay. + CHECK_THAT(control_bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); +} + +// The published printer overlay is restricted to the publishable retraction/z-hop allowlist: +// matching-size vectors apply, mismatched vectors are reported as skipped, and any other +// printer-class key (e.g. machine_start_gcode) is contract-excluded (never applied, never +// reported). +TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys onto the edited printer preset", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + Preset::normalize(config); + config.opt<ConfigOptionFloats>("retraction_length")->values = { 1.4 }; // matching size (1 extruder) + config.opt<ConfigOptionFloats>("retraction_speed")->values = { 45., 55. }; // size 2: mismatched + config.opt_string("machine_start_gcode") = "G28 ; from file"; // outside the allowlist + + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8 }; + // A recognizable non-default value: the skipped mismatch below must leave it untouched + // (asserting the default instead would silently test PrintConfig's retraction_speed). + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_speed")->values = { 33. }; + bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") = "G28 ; user"; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length", "retraction_speed", "machine_start_gcode" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Matching-size retraction vector applied; mismatched vector reported as skipped and the + // receiver's own value survives. + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 1.4 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_speed")->values, { 33. }); + CHECK(contains_key(pub.skipped_keys, "retraction_speed")); + // Contract-excluded printer key: silently ignored, absent from skipped_keys. + CHECK(bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") == "G28 ; user"); + CHECK_FALSE(contains_key(pub.skipped_keys, "machine_start_gcode")); +} + +// A published 3MF carries per-slot material keys; on load they are applied positionally to the +// receiver's slot N (a key-only entry has no type gate), written onto the slot's stored preset +// in place. +TEST_CASE("Published 3MF applies positional material keys onto the receiver's material presets", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Two filament slots; filament_diameter drives the normalized per-slot vector sizes. + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + // Keep the multi-extruder consistency validation happy for a 2-slot config. + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFT99" }; + // Author per-slot retraction values. These are per-filament override keys that are not + // members of the static PrintRegionConfig, so full_print_config() omits them and they + // must be created explicitly (as nullable, matching the real 3MF project config). + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 1.2 }; + config.option<ConfigOptionFloatsNullable>("filament_z_hop", true)->values = { 0.2, 0.3 }; + return config; + }; + + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.filament_id = "GFL99"; + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt_string("filament_vendor", 0u) = "Generic"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt<ConfigOptionStrings>("filament_settings_id")->values = { "receiver-pla" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.filament_id = "GFT99"; + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt_string("filament_vendor", 0u) = "Generic"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + petg.config.opt<ConfigOptionFloatsNullable>("filament_z_hop", true)->values = { 0.1 }; + bundle.filament_presets = { "My PLA", "My PETG" }; + + PublishedMaterialEntry pla_entry; + pla_entry.filament_id = "GFL99"; + pla_entry.slot = 0; // the author's PLA slot + pla_entry.keys = { "filament_retraction_length", "filament_settings_id" }; + PublishedMaterialEntry petg_entry; + petg_entry.filament_id = "GFT99"; + petg_entry.slot = 1; // the author's PETG slot + petg_entry.keys = { "filament_retraction_length", "filament_z_hop" }; + // A slot-less entry (no slot field, only possible in hand-crafted files): silently skipped. + PublishedMaterialEntry noslot_entry; + noslot_entry.filament_type = "ABS"; + noslot_entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { pla_entry, petg_entry, noslot_entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The author's slot values are written onto the receiver's stored presets in place. + check_double_vector(bundle.filaments.find_preset("My PLA")->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My PETG")->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 1.2 }); + check_double_vector(bundle.filaments.find_preset("My PETG")->config.opt<ConfigOptionFloatsNullable>("filament_z_hop")->values, { 0.3 }); + // Structural keys inside a material entry are silently ignored: the receiver's own + // filament_settings_id is untouched and nothing is reported for it. + CHECK(bundle.filaments.find_preset("My PLA")->config.opt<ConfigOptionStrings>("filament_settings_id")->values == std::vector<std::string>{ "receiver-pla" }); + CHECK_FALSE(contains_key(pub.skipped_keys, "material:GFL99 (filament_settings_id)")); + // Everything applied; the slot-less entry produced no skipped entry. + CHECK(pub.skipped_keys.empty()); +} + +// A "full publish" slot serializes the whole filament. On load the slot always receives a +// standalone detached copy of the author's material - created even when the receiver's own +// material matches the published type - and no receiver library preset is ever mutated. +TEST_CASE("Published 3MF full-published slots are imported as standalone detached copies", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Two author slots; filament_diameter drives the normalized per-slot vector sizes. + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFT99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 1.2 }; + return config; + }; + // The full dump of slot 0, publishing the whole filament as type "ABS". + auto make_full_abs_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "ABS"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + + SECTION("type match still creates a detached copy instead of mutating the receiver material") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA", "My PLA" }; + + PublishedMaterialEntry full = make_full_abs_entry(); + full.publish_type_value = "PLA"; // author requires PLA, receiver slot is PLA + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { full }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The type matches, but the import still detaches: the slot lands on a fresh copy + // named from the published type (no identity fields in this entry), carrying the + // author's values; the receiver's own material is untouched. + CHECK(bundle.filament_presets[0] == "PLA"); + Preset *copy = bundle.filaments.find_preset("PLA", false, true); + REQUIRE(copy != nullptr); + check_double_vector(copy->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> PLA"); + } + + SECTION("type mismatch also detaches: a fresh same-type copy replaces the slot") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &abs = add_inmemory_preset(bundle.filaments, "My ABS"); + abs.config.opt_string("filament_type", 0u) = "ABS"; + abs.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.3 }; + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_abs_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 1); + // No substitution search runs: a brand-new copy named after the published type is + // created and both pre-existing presets stay exactly as they were. + CHECK(bundle.filament_presets[0] == "ABS"); + Preset *copy = bundle.filaments.find_preset("ABS", false, true); + REQUIRE(copy != nullptr); + check_double_vector(copy->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My ABS", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.3 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS"); + } + + SECTION("the author's identity rides on the copy when the type has no library match") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PLA"); + other.config.opt_string("filament_type", 0u) = "PLA"; + other.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.7 }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry full = make_full_abs_entry(); + // The dump carries the identity too, so the created copy takes the author's type + // and vendor instead of the baseline clone's. + full.full_keys = { "filament_retraction_length", "filament_type", "filament_vendor" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { full }; + DynamicPrintConfig config = make_file_config(); + // The author's slot 0 really is ABS. + config.opt<ConfigOptionStrings>("filament_type")->values = { "ABS", "PETG" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // No ABS preset needs to exist in the library: the copy carries the author's values, + // type and vendor included. Neither receiver preset was touched. + CHECK(bundle.filament_presets[0] == "ABS"); + Preset *copy = bundle.filaments.find_preset("ABS", false, true); + REQUIRE(copy != nullptr); + check_double_vector(copy->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + CHECK(copy->config.opt_string("filament_type", 0u) == "ABS"); + CHECK(copy->config.opt_string("filament_vendor", 0u) == "Generic"); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt_string("filament_type", 0u) == "PLA"); + check_double_vector(bundle.filaments.find_preset("Other PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.7 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS"); + } +} + +// The author's preset name travels in the file and names the created standalone copy (variant +// tail stripped), regardless of what the receiver's library holds: an exact-name library preset +// is never reused nor mutated. +TEST_CASE("Published 3MF imports a full material under the author's stripped name", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "OGFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + + auto add_pla = [](PresetBundle &bundle, const char *name, const char *id, const char *vendor, const char *setting_id) { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.filament_id = id; + preset.setting_id = setting_id; + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt_string("filament_vendor", 0u) = vendor; + preset.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + return &preset; + }; + + SECTION("an exact-name library preset exists: a detached copy is created beside it") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "OGFL99"; + entry.filament_vendor = "Generic"; + entry.setting_id = "RcBNzytWgwRrwXXz"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The copy is named after the stripped author name; the receiver's exact-name preset + // keeps its own values. + CHECK(bundle.filament_presets[0] == "Generic PLA"); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.6 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("only the name is present (broken/stale ids): the copy is still created") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA"); + check_double_vector(bundle.filaments.find_preset("Bambu PLA Basic @System", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("grown slot (author slot 1) receives its own detached copy") { + auto two_slot_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "OGFL99", "OGFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 0.8 }; + return config; + }; + + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = two_slot_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "My PETG"); + // The grown slot seeds the receiver's last preset ("My PETG"), then the full material + // detaches onto a copy carrying the author's slot-1 value; "Generic PLA @System" is + // left untouched. + CHECK(bundle.filament_presets[1] == "Generic PLA"); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.8 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 1: My PETG -> Generic PLA"); + CHECK(pub.skipped_keys.empty()); + } +} + +// The stripped author name can collide with an existing library preset ("Generic PLA"): the +// created copy must uniquify with the "(Published)" suffix rather than overwrite, reuse or +// mutate any of the receiver's own presets. +TEST_CASE("Published 3MF uniquifies an imported full material name on collision", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + // A legacy bundle preset literally named "Generic PLA" - collides with the stripped name. + Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + bare.config.opt_string("filament_vendor", 0u) = "Generic"; + bare.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + // The author's exact preset. + Preset &qidi = add_inmemory_preset(bundle.filaments, "Generic PLA @Qidi Q2 0.4 nozzle"); + qidi.config.opt_string("filament_type", 0u) = "PLA"; + qidi.config.opt_string("filament_vendor", 0u) = "Generic"; + qidi.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + // The Orca library preset. + Preset &sys = add_inmemory_preset(bundle.filaments, "Generic PLA @System"); + sys.config.opt_string("filament_type", 0u) = "PLA"; + sys.config.opt_string("filament_vendor", 0u) = "Generic"; + sys.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @Qidi Q2 0.4 nozzle"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The copy lands beside the collision, suffixed; every pre-existing preset keeps its own + // values. + CHECK(bundle.filament_presets[0] == "Generic PLA (Published)"); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published)", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @Qidi Q2 0.4 nozzle", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (Published)"); + CHECK(pub.skipped_keys.empty()); +} + +// The overlay writes onto the edited layer only when that layer survives the load (slot 0's +// preset still matches the edited preset). When the user views a non-first slot's material and +// the published entry targets that slot, the final re-select would destroy the edited layer - +// so the values must land on the stored preset instead and survive. +TEST_CASE("Published 3MF writes to the stored preset when the edited layer is re-selected away", "[Preset][Bundle][Published]") +{ + // Two-slot author config: slot 1 carries the published retraction value. + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PETG", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFT99", "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6, 0.9 }; + return config; + }; + + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PETG", "My PLA" }; + // The user is viewing slot 1's material. + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The published values survived on the stored preset (the edited layer was re-selected to + // slot 0's material and must not have been the only copy). + Preset *stored = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(stored != nullptr); + CHECK(stored->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(stored->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + // The load re-selected slot 0's material, mirroring a normal project load. + CHECK(bundle.filaments.get_edited_preset().name == "My PETG"); + // Selecting the slot's material afterwards surfaces the applied values. + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + CHECK(bundle.filaments.get_edited_preset().config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(bundle.filaments.get_edited_preset().config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + CHECK(pub.skipped_keys.empty()); +} + +// The created copy is named after the author's preset with the "@variant" tail stripped; +// trailing whitespace left behind by the truncation must be trimmed away, and names without +// a tail pass through unchanged. +TEST_CASE("publish_material_base_name strips the variant tail from a published preset name", "[Preset][Bundle][Published]") +{ + CHECK(publish_material_base_name("Generic PLA @System") == "Generic PLA"); + CHECK(publish_material_base_name("Generic PLA @Qidi Q2 0.4 nozzle") == "Generic PLA"); + // Truncation at '@' leaves the space before the tail; it must not survive. + CHECK(publish_material_base_name("Generic PLA @System") == "Generic PLA"); + CHECK(publish_material_base_name("Voron Generic PLA") == "Voron Generic PLA"); + CHECK(publish_material_base_name("") == ""); + // A tail-only name strips to nothing; the caller falls back to identity fields. + CHECK(publish_material_base_name("@System").empty()); +} + +// A full-published material arrives as a brand-new standalone preset: parentless, visible, +// project-embedded ("Preset Inside Project"), carrying the author's values and colour - and +// never touching any of the receiver's own presets. +TEST_CASE("Published 3MF imports a full material as a detached project-embedded preset", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + Preset &spare = add_inmemory_preset(bundle.filaments, "Spare PLA"); + spare.config.opt_string("filament_type", 0u) = "PLA"; + spare.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.4 }; + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The slot lands on the freshly created copy, named after the stripped author name. + CHECK(bundle.filament_presets[0] == "Author PLA"); + Preset *copy = bundle.filaments.find_preset("Author PLA", false, true); + REQUIRE(copy != nullptr); + // Detached + project-embedded contract. + CHECK(copy->is_project_embedded); + CHECK(copy->inherits().empty()); + CHECK(copy->setting_id.empty()); + CHECK(copy->vendor == nullptr); + CHECK_FALSE(copy->is_system); + CHECK_FALSE(copy->is_default); + CHECK_FALSE(copy->is_external); + CHECK(copy->is_visible); + CHECK(copy->filament_id == "AFL01"); + CHECK(copy->config.opt<ConfigOptionStrings>("filament_settings_id")->values == std::vector<std::string>{ "Author PLA" }); + // The published values and colour live on the copy. + check_double_vector(copy->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + CHECK(copy->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + // Universally compatible: no printer/print restrictions survive the import. + CHECK(copy->config.opt<ConfigOptionStrings>("compatible_printers")->values.empty()); + CHECK(copy->config.opt<ConfigOptionStrings>("compatible_prints")->values.empty()); + CHECK(copy->config.opt<ConfigOptionString>("compatible_printers_condition")->value.empty()); + CHECK(copy->config.opt<ConfigOptionString>("compatible_prints_condition")->value.empty()); + // Nothing pre-existing was touched. + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.6 }); + check_double_vector(bundle.filaments.find_preset("Spare PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.4 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA"); +} + +// Compatibility restrictions riding on the receiver's baseline preset must not leak onto the +// imported copy: a detached full material is usable with every printer and print profile. +TEST_CASE("Published 3MF clears printer restrictions on the imported full material", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &restricted = add_inmemory_preset(bundle.filaments, "Restricted PLA"); + restricted.config.opt_string("filament_type", 0u) = "PLA"; + restricted.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + restricted.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); + restricted.config.set_key_value("compatible_prints", new ConfigOptionStrings({ "Unrelated Print" })); + restricted.config.option<ConfigOptionString>("compatible_printers_condition", true)->value = "printer_settings_id==\"Nope\""; + restricted.config.option<ConfigOptionString>("compatible_prints_condition", true)->value = "print_settings_id==\"Nope\""; + bundle.filament_presets = { "Restricted PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The copy (named from the published type; no identity fields) has no restrictions left. + CHECK(bundle.filament_presets[0] == "PLA"); + Preset *copy = bundle.filaments.find_preset("PLA", false, true); + REQUIRE(copy != nullptr); + CHECK(copy->config.opt<ConfigOptionStrings>("compatible_printers")->values.empty()); + CHECK(copy->config.opt<ConfigOptionStrings>("compatible_prints")->values.empty()); + CHECK(copy->config.opt<ConfigOptionString>("compatible_printers_condition")->value.empty()); + CHECK(copy->config.opt<ConfigOptionString>("compatible_prints_condition")->value.empty()); + // The receiver's own restricted preset keeps its restrictions. + const Preset *original = bundle.filaments.find_preset("Restricted PLA", false, true); + REQUIRE(original != nullptr); + CHECK(original->config.opt<ConfigOptionStrings>("compatible_printers")->values == std::vector<std::string>{ "Unrelated Printer" }); + CHECK(original->config.opt<ConfigOptionString>("compatible_printers_condition")->value == "printer_settings_id==\"Nope\""); + CHECK(pub.skipped_keys.empty()); +} + +// Identical Full materials (same setting_id + preset_name identity) share one created +// instance: an author who pointed several slots at one material gets one standalone copy, +// and the first entry's slot values win. +TEST_CASE("Published 3MF shares one imported copy between identical full slots", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "AFL01", "AFL01" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 0.8 }; + return config; + }; + auto make_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PETG"); + other.config.opt_string("filament_type", 0u) = "PETG"; + other.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.65 }; + bundle.filament_presets = { "My PETG", "Other PETG" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry(0), make_entry(1) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Both slots point at the single shared copy; no second "(Published)" instance exists. + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "Author PLA"); + CHECK(bundle.filament_presets[1] == "Author PLA"); + CHECK(bundle.filaments.find_preset("Author PLA", false, true) != nullptr); + CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true) == nullptr); + // The first entry's slot values won. + check_double_vector(bundle.filaments.find_preset("Author PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + // Both slots reported, same target; originals untouched. + REQUIRE(pub.material_replacements.size() == 2); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA"); + CHECK(pub.material_replacements[1] == "slot 1: Other PETG -> Author PLA"); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.6 }); + check_double_vector(bundle.filaments.find_preset("Other PETG", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.65 }); + CHECK(pub.skipped_keys.empty()); +} + +// Without a preset name the copy falls back to the stable material id; fully anonymous +// hand-crafted entries never share instances between slots (their dedup key is slot-scoped). +TEST_CASE("Published 3MF names unidentified full materials from their fallback fields", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFT99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 1.2 }; + return config; + }; + + SECTION("empty preset_name falls back to the filament_id") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "AFL01"); + CHECK(bundle.filaments.find_preset("AFL01", false, true) != nullptr); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("fully anonymous entries get slot-scoped copies") { + PresetBundle bundle; + Preset &first = add_inmemory_preset(bundle.filaments, "First PLA"); + first.config.opt_string("filament_type", 0u) = "PLA"; + first.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &second = add_inmemory_preset(bundle.filaments, "Second PLA"); + second.config.opt_string("filament_type", 0u) = "PLA"; + second.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.55 }; + bundle.filament_presets = { "First PLA", "Second PLA" }; + + PublishedMaterialEntry entry0; + entry0.slot = 0; + entry0.full = true; + entry0.publish_type = true; + entry0.publish_type_value = "ABS"; // the only naming field present + entry0.full_keys = { "filament_retraction_length" }; + PublishedMaterialEntry entry1 = entry0; + entry1.slot = 1; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry0, entry1 }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // No shared identity: each slot gets its own uniquified copy. + CHECK(bundle.filament_presets[0] == "ABS"); + CHECK(bundle.filament_presets[1] == "ABS (Published)"); + CHECK(bundle.filaments.find_preset("ABS", false, true) != nullptr); + CHECK(bundle.filaments.find_preset("ABS (Published)", false, true) != nullptr); + CHECK(pub.skipped_keys.empty()); + } +} + +// Within-load dedup does not span loads: importing the same published file again into the same +// session creates a second, uniquified copy instead of mutating or reusing the first. +TEST_CASE("Re-importing a published full material uniquifies the second copy", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + bundle.filament_presets = { "My PETG" }; + + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + + for (int round = 0; round < 2; ++round) { + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + if (round == 0) { + CHECK(bundle.filament_presets[0] == "Author PLA"); + CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true) == nullptr); + } else { + // The second import uniquifies beside the first instead of touching it. + CHECK(bundle.filament_presets[0] == "Author PLA (Published)"); + check_double_vector(bundle.filaments.find_preset("Author PLA (Published)", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Author PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: Author PLA -> Author PLA (Published)"); + } + CHECK(pub.skipped_keys.empty()); + } +} + +// A partially-published slot can carry a curated type and/or colour. The colour is applied +// regardless of the type match; a type mismatch with no same-type replacement keeps the +// receiver's material and reports the slot's keys as skipped. The receiver's slot count grows +// only as far as the highest slot with published content. +TEST_CASE("Published 3MF partial slots apply colour and gate keys by the published type", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFT99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9, 1.2 }; + return config; + }; + + SECTION("matching type applies the keys and the colour") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Type matched: keys and colour applied onto the receiver's preset in place. + Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(pla_preset != nullptr); + check_double_vector(pla_preset->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + CHECK(pla_preset->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); + } + + SECTION("type mismatch without a replacement keeps the material and skips the keys") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "ABS"; // no ABS in the receiver library + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The slot keeps the receiver's material: the colour applies in place, the keys are + // skipped. + CHECK(bundle.filament_presets[0] == "My PLA"); + Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(pla_preset != nullptr); + check_double_vector(pla_preset->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + CHECK(pla_preset->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); + CHECK(pub.material_replacements.empty()); + } + + SECTION("receiver slot count grows to fit the highest published slot and assigns matching type preset") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.8 }; + // The receiver has a single slot; the file carries two, only slot 1 is published. + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.publish_type = true; + entry.publish_type_value = "PETG"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The slot list was grown so author slot 1 has a material (the PETG preset), which + // then receives the author's values in place. + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[1] == "My PETG"); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 1.2 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + } +} + +// The receiver's slot list grows only as far as the highest published slot: a file whose author +// published nothing (or only a low slot) must not pull filler materials into the receiver's +// setup, and the receiver never grows to the file's count. +TEST_CASE("Published 3MF grows the receiver's slots only as far as the published slots", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Four author slots (a 4-filament model). + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + auto add_pla_preset = [](PresetBundle &bundle) { + Preset &preset = add_inmemory_preset(bundle.filaments, "My PLA"); + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + return &preset; + }; + auto make_color_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.publish_color = true; + entry.color = "#ABCDEF"; + return entry; + }; + + // A file whose author published nothing for any slot: the receiver's setup is untouched. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; // no material entries at all + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#123456" }); + CHECK(pub.skipped_keys.empty()); + } + + // Only slot 0 published: a single-slot receiver keeps its single slot; the file's other + // three slots pull nothing in. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + // The published colour lands on the slot's preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + } + + // Slot 3 published: the receiver grows to 4 so the published slot exists. Unpublished + // filler slots repeat the receiver's last preset ("Add one filament" behaviour). + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(3) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "My PLA"); + // Only "My PLA" exists in the library, so the published slot keeps the aliasing and the + // colour is written onto the shared preset (every slot references it). + CHECK(bundle.filament_presets[3] == "My PLA"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + // The project-level per-slot vectors were grown and seeded: fillers take their preset's + // colour, the published slot its published colour. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[1] == "#123456"); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[3] == "#ABCDEF"); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_multi_colour")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour_type")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionInts>("filament_map")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionFloats>("flush_volumes_matrix")->values.size() == 16); + } + + // Slots 0 and 2 published: the receiver grows to 3, never to the file's 4. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0), make_color_entry(2) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + } + + // A receiver with more slots than the file's filament count keeps its setup: neither the + // preset list nor the project-level vectors are shrunk to the file's smaller size. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + // Distinct project colours make a shrink observable. + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values = { "#111111", "#222222", "#333333" }; + bundle.project_config.opt<ConfigOptionStrings>("filament_multi_colour")->values = { "#111111", "#222222", "#333333" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0) }; // highest published slot: 0 + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // A one-filament file: num_filaments (1) is below the receiver's slot count (3). + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + // No shrink: all three project entries survive, with slot 0 synced to the published + // colour at its unshifted index and slots 1-2 untouched. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF", "#222222", "#333333" }); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_multi_colour")->values == std::vector<std::string>{ "#ABCDEF", "#222222", "#333333" }); + CHECK(bundle.project_config.opt<ConfigOptionInts>("filament_map")->values.size() == 3); + // The published colour still reached slot 0's preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + } +} + +// A published slot is seeded from an unused library preset and the values are written onto it +// in place, so the receiver's own material (slot 0) is never overwritten. +TEST_CASE("Published 3MF grows published slots to the receiver's last preset and recolors it in place", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + // Receiver with its own material plus one more library preset; author publishes only slot 4 + // (Red). Growth always repeats the receiver's last filament ("Add one filament"), so the + // grown slot references the shared "My PLA" preset and the published red recolors it in + // place; the unused "Other PLA" preset is left untouched. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PLA"); + other.config.opt_string("filament_type", 0u) = "PLA"; + other.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#654321" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 3; + entry.publish_color = true; + entry.color = "#ABCDEF"; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + // Every grown slot (published or filler) repeats the receiver's last preset. + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "My PLA"); + // The published red recolors the shared "My PLA" preset in place; the unused "Other PLA" + // preset is left untouched. + CHECK(bundle.filament_presets[3] == "My PLA"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#654321" }); + // The project-level colours are sized and seeded for every grown slot. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[1] == "#123456"); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[3] == "#ABCDEF"); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_multi_colour")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour_type")->values.size() == 4); + CHECK(bundle.project_config.opt<ConfigOptionInts>("filament_map")->values.size() == 4); +} + +// Growth always repeats the receiver's last preset; a published slot only lands on its +// material identity when the aliased grown slot is re-pointed (de-alias fires on a preset +// key). Lock the identity priority there: an exact filament_id outranks an arbitrary unused +// preset, and an entry carrying only a family constrains the pick to that family. +TEST_CASE("Published 3MF re-points an aliased grown slot by published identity or family without a type requirement", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + PublishedMaterialEntry entry; + entry.slot = 2; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.keys = { "filament_retraction_length" }; + // An unused preset sorting before everything else: an unconstrained pick would take it. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &arbitrary = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + arbitrary.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + SECTION("an exact filament_id outranks the first unused preset") { + Preset &authored = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + authored.config.opt_string("filament_type", 0u) = "PLA"; + authored.filament_id = "GFA00"; + entry.filament_id = "GFA00"; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Zzz PLA"); + // The exact-id preset outranks the type-only "Aaa PLA"; the re-point is reported. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Zzz PLA"); + } + + SECTION("a family-only entry picks an unused preset of that family") { + Preset &petg = add_inmemory_preset(bundle.filaments, "Bbb PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + entry.filament_type = "PETG"; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + // The family pick lands on the only PETG preset (the PLA presets and the receiver's own + // material lose), and the re-point is reported. + CHECK(bundle.filament_presets[2] == "Bbb PETG"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Bbb PETG"); + } +} + +// The GUI displays the edited preset, a snapshot of the selected collection preset taken at +// selection time. Since the overlay mutates the collection presets in place, the load must +// re-select the first slot's filament so the applied values - and slot replacements - surface +// in the GUI. +TEST_CASE("Published 3MF refreshes the edited preset so the applied material values surface", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + SECTION("the edited preset carries the applied colour and keys") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + // Mirror the GUI: the displayed preset is the collection's edited preset. + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + const Preset &edited = bundle.filaments.get_edited_preset(); + // The slot references the edited preset, so the overlay lands on the edited layer: + // visible as a modification while the stored preset stays untouched. + CHECK(edited.name == "My PLA"); + CHECK(edited.config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(edited.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#123456" }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + // The overlay is a visible, revertible modification of the edited preset. + CHECK(bundle.filaments.current_is_dirty()); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("a slot replacement is reflected in the edited preset") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &abs = add_inmemory_preset(bundle.filaments, "My ABS"); + abs.config.opt_string("filament_type", 0u) = "ABS"; + abs.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.3 }; + bundle.filament_presets = { "My PLA" }; + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + PublishedMaterialEntry entry = make_entry(); + entry.publish_type_value = "ABS"; // mismatch: replaced by the library's ABS + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets[0] == "My ABS"); + // The edited preset now displays the replacement with the author's values on top. + const Preset &edited = bundle.filaments.get_edited_preset(); + CHECK(edited.name == "My ABS"); + CHECK(edited.config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(edited.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + } +} + +// The overlay lands on the edited layer when the slot references the collection's edited +// preset, so the user's unsaved in-memory edits on it survive a published load (only the +// published keys are touched) and the change shows as a visible, revertible modification. +TEST_CASE("Published 3MF preserves unsaved edits on the edited filament preset", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_z_hop", true)->values = { 0.1 }; + bundle.filament_presets = { "My PLA" }; + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + // The user has unsaved in-memory edits on the preset being shown. + bundle.filaments.get_edited_preset().config.opt<ConfigOptionFloatsNullable>("filament_z_hop")->values = { 0.7 }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Published values land on the edited layer... + const Preset &edited = bundle.filaments.get_edited_preset(); + CHECK(edited.name == "My PLA"); + CHECK(edited.config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(edited.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + // ...the user's unsaved edit on a non-published key survives... + check_double_vector(edited.config.opt<ConfigOptionFloatsNullable>("filament_z_hop")->values, { 0.7 }); + // ...and the stored preset is untouched. + Preset *stored = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(stored != nullptr); + CHECK(stored->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#123456" }); + check_double_vector(stored->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.5 }); + check_double_vector(stored->config.opt<ConfigOptionFloatsNullable>("filament_z_hop")->values, { 0.1 }); + // The overlay is a visible, revertible modification of the edited preset. + CHECK(bundle.filaments.current_is_dirty()); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); +} + +// The published overlay must validate '#' variant indices: an out-of-range index is reported as +// skipped and must NOT resize/corrupt the receiver's vector, and a variant suffix on a scalar +// key is rejected instead of silently no-op'd. +TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffixed scalar keys", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + // Vector key, size 2 (matches the receiver's resized vector); distinct values make the + // applied element observable. + config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values = { 140., 150. }; + config.opt_float("layer_height") = 0.28; + Preset::normalize(config); + + PresetBundle bundle; + bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values = { 10., 20. }; + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "wiping_volumes_extruders#5", "wiping_volumes_extruders#1", "wiping_volumes_extruders#abc", "layer_height#0" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // In-range variant applied element-wise; the out-of-range one did not resize the vector. + check_double_vector(bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values, { 10., 150. }); + CHECK(bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values.size() == 2); + // Out-of-range variant, malformed variant and variant-suffixed scalar are reported as + // skipped; the malformed one must not fall back to element 0. + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders#5")); + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders#abc")); + CHECK(contains_key(pub.skipped_keys, "layer_height#0")); + CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders#1")); + // The scalar was never applied. + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.1, 0.000001)); +} + +// The print/printer overlay guards option types like the material pass does: a published key +// whose file-side option kind differs from the receiver's is reported as skipped instead of +// throwing ConfigurationError out of load_config_model, which would abort the whole project +// load. (Nullable variants share the type() of their non-nullable base, so this covers +// genuinely different option kinds - e.g. a string where a float vector is expected.) +TEST_CASE("Published 3MF reports type-mismatched keys as skipped instead of aborting", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + // The file carries the vector key as a string option (equal size to the receiver's)... + config.set_key_value("wiping_volumes_extruders", new ConfigOptionStrings({ "140", "150" })); + config.opt_float("layer_height") = 0.28; + + PresetBundle bundle; + // ...while the receiver's edited print preset holds the float variant of the same key: + // without the type guard, ConfigOptionVector::set() throws ConfigurationError out of + // load_config_model. + bundle.prints.get_edited_preset().config.set_key_value("wiping_volumes_extruders", new ConfigOptionFloats({ 10., 20. })); + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "wiping_volumes_extruders", "layer_height" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The load completes; the type-mismatched key is reported as skipped and the receiver's + // value is untouched; the matching scalar key still applies. + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); + check_double_vector(bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values, { 10., 20. }); + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); +} + +// A receiver filament preset missing its material identity (hand-edited file) must not crash +// the type gate: the gate reads it as a type mismatch, and the slot falls back to the +// "no replacement" path (keys skipped, colour still applied to the slot's preset). +TEST_CASE("Published 3MF survives a receiver preset missing its material identity", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9 }; + Preset::normalize(config); + + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + // Malformed receiver preset: the identity options are missing entirely. + pla.config.erase("filament_type"); + pla.config.erase("filament_vendor"); + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFL99"; + entry.slot = 0; + entry.publish_type = true; // exercises the type gate against the missing identity + // Require ABS: the receiver library (PLA-typed default preset, typeless slot preset) has no + // ABS candidate, so the gate falls into the "no replacement" path (a PLA requirement would + // legitimately replace the slot with the visible PLA default). + entry.publish_type_value = "ABS"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The gate reads the missing identity as a type mismatch; no same-type replacement exists, + // so the keys are skipped while the colour applies to the slot's preset in place. No crash. + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (filament_retraction_length)")); + CHECK(bundle.filament_presets[0] == "My PLA"); + Preset *mine_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(mine_preset != nullptr); + CHECK(mine_preset->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); +} + +// Lock the exact contents and order of the printer allowlist (the union of the tab's +// "Retraction" and "Z-Hop" optgroup lists, Tab.cpp). +TEST_CASE("Printer publishable allowlist matches the printer tab's Retraction and Z-Hop optgroups", "[Preset][Bundle][Published]") +{ + auto keys_of = [](const std::vector<PublishablePrinterOption>& opts) { + std::vector<std::string> keys; + keys.reserve(opts.size()); + for (const PublishablePrinterOption& opt : opts) + keys.emplace_back(opt.key); + return keys; + }; + + const std::vector<std::string> expected_retraction = { + "retraction_length", "retract_restart_extra", "retraction_speed", "deretraction_speed", + "retraction_minimum_travel", "retract_when_changing_layer", "wipe", "wipe_distance", + "retract_before_wipe", "retract_after_wipe" + }; + const std::vector<std::string> expected_z_hop = { + "retract_lift_enforce", "z_hop_types", "z_hop", "travel_slope", "retract_lift_above", + "retract_lift_below" + }; + + CHECK(keys_of(publishable_printer_retraction_options()) == expected_retraction); + CHECK(keys_of(publishable_printer_z_hop_options()) == expected_z_hop); + + std::set<std::string> expected_union(expected_retraction.begin(), expected_retraction.end()); + expected_union.insert(expected_z_hop.begin(), expected_z_hop.end()); + CHECK(publishable_printer_keys() == expected_union); +} + +// Loading the same published file twice must not compound values on the receiver's presets: +// each load re-applies the same absolute values, so the result is idempotent. +TEST_CASE("Published 3MF reloading does not compound values on the receiver's presets", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + pla.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + auto load = [&] { + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + }; + load(); + // First load: the receiver's preset carries the published values (mutated in place). + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + load(); + // Each load re-applies the same values onto the (already mutated) preset: no accumulation. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == std::vector<std::string>{ "#ABCDEF" }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); +} + +// A receiver with several slots aliasing the same preset (multi-extruder profile with one +// filament) and an author publishing keys on several slots: each published slot is re-pointed +// at its own distinct preset so values never leak between slots. +TEST_CASE("Published 3MF gives each published slot its own preset on an aliased receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6, 0.9, 1.2, 1.5 }; + return config; + }; + auto make_key_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + // A 4-extruder receiver with a single filament preset: the slots alias [A, A, A, A] before + // the published pass. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + // Spare library presets for the re-pointing to fall back on. + for (const char *name : { "Extra PLA A", "Extra PLA B", "Extra PLA C" }) { + Preset &extra = add_inmemory_preset(bundle.filaments, name); + extra.config.opt_string("filament_type", 0u) = "PLA"; + extra.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + } + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_key_entry(0), make_key_entry(1), make_key_entry(2), make_key_entry(3) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + // Every published slot references its own distinct preset: slot 0 keeps the receiver's + // material, slots 1-3 are re-pointed at the spare library presets. + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[2] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[2] != bundle.filament_presets[1]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[1]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[2]); + // Each slot's stored preset carries its own slot's retraction (mutated in place). + const std::vector<double> expected = { 0.6, 0.9, 1.2, 1.5 }; + for (size_t slot = 0; slot < 4; ++slot) { + Preset *preset = bundle.filaments.find_preset(bundle.filament_presets[slot], false, true); + REQUIRE(preset != nullptr); + check_double_vector(preset->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { expected[slot] }); + } + CHECK(pub.skipped_keys.empty()); +} + +// De-aliasing runs on the exported identity even without a checked Type row: the re-pointed +// slot lands on the exact published material (by filament_id) rather than an arbitrary spare, +// and the formerly silent re-point is surfaced through the replacements notification list. +TEST_CASE("Published 3MF de-aliases an aliased slot by published identity without a type requirement", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99" }; + config.option<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6, 0.9 }; + + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + // A spare sorting before the exact match: an unconstrained pick would take it. + Preset &spare = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + spare.config.opt_string("filament_type", 0u) = "PLA"; + spare.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &match = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + match.config.opt_string("filament_type", 0u) = "PLA"; + match.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + match.filament_id = "GFA00"; + bundle.filament_presets = { "My PLA", "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFA00"; + entry.keys = { "filament_retraction_length" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] == "Zzz PLA"); + // The published key was written onto the re-pointed slot's own preset. + Preset *target = bundle.filaments.find_preset("Zzz PLA", false, true); + REQUIRE(target != nullptr); + check_double_vector(target->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, { 0.9 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 1: My PLA -> Zzz PLA"); + CHECK(pub.skipped_keys.empty()); +} + +// Printer retraction keys are published per-extruder ("#N"): a receiver with a different +// extruder count still receives the in-range elements; out-of-range variants are reported as +// skipped instead of corrupting the receiver's vector. +TEST_CASE("Published 3MF applies per-extruder printer keys across extruder-count mismatches", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + // Author has 4 extruders. + config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.6, 0.9, 1.2, 1.5 }; + Preset::normalize(config); + return config; + }; + + // Receiver with a single extruder: only "#0" is in range; "#1..#3" are skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1", "retraction_length#2", "retraction_length#3" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.6 }); + CHECK(contains_key(pub.skipped_keys, "retraction_length#1")); + CHECK(contains_key(pub.skipped_keys, "retraction_length#2")); + CHECK(contains_key(pub.skipped_keys, "retraction_length#3")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_length#0")); + } + + // Receiver with four extruders and a 1-extruder author: only "#0" is published; the + // receiver's other extruders keep their own values. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8, 0.8, 0.8, 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0" }; + DynamicPrintConfig config = make_file_config(); + // The author's file carries a single-extruder value. + config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.7 }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.7, 0.8, 0.8, 0.8 }); + CHECK(pub.skipped_keys.empty()); + } +} + +// A published mixed filament serializes its definition (components, ratios, gradient) into the +// receiver's project_config - the project-level parallel arrays, not a filament preset. The +// mix's own blended colour is carried as publish_color so the receiver renders the swatch. +TEST_CASE("Published 3MF applies a mixed filament definition onto the receiver's project config", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Three author slots: two physical PLA/PETG plus one virtual mixed slot (index 2) + // blending slots 1 and 2 at 60/40 with a gradient. + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFT99", "GFL99" }; + // The mixed slot's definition. These keys are project-level arrays in the full config; + // on export they are masked so only the published slot's entry survives. + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "1,2" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient")->values = { 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + return config; + }; + + // A receiver that already carries the mix slot at index 2 as an actual mixed slot (e.g. a + // two-physical-plus-one-mix project with the same layout): the incoming definition is a + // like-for-like override of the virtual slot and applies in place without relocation. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + bundle.filament_presets = { "My PLA", "My PETG", "My PLA" }; + + // Grow the receiver's project arrays to 3 slots first, as set_num_filaments would, + // then mark the third slot as the receiver's own mixed filament. + bundle.set_num_filaments(3); + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] = "0.5,0.5"; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition landed in project_config's parallel arrays at the author slot. + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + const auto &ratios = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 3); + CHECK(ratios[2] == "0.6,0.4"); + const auto &gradient = bundle.project_config.opt<ConfigOptionBools>("filament_mixed_gradient")->values; + CHECK(gradient[2]); + const auto &range = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values; + CHECK(range[2] == "0.9,0.1"); + const auto &curve = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values; + CHECK(curve[2] == "0,0.1|1,0.9"); + const auto &per_part = bundle.project_config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values; + CHECK(per_part[2]); + // The mix's blended colour crossed into project_config for the swatch. + const auto &colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(colour.size() == 3); + CHECK(colour[2] == "#800080"); + // The other slots were not overwritten by the mask. + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + // Nothing skipped: every serialized mixed key was applied. + CHECK(pub.skipped_keys.empty()); + // Like-for-like override: no slot was relocated. + CHECK(pub.material_replacements.empty()); + } + + // A receiver with fewer slots: the slot is grown and seeded before the definition applies. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry mix; + mix.slot = 2; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + CHECK(pub.skipped_keys.empty()); + } +} + +// A published mixed filament whose definition cannot be applied is reported as skipped instead +// of aborting the load: the entry lists a mixed key that the file's payload does not carry. +TEST_CASE("Published 3MF reports an unappliable mixed filament definition as skipped", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + // Two author slots (so slot 1 is in range) but the payload omits the mixed arrays: the + // entry lists them, the file config does not. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75 }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic" }; + + PublishedMaterialEntry mix; + mix.slot = 1; + mix.keys = { "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grows to two slots; the missing payload keys are reported as skipped rather + // than dropped silently (material_label is empty for this entry). + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(contains_key(pub.skipped_keys, "material: (filament_mixed_components)")); + CHECK(contains_key(pub.skipped_keys, "material: (filament_mixed_sublayer_ratios)")); +} + +// A published mixed filament must never convert one of the receiver's real, physical slots +// into a virtual mix: definitions that collide with a physical slot are relocated past every +// positional (real-filament) destination, while ones colliding with an existing mixed slot +// override it in place. +TEST_CASE("Published 3MF relocates a mixed filament instead of overwriting a physical slot", "[Preset][Bundle][Published]") +{ + // An author project with <num_author_slots> slots whose last slot is a mixed filament. + auto make_file_config = [](size_t num_author_slots, size_t num_tail_mixes = 1) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + std::vector<double> diameters(num_author_slots, 1.75); + std::vector<int> self_index; + std::vector<std::string> variants; + std::vector<std::string> types; + for (size_t i = 0; i < num_author_slots; ++i) { + self_index.push_back(int(i + 1)); + variants.emplace_back("Direct Drive Standard"); + types.push_back(i % 2 == 0 ? "PLA" : "PETG"); + } + config.opt<ConfigOptionFloats>("filament_diameter")->values = diameters; + config.opt<ConfigOptionInts>("filament_self_index")->values = self_index; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = variants; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00AA00", "#0000FF", "#FFFF00", "#800080" }; + config.opt<ConfigOptionStrings>("filament_colour")->values.resize(num_author_slots, "#808080"); + config.opt<ConfigOptionStrings>("filament_type")->values = types; + config.opt<ConfigOptionStrings>("filament_vendor")->values.assign(num_author_slots, "Generic"); + config.opt<ConfigOptionStrings>("filament_ids")->values.resize(num_author_slots); + // The last <num_tail_mixes> author slots are mixed ones (components differ per slot so + // the definitions are distinguishable after relocation). + const size_t first_mix_slot = num_author_slots - num_tail_mixes; + config.opt<ConfigOptionBools>("filament_is_mixed")->values.assign(num_author_slots, 0); + config.opt<ConfigOptionStrings>("filament_mixed_components")->values.assign(num_author_slots, ""); + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values.assign(num_author_slots, ""); + for (size_t i = first_mix_slot; i < num_author_slots; ++i) { + config.opt<ConfigOptionBools>("filament_is_mixed")->values[i] = 1; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values[i] = + i % 2 == 0 ? std::string("1,2") : std::string("1,3"); + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[i] = + i % 2 == 0 ? std::string("0.6,0.4") : std::string("0.3,0.7"); + } + return config; + }; + + // The reported bug: an author publishes with physical filaments on slots 1-2 and a mixed + // filament on slot 5; the receiver runs five real filaments of his own. Slot 5 must stay + // untouched and the mix lands as a newly appended virtual slot 6. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector<std::string> receiver_colours = + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.slot = 4; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew by exactly one extra virtual slot. + REQUIRE(bundle.filament_presets.size() == 6); + // All five physical slots kept their meaning: no mixed flag, untouched names/colours. + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 6); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK_FALSE(is_mixed[2]); + CHECK_FALSE(is_mixed[3]); + CHECK_FALSE(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values.begin())); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[4] == "My PLA"); + // The definition itself is readable at the new index. + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 6); + CHECK(components[5] == "1,2"); + const auto &ratios = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 6); + CHECK(ratios[5] == "0.6,0.4"); + // The blended colour seeds the swatch of the new slot only. + const auto &colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(colour.size() == 6); + CHECK(colour[5] == "#800080"); + // The relocation is surfaced to the user through the post-import notice (the de-alias + // pass may contribute further messages, so presence is asserted, not the count). + bool relocated_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 4 -> slot 5") != std::string::npos) + relocated_reported = true; + CHECK(relocated_reported); + CHECK(pub.skipped_keys.empty()); + } + + // A definition colliding with the receiver's own mixed filament is overridden in place: + // nothing grows, nothing is reported as moved. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3); + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] = "0.9,0.1"; + + PublishedMaterialEntry mix; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(3); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + const auto &ratios = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 3); + CHECK(ratios[2] == "0.6,0.4"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); + } + + // Author publishes four physical filaments plus two mixed ones on slots 5 and 6; the + // receiver runs five real filaments. Both mixes relocate onto consecutive fresh slots, + // preserving their author order (slot 5 -> slot 6, slot 6 -> slot 7); no receiver slot is + // converted into a virtual mix. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector<std::string> receiver_colours = + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + + auto make_mix_entry = [](int authored_slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = authored_slot; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + return entry; + }; + PublishedMaterialEntry mix_a = make_mix_entry(4, "#800080"); + PublishedMaterialEntry mix_b = make_mix_entry(5, "#FF69B4"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix_a, mix_b }; + DynamicPrintConfig config = make_file_config(6, 2); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Two fresh virtual slots were appended. + REQUIRE(bundle.filament_presets.size() == 7); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 7); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[5]); + CHECK(is_mixed[6]); + // The definitions follow their author order. + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 7); + CHECK(components[5] == "1,2"); + CHECK(components[6] == "1,3"); + const auto &ratios = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 7); + CHECK(ratios[5] == "0.6,0.4"); + CHECK(ratios[6] == "0.3,0.7"); + // The five real slots kept their colours; each mix's blended colour seeded its new slot. + const auto &colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(colour.size() == 7); + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), colour.begin())); + CHECK(colour[5] == "#800080"); + CHECK(colour[6] == "#FF69B4"); + // Both relocations are reported with the correct mapping. + bool a_reported = false, b_reported = false; + for (const std::string &message : pub.material_replacements) { + if (message.find("slot 4 -> slot 5") != std::string::npos) + a_reported = true; + if (message.find("slot 5 -> slot 6") != std::string::npos) + b_reported = true; + } + CHECK(a_reported); + CHECK(b_reported); + CHECK(pub.skipped_keys.empty()); + // The relocation table is exposed for the model-reference remapping. + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(4) == 5); + CHECK(pub.mixed_slot_relocations.at(5) == 6); + } +} + +// A receiver that already owns a MIXED filament must keep the physical-first invariant after a +// published-3MF import: when incoming physical filaments would land on (or ahead of) the +// receiver's mixed slot, that mix is displaced to a fresh tail slot instead of being left +// interleaved with them (the R,M,R bug). +TEST_CASE("Published 3MF relocates the receiver's mixed filament past the incoming physical slots", "[Preset][Bundle][Published]") +{ + // Build the receiver's tool-changer with three slots, the third being the receiver's own + // mixed filament. A SEMM (single_extruder_multi_material) receiver sizes its slot list by + // hand, so a lower slot count than the printer's nozzle count is preserved on load - a + // non-SEMM tool-changer would top the preset list up to the nozzle count and shift the + // expected sizes (the rebalance logic under test is the same either way). + auto make_receiver = [](PresetBundle &bundle, const std::string &components, const std::string &ratios) { + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3, "#123456"); + bundle.printers.get_edited_preset().config.opt<ConfigOptionBool>("single_extruder_multi_material", true)->value = true; + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] = components; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] = ratios; + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[2] = "#800080"; + bundle.project_config.opt<ConfigOptionStrings>("filament_multi_colour")->values[2] = "#800080"; + }; + auto make_real_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + // A four-physical author project with no mixed slots (colour publish only), as in the + // reported Ferrari reference file. + auto make_config_4_real = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#000000", "#FFFFFF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + // [R, R, M] + four colour-only physical slots at authored 0..3 -> [R, R, R, R, M]. + { + PresetBundle bundle; + make_receiver(bundle, "1,2", "0.5,0.5"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#000000"), + make_real_entry(2, "#FFFFFF"), make_real_entry(3, "#FFFF00") }; + DynamicPrintConfig config = make_config_4_real(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grows by one extra virtual slot; the mix lands at the tail. + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + // The definition travelled with its swatch colour; the vacated slot 2 became physical. + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4] == "1,2"); + CHECK(components[2].empty()); + const auto &colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(colour.size() == 5); + CHECK(colour[4] == "#800080"); + CHECK(colour[2] == "#FFFFFF"); + CHECK(pub.mixed_slot_relocations.at(2) == 4); + bool relocated_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 2 -> slot 4") != std::string::npos && + message.find("mixed filament") != std::string::npos) + relocated_reported = true; + CHECK(relocated_reported); + CHECK(pub.skipped_keys.empty()); + } + + // [R, R, M] plus a payload mix authored at slot 3: the receiver mix (displaced to slot 3) sits + // ahead of the appended payload mix (slot 4), preserving physical-first tail ordering. + { + PresetBundle bundle; + make_receiver(bundle, "1,2", "0.5,0.5"); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#000000", "#0000FF", "#800080" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + // Authored slot 3 is a payload mixed definition blending slots 1 and 3. + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "", "1,3" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "", "0.6,0.4" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient")->values = { 0, 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values = { "", "", "", "0.9,0.1" }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values = { "", "", "", "0,0.1|1,0.9" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = { 0, 0, 0, 1 }; + + PublishedMaterialEntry mix; + mix.slot = 3; + mix.filament_type = "PLA"; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#000000"), + make_real_entry(2, "#0000FF"), mix }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK_FALSE(is_mixed[2]); + CHECK(is_mixed[3]); // receiver's mix, displaced to slot 3 first + CHECK(is_mixed[4]); // payload's mix, appended after + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[3] == "1,2"); + CHECK(components[4] == "1,3"); + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(2) == 3); + CHECK(pub.mixed_slot_relocations.at(3) == 4); + CHECK(pub.skipped_keys.empty()); + } +} + +// Multiple receiver mixed slots interleaved with multiple incoming physical slots all rebalance +// onto consecutive tail slots in index order (no cascade/overlap). +TEST_CASE("Published 3MF rebalances several receiver mixed slots past the physical region", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3, "#123456"); + bundle.printers.get_edited_preset().config.opt<ConfigOptionBool>("single_extruder_multi_material", true)->value = true; + // Receiver: slot 1 and slot 2 are mixed. + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[1] = 1; + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[1] = "1,2"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] = "1,3"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[1] = "0.5,0.5"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] = "0.4,0.6"; + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00AA00", "#0000FF" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99" }; + + auto make_real_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#00AA00"), make_real_entry(2, "#0000FF") }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 3; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[3]); + CHECK(is_mixed[4]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[3] == "1,2"); + CHECK(components[4] == "1,3"); + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(1) == 3); + CHECK(pub.mixed_slot_relocations.at(2) == 4); + CHECK(pub.skipped_keys.empty()); +} + +// The receiver's printer gates how many PHYSICAL filament slots a published 3MF may add: a +// non-SEMM tool-changer feeds filament N from nozzle N, so a published slot past the nozzle +// count cannot become a physical filament. It becomes an empty mixed-filament placeholder +// instead - a virtual tail slot the GUI flags (broken mix) and the user fills with components +// from their own filaments. SEMM receivers keep the ungated behaviour. +TEST_CASE("Published 3MF turns a surplus slot past the printer's filament capacity into an empty mixed placeholder", "[Preset][Bundle][Published]") +{ + // An author project with <num_author_slots> physical slots, no mixed ones. + auto make_file_config = [](size_t num_author_slots) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + std::vector<double> diameters(num_author_slots, 1.75); + std::vector<int> self_index; + std::vector<std::string> variants; + for (size_t i = 0; i < num_author_slots; ++i) { + self_index.push_back(int(i + 1)); + variants.emplace_back("Direct Drive Standard"); + } + config.opt<ConfigOptionFloats>("filament_diameter")->values = diameters; + config.opt<ConfigOptionInts>("filament_self_index")->values = self_index; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = variants; + config.opt<ConfigOptionStrings>("filament_colour")->values.resize(num_author_slots, "#808080"); + config.opt<ConfigOptionStrings>("filament_type")->values.assign(num_author_slots, "PLA"); + config.opt<ConfigOptionStrings>("filament_vendor")->values.assign(num_author_slots, "Generic"); + config.opt<ConfigOptionStrings>("filament_ids")->values.resize(num_author_slots); + return config; + }; + // A non-SEMM receiver with <nozzles> nozzles running <slots> copies of one preset. + auto make_receiver = [](PresetBundle &bundle, size_t nozzles, size_t slots) { + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(slots, "My PLA"); + bundle.set_num_filaments(slots, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt<ConfigOptionBool>("single_extruder_multi_material", true)->value = false; + printer_config.opt<ConfigOptionFloats>("nozzle_diameter", true)->values.assign(nozzles, 0.4); + }; + auto make_physical_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + + // The reported case: an author publishes with a filament on slot 5; the receiver is a + // 4-filament tool-changer. The receiver keeps its four physical slots and the surplus + // material lands as an empty mixed placeholder at the tail. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + const std::vector<std::string> receiver_colours = + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew by exactly one virtual slot, not a fifth physical one. + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + // The placeholder carries no definition: the GUI's integrity check flags it and + // blocks slicing until the user assigns components. + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4].empty()); + // The four physical slots kept their meaning and colours. + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values.begin())); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[3] == "My PLA"); + // The published colour seeds the placeholder's swatch. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[4] == "#ABCDEF"); + // The conversion is surfaced through the post-import notice. + bool placeholder_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("unassigned mixed filament") != std::string::npos) + placeholder_reported = true; + CHECK(placeholder_reported); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.mixed_slot_relocations.empty()); + } + + // Two surplus slots (5 and 6) become two consecutive empty placeholders. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF"), make_physical_entry(5, "#F0F0F0") }; + DynamicPrintConfig config = make_file_config(6); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 6); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 6); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 6); + CHECK(components[4].empty()); + CHECK(components[5].empty()); + const auto &colour = bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + REQUIRE(colour.size() == 6); + CHECK(colour[4] == "#ABCDEF"); + CHECK(colour[5] == "#F0F0F0"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.mixed_slot_relocations.empty()); + } + + // A surplus slot past both the receiver's list and the capacity packs onto the next free + // tail slot (never max(authored, next_free), which would grow filler physical slots past + // the capacity), and the relocation is recorded for the model-reference remapping. + { + PresetBundle bundle; + make_receiver(bundle, 2, 2); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(3, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(4); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2].empty()); + REQUIRE(pub.mixed_slot_relocations.size() == 1); + CHECK(pub.mixed_slot_relocations.at(3) == 2); + bool relocation_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 3 -> slot 2") != std::string::npos && + message.find("unassigned mixed filament") != std::string::npos) + relocation_reported = true; + CHECK(relocation_reported); + CHECK(pub.skipped_keys.empty()); + } + + // A Full Publish entry past the capacity becomes a placeholder too: no standalone + // detached copy is created for a material that got no physical slot. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedMaterialEntry entry = make_physical_entry(4, "#ABCDEF"); + entry.full = true; + entry.preset_name = "Generic PLA @System"; + entry.filament_id = "GFL99"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK(is_mixed[4]); + // No detached copy under the stripped name or its uniquified forms. + CHECK(bundle.filaments.find_preset("Generic PLA", false, true) == nullptr); + CHECK(bundle.filaments.find_preset("Generic PLA (Published)", false, true) == nullptr); + CHECK(pub.skipped_keys.empty()); + } + + // A SEMM receiver (the default printer preset) sizes its slot list by hand: the published + // slot past the nozzle count still grows physically, as before the capacity gate. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(4, "#123456"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[4] == "#ABCDEF"); + CHECK(pub.skipped_keys.empty()); + } + + // A pre-existing oversized slot list is never shrunk: a published entry pointing at one + // of its slots is applied positionally even though the list exceeds the nozzle count. + { + PresetBundle bundle; + make_receiver(bundle, 4, 5); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + // The published colour reached the addressed slot's (shared) preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == + std::vector<std::string>{ "#ABCDEF" }); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[4] == "#ABCDEF"); + CHECK(pub.skipped_keys.empty()); + } + + // On a single-physical-slot receiver an empty mix could never be edited (the sidebar's + // mixed section needs two physical filaments), so the surplus entry is dropped and + // reported instead of becoming an unfixable placeholder. + { + PresetBundle bundle; + make_receiver(bundle, 1, 1); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(1, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(2); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 1); + CHECK_FALSE(is_mixed[0]); + REQUIRE(pub.skipped_keys.size() == 1); + CHECK(pub.skipped_keys.front().find("printer supports only 1") != std::string::npos); + } + + // A payload mixed definition is exempt from the capacity gate: mixes are virtual slots + // that consume no nozzle, so a published mix past the nozzle count still lands. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedMaterialEntry mix; + mix.slot = 4; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(5); + config.opt<ConfigOptionBools>("filament_is_mixed")->values.assign(5, 0); + config.opt<ConfigOptionStrings>("filament_mixed_components")->values.assign(5, ""); + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values.assign(5, ""); + config.opt<ConfigOptionBools>("filament_is_mixed")->values[4] = 1; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values[4] = "1,2"; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[4] = "0.6,0.4"; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK(is_mixed[4]); + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4] == "1,2"); + const auto &ratios = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 5); + CHECK(ratios[4] == "0.6,0.4"); + CHECK(pub.skipped_keys.empty()); + } +} + +// A single-extruder receiver collapses the author's per-extruder printer slots onto its single +// slot: the first serialized variant of a base key is applied, the remaining variants of that +// base key are reported as skipped. +TEST_CASE("Published 3MF collapses a multi-extruder publish onto a single-extruder receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + // Author has two extruders. + config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.6, 0.9 }; + config.opt<ConfigOptionFloats>("retraction_speed")->values = { 30.0, 40.0 }; + Preset::normalize(config); + return config; + }; + + // Both extruders published: the first serialized variant (#0, left) lands on the receiver's + // single slot; the second variant (#1) is reported as skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8 }; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_speed")->values = { 25.0 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1", "retraction_speed#0", "retraction_speed#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.6 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_speed")->values, { 30.0 }); + CHECK(contains_key(pub.skipped_keys, "retraction_length#1")); + CHECK(contains_key(pub.skipped_keys, "retraction_speed#1")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_length#0")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_speed#0")); + } + + // Only the second extruder published: the single-extruder receiver still applies it (the + // author's "right" is the only serialized slot) and reports nothing skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.9 }); + CHECK(pub.skipped_keys.empty()); + } +} + +// A multi-extruder "similar setup" receiver overrides each published extruder slot element-wise +// (no collapsing): each '#N' variant applies to the matching receiver slot, out-of-range ones are +// reported as skipped. +TEST_CASE("Published 3MF overrides each extruder slot on a similar multi-extruder receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00" }; + // Author has two extruders. + config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.6, 0.9 }; + Preset::normalize(config); + return config; + }; + + // Receiver with two extruders: both published slots override element-wise. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8, 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.6, 0.9 }); + CHECK(pub.skipped_keys.empty()); + } + + // Receiver with three extruders: slots 0 and 1 override, slot 2 keeps its own value. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values = { 0.8, 0.8, 0.7 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("retraction_length")->values, { 0.6, 0.9, 0.7 }); + CHECK(pub.skipped_keys.empty()); + } +} + // The nozzle-count top-up in update_multi_material_filament_presets() grows filament_presets on // its own, so a physical count derived from that list reports a slot no per-filament array has // yet. That is what made the extruder-count handler conclude there was nothing to add and leave @@ -890,3 +4244,953 @@ TEST_CASE("Sizing down to the nozzle count plus mixes is what eats the mixed tai CHECK(bundle.project_config.option<ConfigOptionStrings>("filament_mixed_components")->values[5] == "1,2"); } } + +// After a published-3MF import relocated mixed-filament definitions, the freshly loaded +// model's slot references must follow: object/volume "extruder" configs and multi-material +// color-painting states (which store the one-based slot number) are re-pointed to where each +// definition landed; everything else keeps its state. +TEST_CASE("remap_model_filament_slots repoints extruder configs and color painting", "[Preset][Bundle][Published]") +{ + auto make_model = [] { + Model model; + ModelObject *object_a = model.add_object(); + object_a->name = "relocated mix"; + ModelVolume *vol_a = object_a->add_volume(make_cube(10., 10., 10.)); + vol_a->config.set_key_value("extruder", new ConfigOptionInt(5)); // author slot 5 (0-based 4) + // Author painted one facet with the mix (slot 5) and another with a physical (slot 2). + { + TriangleSelector selector(vol_a->mesh()); + selector.set_facet(0, EnforcerBlockerType(5)); + selector.set_facet(1, EnforcerBlockerType(2)); + vol_a->mmu_segmentation_facets.set_data(selector.serialize()); + } + // A second object that does not reference the relocated slot at all. Painted with a + // real, non-relocated state (NONE is never serialized: an unsplit triangle without a + // state is the unpainted default and is skipped by TriangleSelector::serialize()). + ModelObject *object_b = model.add_object(); + object_b->name = "untouched"; + object_b->config.set_key_value("extruder", new ConfigOptionInt(1)); + ModelVolume *vol_b = object_b->add_volume(make_cube(5., 5., 5.)); + vol_b->config.set_key_value("extruder", new ConfigOptionInt(2)); + { + TriangleSelector selector(vol_b->mesh()); + selector.set_facet(0, EnforcerBlockerType(2)); + vol_b->mmu_segmentation_facets.set_data(selector.serialize()); + } + return model; + }; + + const std::map<int, int> relocations = {{4, 5}}; + + Model model = make_model(); + Slic3r::remap_model_filament_slots(model, relocations); + + const ModelVolume *vol_a = model.objects[0]->volumes.front(); + CHECK(vol_a->config.extruder() == 6); // author slot 5 -> final slot 6 + // Painted states follow: the mix facet moved 5 -> 6, the physical one is untouched. + REQUIRE(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(6))); + REQUIRE_FALSE(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(5))); + CHECK(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(2))); + + const ModelVolume *vol_b = model.objects[1]->volumes.front(); + CHECK(vol_b->config.extruder() == 2); + // The untouched volume's paint (a non-relocated state) survives as-is. + CHECK(TriangleSelector::has_facets(vol_b->mmu_segmentation_facets.get_data(), EnforcerBlockerType(2))); + + // The mapping is applied simultaneously: each entry reads the original slot number, so + // relocating onto another relocated-from slot number must not chase chains. With the + // 0-based relocations {3->4, 4->6} the 1-based config map is {4->5, 5->7}: a volume on + // 1-based slot 4 lands on 5 and does NOT continue to 7. + Model chained = make_model(); + chained.objects[0]->volumes.front()->config.set_key_value("extruder", new ConfigOptionInt(4)); + Slic3r::remap_model_filament_slots(chained, std::map<int, int>{{3, 4}, {4, 6}}); + CHECK(chained.objects[0]->volumes.front()->config.extruder() == 5); + // The chained model's paint follows its own single-step mapping: painted state 5 -> 7, + // and nothing lands back on 5. + CHECK(TriangleSelector::has_facets(chained.objects[0]->volumes.front()->mmu_segmentation_facets.get_data(), + EnforcerBlockerType(7))); + CHECK_FALSE(TriangleSelector::has_facets(chained.objects[0]->volumes.front()->mmu_segmentation_facets.get_data(), + EnforcerBlockerType(5))); +} + +// The slot ceiling (EnforcerBlockerType::ExtruderMax) is what the color-painting encoding can +// address, so a mixed filament that does not fit must be dropped and reported instead of being +// forced onto one of the receiver's physical filaments. +TEST_CASE("Published 3MF drops a mixed filament that does not fit the slot limit and reports it", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + // A receiver already at the format's slot ceiling. + bundle.set_num_filaments(unsigned(EnforcerBlockerType::ExtruderMax), "#123456"); + const std::vector<std::string> receiver_colours = + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.slot = int(EnforcerBlockerType::ExtruderMax) + 6; // beyond the ceiling + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Nothing grew and no slot became a virtual mix. + REQUIRE(bundle.filament_presets.size() == size_t(EnforcerBlockerType::ExtruderMax)); + for (size_t i = 0; i < bundle.filament_presets.size(); ++i) + CHECK_FALSE(bundle.is_mixed_filament(i)); + // The receiver's colours were not touched. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values == receiver_colours); + // The mix was reported instead of being applied. + REQUIRE(contains_key(pub.skipped_keys, "material:PLA (mixed filament definition: filament slot limit reached)")); + CHECK(pub.material_replacements.empty()); +} + +// The publish dialog can only produce definitions whose components reference existing physical +// slots, so a payload whose components point at slots that do not exist (or at another mixed +// slot) or that carries fewer than two components is broken. The load reports it through the +// same channel as every other rejected input instead of shipping a mix the GUI integrity check +// would only flag later. +TEST_CASE("Published 3MF rejects a mixed filament definition with impossible components", "[Preset][Bundle][Published]") +{ + // A two-physical-plus-one-mix author file; the definition under test sits on slot 2. + auto make_file_config = [](const std::string &components) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", components }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + return config; + }; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + for (const char *components : { "1,4", "1,3", "1" }) { + // The claimed components: "1,4" names a slot past the final count, "1,3" names the mix + // slot itself (1-based), "1" is not enough components to blend. + INFO("components = " << components); + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(components); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition was rejected, not applied: the grown slot is finalized as an empty + // mixed placeholder instead of keeping the seeded preset and masquerading as a real + // filament. + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.is_mixed_filament(2)); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2].empty()); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2].empty()); + // Reported through the shared rejection channel. + if (std::string(components) == "1") + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); + else + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: components reference missing slots)")); + // The slot change was surfaced like the other slot adaptations. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0].find("slot 2: mixed filament definition could not be imported") != std::string::npos); + // The blended colour was not written into the (shared) slot preset either. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == + std::vector<std::string>{ "#123456" }); + } +} + +// The reported scenario: an author publishes two mixed filaments whose components are +// full-published physical slots; the receiver is a smaller tool-changer, so some of those +// component slots become empty mixed placeholders. A mix whose component turned into a +// placeholder can never be valid (mixes cannot reference mixes): it is rejected, and its +// grown slot must be finalized as an empty mixed placeholder too - not keep the seeded +// preset and masquerade as a real filament carrying the mix identity. +TEST_CASE("Published 3MF finalizes a mixed filament rejected over a placeholder component as an empty placeholder", "[Preset][Bundle][Published]") +{ + // An author project: six physical slots plus two tail mixes, the second referencing the + // sixth physical slot (H2C-style: slot 7 = 1+2, slot 8 = 2+6). + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = std::vector<double>(8, 1.75); + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4, 5, 6, 7, 8 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = std::vector<std::string>(8, "Direct Drive Standard"); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00", + "#FF00FF", "#00FFFF", "#800080", "#804000" }; + config.opt<ConfigOptionStrings>("filament_type")->values.assign(8, "PLA"); + config.opt<ConfigOptionStrings>("filament_vendor")->values.assign(8, "Generic"); + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 0, 0, 0, 0, 1, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "", "", "", "", "1,2", "2,6" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "", "", "", "", "0.6,0.4", "0.5,0.5" }; + // The export always serializes all seven masked mixed arrays, not just the ones in + // use; the unused gradient arrays ride along as defaults. + config.opt<ConfigOptionBools>("filament_mixed_gradient")->values = { 0, 0, 0, 0, 0, 0, 0, 0 }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values.assign(8, ""); + config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values.assign(8, ""); + config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = { 0, 0, 0, 0, 0, 0, 0, 0 }; + return config; + }; + // A non-SEMM receiver with four nozzles and four slots (tool-changer style). + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(4, "My PLA"); + bundle.set_num_filaments(4, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt<ConfigOptionBool>("single_extruder_multi_material", true)->value = false; + printer_config.opt<ConfigOptionFloats>("nozzle_diameter", true)->values.assign(4, 0.4); + + auto make_full_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.full = true; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + auto make_mix_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + return entry; + }; + + // The dialog's emit order: the full-published physical slots (1, 2, 5, 6) and both mixes. + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_entry(0), make_full_entry(1), make_full_entry(4), make_full_entry(5), + make_mix_entry(6, "#800080"), make_mix_entry(7, "#804000") }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew to the author's slot count, all virtual territory at the tail. + REQUIRE(bundle.filament_presets.size() == 8); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 8); + // Slots 0-3 stayed physical; authored slots 5 and 6 (0-based 4 and 5) became capacity + // placeholders. + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[4].empty()); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[5].empty()); + // The first mix applied onto its uncontended tail slot. + CHECK(is_mixed[6]); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[6] == "1,2"); + // The second mix was rejected - its second component (authored slot 6) turned into a + // placeholder - and its slot was finalized as an empty mixed placeholder instead of + // keeping the seeded preset as a phantom real filament. + CHECK(is_mixed[7]); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[7].empty()); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[7].empty()); + REQUIRE(pub.skipped_keys.size() == 1); + CHECK(pub.skipped_keys[0] == "material:PLA (mixed filament definition: components reference missing slots)"); + // Two Full Publish detach lines (slots 0-1), two capacity placeholder lines (slots 4-5), + // and the rejected mix's finalization line (slot 7). + REQUIRE(pub.material_replacements.size() == 5); + CHECK(std::any_of(pub.material_replacements.begin(), pub.material_replacements.end(), + [](const std::string &line) { + return line.find("slot 7: mixed filament definition could not be imported") != std::string::npos; + })); +} + +// The receiver must not overflow its physical capacity when it grows slots to reach a published +// mixed definition: an unpublished mixed slot that lands as a gap past the nozzle count becomes +// an empty mixed placeholder, not a physical filament. An author with six physical slots (0-5) +// and two tail mixes (slots 6 and 7) publishes only 0-5 and 7; the receiver has four nozzles. +// Slots 4 and 5 become surplus placeholders, slot 7 keeps its authored mix position, and the +// unpublished gap slot 6 is finalized as a virtual placeholder - never a fifth physical slot. +TEST_CASE("Published 3MF turns an unpublished gap slot past the printer's capacity into an empty mixed placeholder", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(4, "My PLA"); + bundle.set_num_filaments(4, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt<ConfigOptionBool>("single_extruder_multi_material", true)->value = false; + printer_config.opt<ConfigOptionFloats>("nozzle_diameter", true)->values.assign(4, 0.4); + + // 8 authored slots: 0-5 physical, 6 unpublished mixed, 7 published mixed. The payload masks + // the unpublished slot's mixed flag (filter_published_config), so slot 6 reads as physical. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = std::vector<double>(8, 1.75); + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4, 5, 6, 7, 8 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = std::vector<std::string>(8, "Direct Drive Standard"); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00", + "#FF00FF", "#00FFFF", "#800080", "#804000" }; + config.opt<ConfigOptionStrings>("filament_type")->values.assign(8, "PLA"); + config.opt<ConfigOptionStrings>("filament_vendor")->values.assign(8, "Generic"); + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 0, 0, 0, 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "", "", "", "", "", "1,2" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "", "", "", "", "", "0.5,0.5" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient")->values = std::vector<unsigned char>(8, 0); + config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values.assign(8, ""); + config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values.assign(8, ""); + config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = std::vector<unsigned char>(8, 0); + + auto make_full_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.full = true; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + auto make_mix_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_entry(0), make_full_entry(1), make_full_entry(2), make_full_entry(3), + make_full_entry(4), make_full_entry(5), make_mix_entry(7, "#804000") }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 8); + const auto &is_mixed = bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 8); + // Slots 0-3 stay physical; 4 and 5 are surplus placeholders; 6 is the unpublished gap; 7 is + // the published mix. All four tail slots are virtual. + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(is_mixed[6]); + CHECK(is_mixed[7]); + // Surplus physical slots (4,5) and the unpublished gap (6) carry no definition; the + // published mix on slot 7 keeps its own. + const auto &components = bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values; + REQUIRE(components.size() == 8); + CHECK(components[4].empty()); + CHECK(components[5].empty()); + CHECK(components[6].empty()); + CHECK(components[7] == "1,2"); + // Exactly four physical slots remain (never a fifth past the nozzle count). + size_t physical_count = 0; + for (bool mixed : is_mixed) + if (!mixed) + ++physical_count; + CHECK(physical_count == 4); + // The unpublished gap's conversion is surfaced through the post-import notice. + bool gap_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 6: unassigned mixed filament") != std::string::npos) + gap_reported = true; + CHECK(gap_reported); + CHECK(pub.skipped_keys.empty()); +} + +// The relocation shifts cells inside the file's per-slot mixed arrays; a payload too short to +// actually carry the definition degrades to empty cells, which the definition validation then +// reports - an empty mix must not ship as a virtual slot. +TEST_CASE("Published 3MF reports a relocated mixed filament whose payload cells are missing", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector<std::string> receiver_colours = + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 3; // authored slot 3; the receiver's five real slots occupy 0-4 + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + // The file's mixed arrays only cover its single physical slot: the definition data for + // slot 3 does not exist in the payload. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic" }; + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The mix was relocated past the physical territory... + REQUIRE(pub.mixed_slot_relocations.size() == 1); + CHECK(pub.mixed_slot_relocations.at(3) == 5); + REQUIRE(pub.material_replacements.size() == 2); + CHECK(pub.material_replacements[0].find("slot 3 -> slot 5") != std::string::npos); + // ...and the receiver grew to hold the destination slot, but the definition itself was + // rejected: the relocated cells degraded to empty defaults, the slot was finalized as an + // empty mixed placeholder (not a real filament), and both facts were reported. + REQUIRE(bundle.filament_presets.size() == 6); + CHECK(bundle.is_mixed_filament(5)); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[5].empty()); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[5].empty()); + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); + CHECK(pub.material_replacements[1].find("slot 5: mixed filament definition could not be imported") != std::string::npos); + // The five real slots kept their colours. + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values.begin())); +} + +// A grown published slot always repeats the receiver's last preset; it can only move to the +// published material's identity when a replacement is warranted (an aliased slot that would +// otherwise leak keys, or a type mismatch). The tier priority candidate_score uses is locked +// here: exact preset name > bare name > exact setting_id > exact filament_id > vendor+type, +// with the lower tiers reported as a substitute. +TEST_CASE("Published 3MF re-points an aliased grown slot's material by identity tiers", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionStrings>("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + PublishedMaterialEntry entry; + entry.slot = 2; + entry.filament_type = "PLA"; + + SECTION("an exact preset name outranks the bare-name form") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &bare = add_inmemory_preset(bundle.filaments, "Authored PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + Preset &exact = add_inmemory_preset(bundle.filaments, "Authored PLA @Vendor"); + exact.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; + entry.keys = { "filament_retraction_length" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + // The aliased grown slot is re-pointed at the exact-name preset; the bare-name and the + // receiver's own preset lose. + CHECK(bundle.filament_presets[2] == "Authored PLA @Vendor"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Authored PLA @Vendor"); + } + + SECTION("a bare name outranks an exact setting_id") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &bare = add_inmemory_preset(bundle.filaments, "Authored PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + Preset &sid = add_inmemory_preset(bundle.filaments, "Bbb PLA"); + sid.config.opt_string("filament_type", 0u) = "PLA"; + sid.setting_id = "SID123"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name + entry.setting_id = "SID123"; + entry.keys = { "filament_retraction_length" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Authored PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Authored PLA"); + } + + SECTION("an exact setting_id outranks an exact filament_id") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &sid = add_inmemory_preset(bundle.filaments, "Bbb PLA"); + sid.config.opt_string("filament_type", 0u) = "PLA"; + sid.setting_id = "SID123"; + Preset &fid = add_inmemory_preset(bundle.filaments, "Ccc PLA"); + fid.config.opt_string("filament_type", 0u) = "PLA"; + fid.filament_id = "GFA00"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name + entry.setting_id = "SID123"; + entry.filament_id = "GFA00"; + entry.keys = { "filament_retraction_length" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Bbb PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Bbb PLA"); + } + + SECTION("a vendor+type match is reported as a substitute") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PETG"); + mine.config.opt_string("filament_type", 0u) = "PETG"; + Preset &exact_vendor = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + exact_vendor.config.opt_string("filament_type", 0u) = "PLA"; + exact_vendor.config.opt_string("filament_vendor", 0u) = "Generic"; + Preset &other_vendor = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + other_vendor.config.opt_string("filament_type", 0u) = "PLA"; + other_vendor.config.opt_string("filament_vendor", 0u) = "Other"; + bundle.filament_presets = { "My PETG" }; + + entry.filament_vendor = "Generic"; // no name or id identity: the family tiers decide + entry.publish_type = true; + entry.publish_type_value = "PLA"; // the grown slot seeds "My PETG" -> the gate reads a mismatch + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PETG"); + // The same-vendor PLA outranks the type-only candidate... + CHECK(bundle.filament_presets[2] == "Aaa PLA"); + // ...and since it is not an exact material match, the load says so. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PETG -> Aaa PLA (substitute)"); + } +} + +// Structural keys (identity links like filament_ids / inherits / printer_settings_id) are +// never applied onto the receiver and never reported: a hand-crafted file listing them must +// not trigger the "could not be applied" warning, while unknown keys still do. +TEST_CASE("Published 3MF silently ignores structural keys in published_keys", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt_float("layer_height") = 0.28; + Preset::normalize(config); + + PresetBundle bundle; + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + const std::vector<std::string> ids_before = + bundle.filaments.get_edited_preset().config.opt<ConfigOptionStrings>("filament_settings_id")->values; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "filament_ids", "inherits", "printer_settings_id", "layer_height", "not_a_setting" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The real setting applied... + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 1e-6)); + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + // ...the structural keys were neither applied nor reported... + CHECK_FALSE(contains_key(pub.skipped_keys, "filament_ids")); + CHECK_FALSE(contains_key(pub.skipped_keys, "inherits")); + CHECK_FALSE(contains_key(pub.skipped_keys, "printer_settings_id")); + CHECK(bundle.filaments.get_edited_preset().config.opt<ConfigOptionStrings>("filament_settings_id")->values == ids_before); + // ...while an unknown key still reports. + CHECK(contains_key(pub.skipped_keys, "not_a_setting")); +} + +// A whole-vector key requires the receiver's vector to have the same number of elements as the +// author's: pasting a 3-extruder list into a 2-extruder machine would overwrite the wrong +// elements, so the key is reported as skipped and the receiver keeps its own values. +TEST_CASE("Published 3MF skips a whole-vector key whose size does not match the receiver", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000" }; + config.opt_float("layer_height") = 0.28; + // Author's wiping matrix sized for three extruders. + config.set_key_value("wiping_volumes_extruders", new ConfigOptionFloats({ 10., 20., 30. })); + Preset::normalize(config); + + PresetBundle bundle; + // Receiver sized for two extruders. + bundle.prints.get_edited_preset().config.set_key_value("wiping_volumes_extruders", new ConfigOptionFloats({ 40., 50. })); + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "wiping_volumes_extruders", "layer_height" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.prints.get_edited_preset().config.opt<ConfigOptionFloats>("wiping_volumes_extruders")->values, + { 40., 50. }); + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); + // The matching scalar key still applied. + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 1e-6)); +} + +// The uniquify chain continues past the first suffix: with both "X" and "X (Published)" already +// present, the next imported copy of "X" lands as "X (Published 2)" and leaves the others alone. +TEST_CASE("Published 3MF uniquifies a second imported full material as (Published 2)", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.6 }; + Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + bare.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + Preset &pub1 = add_inmemory_preset(bundle.filaments, "Generic PLA (Published)"); + pub1.config.opt_string("filament_type", 0u) = "PLA"; + pub1.config.opt<ConfigOptionFloatsNullable>("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @Qidi Q2 0.4 nozzle"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA (Published 2)"); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published 2)", false, true) + ->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, + { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true) + ->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, + { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published)", false, true) + ->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, + { 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (Published 2)"); + CHECK(pub.skipped_keys.empty()); +} + +// A mixed filament's blended colour is a swatch for the project's colour strip only: it must +// never be written into the slot's (possibly shared) preset config, or every slot referencing +// that preset would turn into the blend colour. +TEST_CASE("Published 3MF never writes a mixed filament's blended colour into the slot's preset", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#123456" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3); + bundle.project_config.opt<ConfigOptionBools>("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values[2] = "0.5,0.5"; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt<ConfigOptionFloats>("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt<ConfigOptionInts>("filament_self_index")->values = { 1, 2, 3 }; + config.opt<ConfigOptionStrings>("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt<ConfigOptionStrings>("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt<ConfigOptionStrings>("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt<ConfigOptionStrings>("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt<ConfigOptionBools>("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_components")->values = { "", "", "1,2" }; + config.opt<ConfigOptionStrings>("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient")->values = { 0, 0, 1 }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + config.opt<ConfigOptionStrings>("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + config.opt<ConfigOptionBools>("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition applied like-for-like onto the virtual slot... + CHECK(bundle.filament_presets.size() == 3); + CHECK(bundle.is_mixed_filament(2)); + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_mixed_components")->values[2] == "1,2"); + // ...the blend colour landed in the project strip only... + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[2] == "#800080"); + // ...and the shared preset kept its own colour: slots 0 and 1 render unchanged. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == + std::vector<std::string>{ "#123456" }); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); +} + +// Duplicate entries for the same authored slot only occur in hand-crafted files (the dialog +// emits one entry per slot); the load's contract under that input is deterministic last-wins, +// not corruption. +TEST_CASE("Published 3MF applies duplicate entries for one slot last-wins", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt<ConfigOptionStrings>("filament_colour", true)->values = { "#000000" }; + bundle.filament_presets = { "My PLA" }; + + auto make_entry = [](const char *color) { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry("#AA0000"), make_entry("#BB0000") }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The second entry won both the project strip and the slot's preset. + CHECK(bundle.project_config.opt<ConfigOptionStrings>("filament_colour")->values[0] == "#BB0000"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt<ConfigOptionStrings>("filament_colour")->values == + std::vector<std::string>{ "#BB0000" }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true) + ->config.opt<ConfigOptionFloatsNullable>("filament_retraction_length")->values, + { 0.9 }); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); +} + +// normalize_filament_type maps "PLA High Speed" onto the canonical family "PLA" (a space- +// separated modifier is dropped) but leaves dash-separated composite types like "PA-CF" intact, +// and passes through unknown types and the empty string unchanged. +TEST_CASE("normalize_filament_type strips a space modifier but keeps dash types", "[Preset][Bundle][Published]") +{ + CHECK(normalize_filament_type("PLA High Speed") == "PLA"); + CHECK(normalize_filament_type("PA-CF") == "PA-CF"); + CHECK(normalize_filament_type("PETG-CF") == "PETG-CF"); + CHECK(normalize_filament_type("PLA") == "PLA"); + CHECK(normalize_filament_type("ABC") == "ABC"); + CHECK(normalize_filament_type("") == ""); +} + +// collect_dirty_settings_keys feeds the Publish dialog's pre-check: it must be the set union of +// the dirty options across the edited print, printer and filament presets. +TEST_CASE("collect_dirty_settings_keys unions the dirty settings from all three presets", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + // The edited preset is initialised as a copy of the selected (default) preset, so a single + // edit makes exactly that option dirty. deep_diff reports scalar keys by name but per-element + // vector keys as "key#<index>", so a vector edit surfaces as "key#0". + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.28; + bundle.filaments.get_edited_preset().config.opt<ConfigOptionStrings>("filament_type", true)->values = { "ABS" }; + bundle.printers.get_edited_preset().config.opt<ConfigOptionFloats>("nozzle_diameter", true)->values = { 0.6 }; + + const std::vector<std::string> dirty = collect_dirty_settings_keys(bundle); + for (const char *key : { "layer_height", "filament_type#0", "nozzle_diameter#0" }) + CHECK(contains_key(dirty, key)); +} + +// The publish denylist and the mixed-key list are single sources of truth for the import path: +// lock their members so a silent edit to either cannot drift away from the contract the import +// and export masks rely on. +TEST_CASE("Published 3MF denylist and mixed-key sets match the import/export contract", "[Preset][Bundle][Published]") +{ + const std::set<std::string>& structural = publish_structural_keys(); + // Structural / inheritance keys must never be applied onto a receiver's presets. + for (const char *key : { "printer_settings_id", "filament_settings_id", "print_settings_id", + "compatible_printers", "compatible_prints", "compatible_printers_condition", + "compatible_prints_condition", "default_filament_profile", "default_print_profile", + "inherits", "extruder_count", "printer_model", "filament_ids" }) + CHECK(structural.count(key) == 1); + // ...but a per-slot publishable material key is not structural. + CHECK(structural.count("filament_retraction_length") == 0); + CHECK(structural.count("filament_colour") == 0); + + const std::set<std::string>& mixed = publish_mixed_keys(); + CHECK(mixed == std::set<std::string>{ + "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }); + // Mixed keys are project-level arrays, not material-preset keys, so none is structural. + for (const std::string &key : mixed) + CHECK(structural.count(key) == 0); +} + +namespace { + +// data_dir() is a process-wide global that import_presets extracts into; scope it to the test. +struct ScopedDataDir +{ + std::string previous = data_dir(); + explicit ScopedDataDir(const fs::path &dir) { set_data_dir(dir.string()); } + ~ScopedDataDir() { set_data_dir(previous); } +}; + +std::string read_file(const fs::path &file) +{ + std::ifstream in(file.string(), std::ios::binary); + return std::string(std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>()); +} + +void write_zip(const fs::path &zip_file, const std::vector<std::pair<std::string, std::string>> &entries) +{ + mz_zip_archive zip; + mz_zip_zero_struct(&zip); + REQUIRE(open_zip_writer(&zip, zip_file.string())); + for (const auto &[name, content] : entries) + REQUIRE(mz_zip_writer_add_mem(&zip, name.c_str(), content.data(), content.size(), MZ_DEFAULT_COMPRESSION)); + REQUIRE(mz_zip_writer_finalize_archive(&zip)); + REQUIRE(close_zip_writer(&zip)); +} + +bool any_filename_contains(const fs::path &root, const std::string &needle) +{ + for (fs::recursive_directory_iterator it(root), end; it != end; ++it) + if (it->path().filename().string().find(needle) != std::string::npos) + return true; + return false; +} + +} // namespace + +TEST_CASE("Config import confines zip entries, preset names and bundle ids to the preset directory", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir temp_dir; + const fs::path data_root = temp_dir.path() / "datadir"; + const fs::path src_dir = temp_dir.path() / "src"; + fs::create_directories(src_dir); + ScopedDataDir scoped_data_dir(data_root); + + PresetBundle bundle; + AppConfig app_config; + const auto confirm = [](std::string const &) { return 1; }; + const auto import = [&](const fs::path &file) { + std::vector<std::string> files{file.string()}; + bundle.import_presets(files, confirm, ForwardCompatibilitySubstitutionRule::Disable, app_config); + return files; + }; + + const fs::path good_file = src_dir / "Good.json"; + write_print_preset(bundle.prints.default_preset().config, good_file, "Good"); + const std::string good_json = read_file(good_file); + + // Four levels up from where import_presets writes (<datadir>/user/default/temp) is temp_dir + // itself, so anything that escapes lands where the scan below can see it. + const std::string up = "../../../../"; + const std::string up_win = "..\\..\\..\\..\\"; + + SECTION("zip entry names with either separator are reduced to a basename") { + const fs::path zip = src_dir / "bundle.zip"; + write_zip(zip, {{up + "zip-escape.json", "{}"}, {up_win + "zip-escape.json", "{}"}, {"presets/Good.json", good_json}}); + import(zip); + CHECK(bundle.prints.find_preset("Good") != nullptr); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "zip-escape")); + } + + SECTION("a preset name that walks out of the preset directory is rejected") { + for (const std::string &name : {up + "name-escape", up_win + "name-escape"}) { + const fs::path file = src_dir / "escape.json"; + write_print_preset(bundle.prints.default_preset().config, file, name); + CHECK(import(file).empty()); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "name-escape")); + } + } + + SECTION("a bundle id that walks out of the bundle directory is rejected") { + const fs::path zip = src_dir / "bundle.zip"; + write_zip(zip, {{BUNDLE_STRUCTURE_JSON_NAME, "{\"id\": \"" + up + "bundle-escape\"}"}, {"Good.json", good_json}}); + CHECK(import(zip).empty()); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "bundle-escape")); + } +} diff --git a/tests/libslic3r/test_preset_setting_id.cpp b/tests/libslic3r/test_preset_setting_id.cpp index b0e340ead5..8347fa7089 100644 --- a/tests/libslic3r/test_preset_setting_id.cpp +++ b/tests/libslic3r/test_preset_setting_id.cpp @@ -5,10 +5,10 @@ using namespace Slic3r; // Golden vectors from the Python reference generate_preset_setting_id (defined in -// scripts/assign_vendor_setting_ids.py). The C++ generate_preset_setting_id() MUST stay -// byte-identical to it, otherwise app-side on-the-fly ids would diverge from the +// scripts/orca_id_tool.py). The C++ generate_preset_setting_id() MUST stay byte-identical +// to it, otherwise app-side on-the-fly ids would diverge from the // script-assigned ones in the profiles. Regenerate a vector with: -// python3 -c "from assign_vendor_setting_ids import generate_preset_setting_id as g; print(g('Afinia','filament','Afinia ABS @Afinia H400'))" +// python3 -c "import sys; sys.path.insert(0, 'scripts'); from orca_id_tool import generate_preset_setting_id as g; print(g('Afinia','filament','Afinia ABS @Afinia H400'))" TEST_CASE("preset setting_id matches the Python reference", "[Preset][setting_id]") { struct Vec { const char* vendor; const char* type; const char* name; const char* expected; }; const Vec vectors[] = { diff --git a/tests/libslic3r/test_utils.cpp b/tests/libslic3r/test_utils.cpp index c039069b2a..484438127c 100644 --- a/tests/libslic3r/test_utils.cpp +++ b/tests/libslic3r/test_utils.cpp @@ -2,6 +2,13 @@ #include "libslic3r/Utils.hpp" +#include "test_utils.hpp" + +#include <algorithm> +#include <cctype> +#include <fstream> +#include <string> + #ifndef _WIN32 #include <unistd.h> // getuid #endif @@ -52,3 +59,32 @@ TEST_CASE("per-user temp root is unchanged on Windows, isolated elsewhere", "[ut REQUIRE_THAT(root, Catch::Matchers::StartsWith(base + "/orcaslicer_")); #endif } + +TEST_CASE("copy_file reports the OS error when the destination cannot be written", "[utils]") { + ScopedTemporaryFile source(".txt"); + { + std::ofstream ofs(source.string(), std::ios::binary); + ofs << "orca"; + } + REQUIRE(boost::filesystem::exists(source.path())); + + // A directory that was never created, so the copy fails on every platform. + const boost::filesystem::path destination = source.path().parent_path() / "orca-missing-dir" / "copy.txt"; + REQUIRE_FALSE(boost::filesystem::exists(destination.parent_path())); + + std::string error_message; + REQUIRE(copy_file(source.string(), destination.string(), error_message) == FAIL_COPY_FILE); + REQUIRE_FALSE(error_message.empty()); + +#ifdef _WIN32 + // The Windows branch formats GetLastError() itself. Writing that as + // "Error: " + errCode adds an integer to a string literal, which indexes into the + // literal instead of appending and runs off its end for any code above 7. + const std::string prefix = "Error: "; + REQUIRE(error_message.rfind(prefix, 0) == 0); + + const std::string code = error_message.substr(prefix.size()); + REQUIRE_FALSE(code.empty()); + REQUIRE(std::all_of(code.begin(), code.end(), [](unsigned char c) { return std::isdigit(c) != 0; })); +#endif // _WIN32 +} diff --git a/tests/libslic3r/test_wipe_tower.cpp b/tests/libslic3r/test_wipe_tower.cpp new file mode 100644 index 0000000000..2987dce9da --- /dev/null +++ b/tests/libslic3r/test_wipe_tower.cpp @@ -0,0 +1,93 @@ +#include <catch2/catch_all.hpp> + +#include <cmath> + +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" + +using namespace Slic3r; +using Catch::Matchers::WithinAbs; + +// A Bambu P1S project that reproduced the off-plate brim: two PLAs priming 30 and 45 mm3 in +// separate adhesiveness categories on a 35 mm tower, 0.21 mm layers, 0.4 nozzle (0.5 mm lines), +// 150 % infill gap (0.75 mm line pitch), rib width 8, 16 mm tall. +static std::vector<WipeTower::PurgeEstimate> cube_purges(int first_category = 100) +{ + return {{30.f, first_category}, {45.f, 0}}; +} + +TEST_CASE("Cone base polygon bulges past the body box", "[WipeTower]") { + // Zero angle: plain body box. + const Polygon box = WipeTower2::cone_base_polygon(35., 20., 100., 0.); + CHECK(box.points.size() == 4); + CHECK(get_extents(box).size() == Point::new_scale(Vec2d(35., 20.))); + // A 25-degree cone on a 100 mm tower: base radius R = tan(12.5deg)*100 = 22.2 mm, + // which exceeds the body half-depth, so the footprint bulges to center +- R in y + // (support_scale keeps the x extent compressed near the body). + const Polygon base = WipeTower2::cone_base_polygon(35., 20., 100., 25.); + const BoundingBox bb = get_extents(base); + const double R = std::tan(25. / 2. * M_PI / 180.) * 100.; + CHECK_THAT(unscaled(bb.min.y()), WithinAbs(10. - R, 0.1)); + CHECK_THAT(unscaled(bb.max.y()), WithinAbs(10. + R, 0.1)); + // The footprint always contains the body box. + CHECK(diff(Polygons{box}, Polygons{base}).empty()); +} + +TEST_CASE("Type1 block-stack depth quantizes each purge to whole lines", "[WipeTower]") { + // A 0.5 mm line at 0.21 mm carries 0.0955 mm3 per mm, so across the 34 mm between the + // perimeters 30 mm3 is 10 lines and 45 mm3 is 14: 7.5 + 10.5 at the 0.75 mm pitch behind + // one perimeter width. The generated mesh of the project measured exactly this. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(cube_purges(), 35.f, 0.21f, 0.4f, 1.5f), WithinAbs(18.5f, 0.01f)); + // Sharing one category, a layer can never purge into every filament (one of them starts + // the layer), so the block is sized by its worst layer and the 10-line purge drops out. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(cube_purges(0), 35.f, 0.21f, 0.4f, 1.5f), WithinAbs(11.0f, 0.01f)); + CHECK_THAT(WipeTower::estimate_tower_blocks_depth({}, 35.f, 0.2f, 0.4f, 1.f), WithinAbs(0.f, 1e-6f)); + // A width narrower than two perimeter widths cannot hold purge lines. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth({{45.f, 0}}, 0.9f, 0.2f, 0.4f, 1.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("A nozzle change adds its ramming lines to the block", "[WipeTower]") { + // 10 mm of 1.75 mm filament (24.05 mm3) laid as 1.0 mm nozzle-change lines at 0.2 mm + // (0.1914 mm2 each) is 125.7 mm; across the 48.5 mm available that is 3 lines of 1.0 mm. + std::vector<WipeTower::PurgeEstimate> purges{{100.f, 0}, {100.f, 0}}; + const float without_change = WipeTower::estimate_tower_blocks_depth(purges, 50.f, 0.2f, 0.4f, 1.f); + purges.front().filament_change_length = 10.f; + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(purges, 50.f, 0.2f, 0.4f, 1.f) - without_change, WithinAbs(3.f, 1e-4f)); +} + +TEST_CASE("Rib tower footprint estimate covers the generated footprint", "[WipeTower]") { + // The generated first-layer wall bbox of the project measured 29.56 mm from the sliced + // G-code; the volume-only estimate said 23.585 mm. + const float side = WipeTower::estimate_rib_tower_bbox_side(cube_purges(), 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 16.f); + CHECK(side >= 29.56f); + CHECK(side <= 29.56f + 4.f); // without grossly over-reserving plate space + // Separate categories stack their blocks, so the footprint must not shrink when they differ. + CHECK(side >= WipeTower::estimate_rib_tower_bbox_side(cube_purges(0), 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 16.f)); + CHECK_THAT(WipeTower::estimate_rib_tower_bbox_side({}, 35.f, 0.2f, 0.4f, 1.f, 8.f, 0.f, 16.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("Rib footprint extends the ribs, not the body, below the stability minimum", "[WipeTower]") { + // A 10 mm body under a 90 mm print: the ribs stretch to the minimum depth's diagonal, and + // the rib width is capped at half the body, so the square grows to minimum + 5 / sqrt(2). + const float min_depth = WipeTower::get_limit_depth_by_height(90.f); + REQUIRE(min_depth > 10.f); + CHECK_THAT(WipeTower::rib_footprint_side(10.f, 10.f, 8.f, 0.f, 90.f), WithinAbs(min_depth + 5.f / std::sqrt(2.f), 1e-4f)); + // The extra rib length runs along the diagonal, so it shows as its projection on each axis. + const float plain = WipeTower::rib_footprint_side(30.f, 30.f, 8.f, 0.f, 5.f); + CHECK_THAT(plain, WithinAbs(30.f + 8.f / std::sqrt(2.f), 1e-4f)); + CHECK_THAT(WipeTower::rib_footprint_side(30.f, 30.f, 8.f, 4.f, 5.f) - plain, WithinAbs(4.f / std::sqrt(2.f), 1e-4f)); + // A negative extra length cannot pull the ribs inside the diagonal. + CHECK_THAT(WipeTower::rib_footprint_side(30.f, 30.f, 8.f, -4.f, 5.f), WithinAbs(plain, 1e-4f)); + CHECK_THAT(WipeTower::rib_footprint_side(0.f, 30.f, 8.f, 0.f, 5.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("Brim width estimate matches each generator's loop quantization", "[WipeTower]") { + // 3 mm configured, 0.4 nozzle, 0.2 first layer: 0.4571 mm spacing, 7 loops. WipeTower2 + // prints and reports the 7 loops; WipeTower reports half a spacing of line width on top. + const float spacing = 0.5f - 0.2f * float(1. - M_PI_4); + CHECK_THAT(WipeTower::estimate_brim_real_width(3.f, 0.4f, 0.2f, true), WithinAbs(7.f * spacing, 1e-4f)); + CHECK_THAT(WipeTower::estimate_brim_real_width(3.f, 0.4f, 0.2f, false), WithinAbs(7.5f * spacing, 1e-4f)); + CHECK_THAT(WipeTower::estimate_brim_real_width(0.f, 0.4f, 0.2f, true), WithinAbs(0.f, 1e-6f)); +} diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp new file mode 100644 index 0000000000..20644200f3 --- /dev/null +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -0,0 +1,351 @@ +#include <catch2/catch_all.hpp> + +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "libslic3r/PrintConfig.hpp" + +#include <cmath> +#include <numeric> +#include <string> + +using namespace Slic3r; +using Catch::Matchers::WithinAbs; + +// Rectangle wall, one nozzle, 100 mm3 prime volume on a 50 mm wide tower at 0.2 mm layers: one +// purge is 10 mm of depth. The flush matrix is off here; the shipped-default case covers it. +// Built as PresetBundle::full_config builds the GUI's: apply() creates each enum as a +// ConfigOptionEnumGeneric, where full_print_config() would clone the static defaults' +// ConfigOptionEnum<T>. The estimate has to read either. +static DynamicPrintConfig preset_shaped_defaults() +{ + DynamicPrintConfig config; + config.apply(FullPrintConfig::defaults()); + return config; +} + +static DynamicPrintConfig make_config(const char *wall_type = "rectangle") +{ + DynamicPrintConfig config = preset_shaped_defaults(); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(50.)); + config.set_key_value("prime_volume", new ConfigOptionFloat(100.)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({100.})); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({0})); + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(100.)); + config.set_key_value("wipe_tower_extra_spacing", new ConfigOptionPercent(100.)); + config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(3.)); + config.set_deserialize_strict("wipe_tower_wall_type", wall_type); + config.set_key_value("wipe_tower_rib_width", new ConfigOptionFloat(8.)); + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4})); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.2)); + config.set_deserialize_strict("timelapse_type", "0"); + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); + config.set_key_value("raft_layers", new ConfigOptionInt(0)); + config.set_key_value("purge_in_prime_tower", new ConfigOptionBool(false)); + config.set_key_value("single_extruder_multi_material", new ConfigOptionBool(false)); + return config; +} + +static std::vector<unsigned int> filaments(size_t count) +{ + std::vector<unsigned int> ids(count); + std::iota(ids.begin(), ids.end(), 0u); + return ids; +} + +// The first `count` filaments on the given planner; Type2 unless a case says otherwise. +static WipeTowerFootprint estimate(const ConfigBase &config, size_t count, double layer_height, double height, WipeTowerType type = WipeTowerType::Type2) +{ + return estimate_wipe_tower_footprint(config, type, filaments(count), layer_height, height); +} + +// What both planners print for a 3 mm brim at 0.4 nozzle and 0.2 first layer (0.4571 mm loops). +static double printed_brim(double configured, WipeTowerType type) +{ + return WipeTower::estimate_brim_real_width(float(configured), 0.4f, 0.2f, type == WipeTowerType::Type2); +} + +TEST_CASE("A rectangle wall tower is sized by the purge volume", "[WipeTowerEstimate]") { + const DynamicPrintConfig config = make_config(); + // Three filaments purge twice per layer; a 5 mm object keeps the stability floor at 5 mm. + const WipeTowerFootprint fp = estimate(config, 3, 0.2, 5.); + CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); + CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); + CHECK_THAT(fp.height, WithinAbs(5., 1e-9)); + CHECK_THAT(fp.brim_width, WithinAbs(printed_brim(3., WipeTowerType::Type2), 1e-6)); + // Thinner layers need more depth for the same volume. + CHECK_THAT(estimate(config, 3, 0.1, 5.).depth, WithinAbs(40., 1e-9)); +} + +TEST_CASE("Each planner spaces its purge lines by its own option", "[WipeTowerEstimate]") { + // Type2 reads wipe_tower_extra_spacing and Type1 prime_tower_infill_gap; neither sees the + // other's key. Type2's extra flow cancels out of its depth. + DynamicPrintConfig config = make_config(); + config.set_key_value("wipe_tower_extra_flow", new ConfigOptionPercent(250.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(20., 1e-9)); + config.set_key_value("wipe_tower_extra_spacing", new ConfigOptionPercent(150.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); + const double type1_spaced = estimate(config, 3, 0.2, 5., WipeTowerType::Type1).depth; + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); + // Type1 stacks whole lines behind one 0.5 mm perimeter width, so only the stack scales. + CHECK_THAT(estimate(config, 3, 0.2, 5., WipeTowerType::Type1).depth - 0.5, WithinAbs(1.5 * (type1_spaced - 0.5), 1e-6)); +} + +TEST_CASE("Type1 sizes the tower from each filament's own prime volume", "[WipeTowerEstimate]") { + // The Bambu P1S project of the WipeTower cases: 30 and 45 mm3 in two categories on a 35 mm + // tower at 0.21 mm, 150 % gap, is 18.5 mm of stacked blocks (11 mm sharing one category). + DynamicPrintConfig config = make_config(); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(35.)); + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.21)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({30., 45.})); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({100, 0})); + const std::vector<WipeTower::PurgeEstimate> purges{{30.f, 100}, {45.f, 0}}; + const double blocks = WipeTower::estimate_tower_blocks_depth(purges, 35.f, 0.21f, 0.4f, 1.5f); + REQUIRE_THAT(blocks, WithinAbs(18.5, 0.01)); + CHECK_THAT(estimate(config, 2, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(blocks, 1e-4)); + // The ids pick the volumes, so their order does not matter and a lone filament has no purge. + CHECK_THAT(estimate_wipe_tower_footprint(config, WipeTowerType::Type1, {1, 0}, 0.21, 5.).depth, WithinAbs(blocks, 1e-4)); + CHECK_THAT(estimate(config, 1, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(0., 1e-9)); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({0, 0})); + CHECK_THAT(estimate(config, 2, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(11., 0.01)); + // A rib wall squares the same stack. + config.set_deserialize_strict("wipe_tower_wall_type", "rib"); + const WipeTowerFootprint rib = estimate(config, 2, 0.21, 5., WipeTowerType::Type1); + CHECK_THAT(rib.width, WithinAbs(rib.depth, 1e-9)); + CHECK_THAT(rib.depth, WithinAbs(WipeTower::estimate_rib_tower_bbox_side({{30.f, 0}, {45.f, 0}}, 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 5.f), 1e-4)); +} + +TEST_CASE("A second nozzle adds the ramming of one nozzle change per layer", "[WipeTowerEstimate]") { + // Two filaments on two nozzles: the tool order crosses once per layer, and Type1 rams 10 mm + // of filament as three 1.0 mm nozzle-change lines (see the WipeTower case). + DynamicPrintConfig config = make_config(); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + config.set_key_value("filament_change_length", new ConfigOptionFloats({10., 10.})); + config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); + config.set_key_value("filament_map", new ConfigOptionInts({1, 1})); + const double same_nozzle = estimate(config, 2, 0.2, 5., WipeTowerType::Type1).depth; + config.set_key_value("filament_map", new ConfigOptionInts({1, 2})); + CHECK_THAT(estimate(config, 2, 0.2, 5., WipeTowerType::Type1).depth - same_nozzle, WithinAbs(3., 1e-4)); +} + +TEST_CASE("The tower is sized for the first layer when it is the thinnest", "[WipeTowerEstimate]") { + // Both planners reserve the worst layer: a 0.28 mm print with a 0.2 mm first layer needs + // the 0.2 mm depth, while a thicker first layer changes nothing. + DynamicPrintConfig config = make_config(); + const double at_thinnest = estimate(config, 3, 0.2, 5.).depth; + CHECK_THAT(estimate(config, 3, 0.28, 5.).depth, WithinAbs(at_thinnest, 1e-9)); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.3)); + CHECK(estimate(config, 3, 0.28, 5.).depth < at_thinnest); +} + +TEST_CASE("Object height sets the stability floor and the auto brim", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + // Two filaments purge once: 10 mm, lifted to the 20 mm floor of a 100 mm tower. + CHECK_THAT(estimate(config, 2, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(-1.)); + const double auto_brim = WipeTower::get_auto_brim_by_height(50.f); + CHECK_THAT(estimate(config, 2, 0.2, 50.).brim_width, WithinAbs(printed_brim(auto_brim, WipeTowerType::Type2), 1e-6)); + CHECK_THAT(estimate(config, 2, 0.2, 50., WipeTowerType::Type1).brim_width, WithinAbs(printed_brim(auto_brim, WipeTowerType::Type1), 1e-6)); +} + +TEST_CASE("A single filament only gets a tower when one is printed anyway", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 0, 0.2, 100.).width, WithinAbs(0., 1e-9)); + + // Wrapping detection prints a tower on the first layers whatever the filament count: the + // Type1 planner's fixed 10 mm, the stability floor otherwise. + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(true)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100., WipeTowerType::Type1).depth, WithinAbs(WipeTower::get_wrapping_detection_depth(), 1e-9)); + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); + + // A raft is not one of them: normalize_fdm_2 clears enable_prime_tower for a plate that + // purges one filament unless smooth timelapse or wrapping detection is on, so a raft + // alone leaves no tower to reserve for. + config.set_key_value("raft_layers", new ConfigOptionInt(3)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); + config.set_key_value("raft_layers", new ConfigOptionInt(0)); + + config.set_deserialize_strict("timelapse_type", "1"); + // A tower printed with no tool change is exactly the planner's idle depth: there is + // nothing to purge, and WipeTower2 sizes it at the stability floor. + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 5.).depth, WithinAbs(WipeTower::get_limit_depth_by_height(5.f), 1e-9)); +} + +TEST_CASE("A tool change reserves a tower even with nothing to purge", "[WipeTowerEstimate]") { + // The purge volumes are configurable down to zero, but the tool changes are still printed + // on the tower and both planners still floor it - so the estimate has to floor it too. + // Type1 plans per filament and already reserves one; Type2 has only the volume to go on. + const double height = GENERATE(5., 100.); + const float floor = WipeTower::get_limit_depth_by_height(float(height)); + const char *wall = GENERATE("rectangle", "rib"); + DynamicPrintConfig config = make_config(wall); + config.set_key_value("prime_volume", new ConfigOptionFloat(0.)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({0.})); + + CHECK(estimate(config, 3, 0.2, height, WipeTowerType::Type2).depth >= floor); + CHECK(estimate(config, 3, 0.2, height, WipeTowerType::Type1).depth >= floor); + // Still nothing for a lone filament with no other reason. + CHECK_THAT(estimate(config, 1, 0.2, height, WipeTowerType::Type2).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, height, WipeTowerType::Type1).depth, WithinAbs(0., 1e-9)); +} + +TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowerEstimate]") { + // A wall type may only change the shape of the tower, never whether one is reserved: + // reporting no tower for one that is built collapses the validation hull to a point. + const double height = GENERATE(5., 100.); + DynamicPrintConfig rect = make_config(); + DynamicPrintConfig rib = make_config("rib"); + + // No tool change and nothing else that prints a tower - neither wall type reserves one. + CHECK_THAT(estimate(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + + // Not even on a dual-nozzle printer, where a lone filament still needs no purge. + rect.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + rib.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + CHECK_THAT(estimate(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + + // With a tool change both reserve one, and both respect the stability floor. + CHECK(estimate(rect, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate(rib, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); +} + +TEST_CASE("A rib wall squares the tower and caps the rib width", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config("rib"); + // sqrt(200 / 0.2) = 31.62 mm square, plus the 8 mm rib bulge along the diagonal. + const double body = std::sqrt(1000.); + WipeTowerFootprint fp = estimate(config, 3, 0.2, 5.); + CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + body, 1e-5)); + CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); + // The extra rib length runs along the diagonal and grows the footprint by its projection. + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(4.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs((8. + 4.) / std::sqrt(2.) + body, 1e-5)); + // A tiny tower caps the rib width at half its depth: 5 mm body, 2.5 mm rib. + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); + config.set_key_value("prime_volume", new ConfigOptionFloat(5.)); + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-5)); +} + +TEST_CASE("Every wall and tower type is read the same from a preset and a static config", "[WipeTowerEstimate]") { + // The GUI, arrange and the CLI pass a DynamicPrintConfig whose enums are + // ConfigOptionEnumGeneric; Print passes a static config whose enums are ConfigOptionEnum<T>. + // Both the wall type and the planner selection are read by value, so both give the same shape. + const char *wall_type = GENERATE("rectangle", "cone", "rib"); + const char *tower_type = GENERATE("type1", "type2"); + DynamicPrintConfig preset = make_config(wall_type); + preset.set_deserialize_strict("wipe_tower_type", tower_type); + REQUIRE(dynamic_cast<const ConfigOptionEnumGeneric *>(preset.option("wipe_tower_wall_type")) != nullptr); + + FullPrintConfig static_config; + static_config.apply(preset, true); + REQUIRE(static_config.wipe_tower_wall_type.serialize() == wall_type); + REQUIRE(static_config.wipe_tower_type.serialize() == tower_type); + + const WipeTowerType type = resolve_wipe_tower_type(preset); + CHECK(type == (std::string(tower_type) == "type1" ? WipeTowerType::Type1 : WipeTowerType::Type2)); + CHECK(resolve_wipe_tower_type(static_config) == type); + + // Three filaments purge twice per layer on a 5 mm object. + const WipeTowerFootprint fp = estimate(preset, 3, 0.2, 5., type); + const WipeTowerFootprint from_static = estimate(static_config, 3, 0.2, 5., type); + CHECK(fp.depth > 0.); + if (std::string(wall_type) == "rib") + CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); + else + CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); + CHECK_THAT(from_static.width, WithinAbs(fp.width, 1e-9)); + CHECK_THAT(from_static.depth, WithinAbs(fp.depth, 1e-9)); + CHECK_THAT(from_static.brim_width, WithinAbs(fp.brim_width, 1e-9)); + + // Smooth timelapse is the other enum the estimate reads: a lone filament gets a tower + // through both storages too. + preset.set_deserialize_strict("timelapse_type", "1"); + static_config.apply(preset, true); + CHECK(estimate(preset, 1, 0.2, 5., type).depth > 0.); + CHECK(estimate(static_config, 1, 0.2, 5., type).depth > 0.); +} + +TEST_CASE("The first-layer outline bulges only for a Type2 cone wall", "[WipeTowerEstimate]") { + // Read off a preset-shaped config, whose enums are ConfigOptionEnumGeneric: a cast to + // ConfigOptionEnum<T> sees no wall type there and would never find the cone. + DynamicPrintConfig config = make_config("cone"); + config.set_key_value("wipe_tower_cone_angle", new ConfigOptionFloat(25.)); + REQUIRE(dynamic_cast<const ConfigOptionEnumGeneric *>(config.option("wipe_tower_wall_type")) != nullptr); + const Polygon box = Polygon::new_scale({{0., 0.}, {35., 0.}, {35., 20.}, {0., 20.}}); + auto is_box = [&box](const Polygon &outline) { return diff(Polygons{outline}, Polygons{box}).empty(); }; + + // A 25-degree cone on a 100 mm tower has a 22 mm base radius, past the 10 mm half-depth. + const Polygon cone = estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type2, 35., 20., 100.); + CHECK(unscaled(get_extents(cone).max.y()) > 20. + 1.); + CHECK(diff(Polygons{box}, Polygons{cone}).empty()); + // Type1 ignores the cone option, and the other wall types have no cone. + CHECK(is_box(estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type1, 35., 20., 100.))); + for (const char *wall_type : {"rectangle", "rib"}) { + config.set_deserialize_strict("wipe_tower_wall_type", wall_type); + CHECK(is_box(estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type2, 35., 20., 100.))); + } + // The static config Print holds gives the same outline. + config.set_deserialize_strict("wipe_tower_wall_type", "cone"); + FullPrintConfig static_config; + static_config.apply(config, true); + const Polygon from_static = estimate_wipe_tower_first_layer_outline(static_config, WipeTowerType::Type2, 35., 20., 100.); + CHECK(from_static.points == cone.points); +} + +TEST_CASE("A Bambu Lab printer always gets the Type1 planner", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + config.set_deserialize_strict("wipe_tower_type", "type2"); + config.set_key_value("printer_model", new ConfigOptionString("Bambu Lab X1 Carbon")); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type1); + config.set_key_value("printer_model", new ConfigOptionString("Voron 2.4")); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type2); + config.erase("wipe_tower_type"); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type2); +} + +TEST_CASE("A dual nozzle purges every filament plus the filament change", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + config.set_key_value("filament_change_length", new ConfigOptionFloats({10., 10.})); + config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); + // Two purges of 100 mm3 plus one 10 mm filament change: (200 + 10 * pi * 1.75^2 / 4) / (0.2 * 50). + const double change_volume = 10. * PI * 1.75 * 1.75 / 4.; + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); +} + +TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTowerEstimate]") { + // Both keys default to true, so the shipped configuration purges the flush volumes rather + // than the prime volume, with no infill gap on top - the flush volumes already hold it. + DynamicPrintConfig config = preset_shaped_defaults(); + REQUIRE(config.opt_bool("purge_in_prime_tower")); + REQUIRE(config.opt_bool("single_extruder_multi_material")); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(50.)); + config.set_deserialize_strict("wipe_tower_wall_type", "rectangle"); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4})); + + const double flush_volume = WipeTower2::estimate_semm_flush_volume(config, 2); + const double expected = std::max(double(WipeTower::get_limit_depth_by_height(5.f)), flush_volume / (0.2 * 50.)); + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs(expected, 1e-6)); +} + +TEST_CASE("A config missing a tower key falls back to that key's default", "[WipeTowerEstimate]") { + // The signature takes any ConfigBase: an absent key must read as its declared default. + const DynamicPrintConfig full = make_config(); + DynamicPrintConfig partial = full; + partial.erase("wipe_tower_extra_spacing"); + REQUIRE(partial.option("wipe_tower_extra_spacing") == nullptr); + + DynamicPrintConfig defaulted = full; + defaulted.set_key_value("wipe_tower_extra_spacing", + print_config_def.get("wipe_tower_extra_spacing")->default_value->clone()); + CHECK_THAT(estimate(partial, 3, 0.2, 5.).depth, WithinAbs(estimate(defaulted, 3, 0.2, 5.).depth, 1e-9)); +} diff --git a/tests/slic3rutils/CMakeLists.txt b/tests/slic3rutils/CMakeLists.txt index ebbd62b820..2ab78f56de 100644 --- a/tests/slic3rutils/CMakeLists.txt +++ b/tests/slic3rutils/CMakeLists.txt @@ -1,6 +1,8 @@ get_filename_component(_TEST_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests_main.cpp + test_bambu_filament_ids.cpp + test_creality_cfs_match.cpp test_dev_mapping.cpp test_filament_bitmap_utils.cpp test_network_versions.cpp diff --git a/tests/slic3rutils/test_bambu_filament_ids.cpp b/tests/slic3rutils/test_bambu_filament_ids.cpp new file mode 100644 index 0000000000..5f6215d7ca --- /dev/null +++ b/tests/slic3rutils/test_bambu_filament_ids.cpp @@ -0,0 +1,81 @@ +#include <catch2/catch_all.hpp> +#include <boost/filesystem.hpp> +#include <boost/nowide/fstream.hpp> +#include <nlohmann/json.hpp> + +#include "libslic3r/Utils.hpp" +#include "slic3r/Utils/BBLPrinterAgent.hpp" +#include "slic3r/Utils/OrcaPrinterAgent.hpp" + +using json = nlohmann::json; +using namespace Slic3r; + +namespace { + +// Point resources_dir() at the repo's own tree for the lifetime of a test and restore it +// afterwards, mirroring ScopedResourcesDir (which only ever makes a throwaway directory). +// PROFILES_DIR is <repo>/resources/profiles; the map lives in <repo>/resources/printers. +struct ScopedRepoResourcesDir +{ + std::string previous{resources_dir()}; + + ScopedRepoResourcesDir() { set_resources_dir(boost::filesystem::path(PROFILES_DIR).parent_path().string()); } + ~ScopedRepoResourcesDir() { set_resources_dir(previous); } + + ScopedRepoResourcesDir(const ScopedRepoResourcesDir&) = delete; + ScopedRepoResourcesDir& operator=(const ScopedRepoResourcesDir&) = delete; +}; + +std::string orca_id_of(const std::string& bambu_id) +{ + boost::nowide::ifstream file(resources_dir() + "/printers/bambu_filament_ids.json"); + json doc; + file >> doc; + for (const auto& [orca_id, row] : doc["filaments"].items()) + if (row["bambu_id"] == bambu_id) + return orca_id; + FAIL("no map row for " << bambu_id); + return {}; +} + +} // namespace + +TEST_CASE("Bambu filament id map is one-to-one and leaves unmapped ids alone", "[BambuFilamentIds]") +{ + const ScopedRepoResourcesDir repo_resources; + const BBLPrinterAgent bbl; + const std::string abs = orca_id_of("GFB00"); // Bambu ABS + REQUIRE(abs.rfind("OF", 0) == 0); + CHECK(bbl.from_orca_filament_id(abs) == "GFB00"); + CHECK(bbl.to_orca_filament_id("GFB00") == abs); + CHECK(bbl.from_orca_filament_id("OFnotarow") == "OFnotarow"); + CHECK(bbl.to_orca_filament_id("GFZZ99") == "GFZZ99"); // Bambu id we do not ship + CHECK(bbl.to_orca_filament_id("P1234567") == "P1234567"); // user root + CHECK(bbl.from_orca_filament_id("") == ""); + + // An agent whose printers already speak our ids inherits IPrinterAgent's identity default. + const OrcaPrinterAgent other{""}; + CHECK(other.from_orca_filament_id(abs) == abs); + CHECK(other.to_orca_filament_id("GFB00") == "GFB00"); +} + +TEST_CASE("Payload rewrite covers nested trays, calibration lists and mapping info", "[BambuFilamentIds]") +{ + const ScopedRepoResourcesDir repo_resources; + const std::string abs = orca_id_of("GFB00"), pla = orca_id_of("GFA00"); + const std::string status = + R"({"print":{"ams":{"ams":[{"tray":[{"tray_info_idx":"GFB00"},{"tray_info_idx":"GFZZ99"}]}]},)" + R"("vt_tray":{"tray_info_idx":"GFA00"},"filaments":[{"filament_id":"GFA00","setting_id":"GFB00"}]}})"; + json inbound = json::parse(BBLPrinterAgent::to_orca_payload(status)); + CHECK(inbound["print"]["ams"]["ams"][0]["tray"][0]["tray_info_idx"] == abs); + CHECK(inbound["print"]["ams"]["ams"][0]["tray"][1]["tray_info_idx"] == "GFZZ99"); // no row: untouched + CHECK(inbound["print"]["vt_tray"]["tray_info_idx"] == pla); + CHECK(inbound["print"]["filaments"][0]["filament_id"] == pla); + CHECK(inbound["print"]["filaments"][0]["setting_id"] == "GFB00"); // not an id key: has a map row but must stay put + CHECK(json::parse(BBLPrinterAgent::from_orca_payload(inbound.dump())) == json::parse(status)); // round trip + + const std::string mapping = R"([{"ams":0,"filamentId":")" + abs + R"(","filamentType":"ABS"}])"; + CHECK(BBLPrinterAgent::from_orca_payload(mapping) == R"([{"ams":0,"filamentId":"GFB00","filamentType":"ABS"}])"); + CHECK(BBLPrinterAgent::from_orca_payload("not json") == "not json"); + CHECK(BBLPrinterAgent::from_orca_payload(R"({"print":{"command":"pushall"}})") == R"({"print":{"command":"pushall"}})"); +} diff --git a/tests/slic3rutils/test_creality_cfs_match.cpp b/tests/slic3rutils/test_creality_cfs_match.cpp new file mode 100644 index 0000000000..06606684b7 --- /dev/null +++ b/tests/slic3rutils/test_creality_cfs_match.cpp @@ -0,0 +1,141 @@ +#include <catch2/catch_test_macros.hpp> + +#include "libslic3r/Preset.hpp" +#include "libslic3r/PresetBundle.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "slic3r/Utils/CrealityPrintAgent.hpp" + +using namespace Slic3r; + +namespace { + +// A standalone filament collection, built the same way PresetBundle builds its own, so the +// CFS matcher can be exercised without loading the shipped profiles or touching a printer. +struct FilamentTestCollection : public PresetCollection +{ + FilamentTestCollection() + : PresetCollection(Preset::TYPE_FILAMENT, Preset::filament_options(), + static_cast<const PrintRegionConfig &>(FullPrintConfig::defaults())) + {} +}; + +struct FilamentSpec +{ + const char *name; + const char *filament_id; + const char *filament_type; + bool is_library = false; // belongs to the Orca Filament Library, not the printer vendor + bool is_system = true; +}; + +// Load the specs into the collection, then stamp the fields the matcher reads. Done in a second +// pass because load_preset() keeps m_presets sorted, so a reference taken during the first pass +// can be left dangling by a later load. +void populate(PresetCollection &filaments, const std::vector<FilamentSpec> &specs, + const VendorProfile &vendor, const VendorProfile &library) +{ + for (const FilamentSpec &spec : specs) { + DynamicPrintConfig config(filaments.default_preset().config); + config.option<ConfigOptionStrings>("filament_type", true)->values = {spec.filament_type}; + filaments.load_preset(std::string(), spec.name, config, /*select=*/false); + } + for (auto it = filaments.begin(); it != filaments.end(); ++it) { + const auto spec = std::find_if(specs.begin(), specs.end(), + [&](const FilamentSpec &s) { return it->name == s.name; }); + if (spec == specs.end()) + continue; + it->filament_id = spec->filament_id; + it->vendor = spec->is_library ? &library : &vendor; + it->is_system = spec->is_system; + it->is_default = false; + it->is_visible = true; + it->is_compatible = true; + } +} + +// What a stock K2 with a 0.4 nozzle sees after the filament_id rework: the vendor's plain generics +// carry no "Creality" in their name (they are "Generic <material> @<scope>"), while the subtype +// variants that do keep a vendor scope are separate products with their own filament_ids. +const std::vector<FilamentSpec> k2_stock_nozzle{ + {"AliZ PLA @System", "ALIZ-PLA", "PLA", /*is_library=*/true}, + {"Generic PETG @K2-all", "PETG-GENERIC", "PETG"}, + {"Generic PLA @K2-all", "PLA-GENERIC", "PLA"}, + {"Generic PLA High Speed @Creality K2-all","PLA-HS", "PLA"}, + {"Generic PLA Matte @Creality K2-all", "PLA-MATTE", "PLA"}, + {"Generic PLA Silk @Creality K2-all", "PLA-SILK", "PLA"}, + {"Hyper PLA @K2-all", "PLA-HYPER", "PLA"}, +}; + +std::string match(const std::vector<FilamentSpec> &specs, const std::string &spool_vendor, + const std::string &spool_name, const std::string &base_type) +{ + FilamentTestCollection filaments; + VendorProfile vendor("Creality"); + VendorProfile library(PresetBundle::ORCA_FILAMENT_LIBRARY); + vendor.name = "Creality"; + library.name = PresetBundle::ORCA_FILAMENT_LIBRARY; + populate(filaments, specs, vendor, library); + return CrealityPrintAgent::match_filament_preset(filaments, spool_vendor, spool_name, base_type); +} + +} // namespace + +// Orca: a CFS spool that names no recognised product must map to the vendor's plain generic. The +// subtype variants ("High Speed", "Matte", "Silk") score just as well on vendor alone, and since +// each is its own product with its own filament_id, letting one of them win sends the printer the +// id of a filament the user does not have loaded. +TEST_CASE("An unbranded CFS spool maps to the vendor's plain generic, not a subtype", "[CFS][Creality]") +{ + CHECK(match(k2_stock_nozzle, "Creality", "", "PLA") == "PLA-GENERIC"); +} + +// Orca: the vendor bonus reads the preset's owning VendorProfile. "Generic PETG @K2-all" does not +// repeat "Creality" anywhere in its name, so a name based vendor test scored nothing for it and the +// spool fell through to the collection wide first-of-type - an unrelated third party PETG. +TEST_CASE("A CFS spool matches its vendor's presets even when the name omits the vendor", "[CFS][Creality]") +{ + CHECK(match(k2_stock_nozzle, "Creality", "", "PETG") == "PETG-GENERIC"); +} + +TEST_CASE("A branded CFS spool still beats the generic", "[CFS][Creality]") +{ + CHECK(match(k2_stock_nozzle, "Creality", "Hyper PLA", "PLA") == "PLA-HYPER"); +} + +// Orca: the specificity penalty must not stop a spool that genuinely asks for a subtype from +// getting it - only unclaimed qualifiers are penalised. +TEST_CASE("A CFS spool that names a subtype gets that subtype", "[CFS][Creality]") +{ + CHECK(match(k2_stock_nozzle, "Creality", "Generic PLA Silk", "PLA") == "PLA-SILK"); + CHECK(match(k2_stock_nozzle, "Creality", "Generic PLA Matte", "PLA") == "PLA-MATTE"); +} + +// Orca: a third party spool matches no preset by brand or vendor, so it falls back to the first +// visible preset of the same type rather than returning nothing. Which one that is depends on the +// collection's ordering, so only the type is pinned here - what matters is that a PLA spool never +// comes back empty and never comes back as another material. +TEST_CASE("A CFS spool from an unknown vendor falls back to a preset of the same type", "[CFS][Creality]") +{ + const std::string matched = match(k2_stock_nozzle, "SomeOtherBrand", "", "PLA"); + REQUIRE_FALSE(matched.empty()); + const auto spec = std::find_if(k2_stock_nozzle.begin(), k2_stock_nozzle.end(), + [&](const FilamentSpec &s) { return matched == s.filament_id; }); + REQUIRE(spec != k2_stock_nozzle.end()); + CHECK(std::string(spec->filament_type) == "PLA"); +} + + +// Orca: Creality's bundle also ships third party filaments ("eSUN PLA+ @K2 Plus-all"). Those carry +// Creality's VendorProfile but name their real brand, so the vendor bonus has to accept a name +// match as well as a profile match - otherwise an eSUN spool stops matching its own preset. +TEST_CASE("A third party spool matches its preset inside the printer vendor's bundle", "[CFS][Creality]") +{ + const std::vector<FilamentSpec> with_third_party{ + {"Generic PLA @K2-all", "PLA-GENERIC", "PLA"}, + {"eSUN PLA+ @K2 Plus-all", "ESUN-PLA", "PLA"}, // shipped by Creality, branded eSUN + }; + CHECK(match(with_third_party, "eSUN", "", "PLA") == "ESUN-PLA"); + // ... and a Creality spool still prefers Creality's own generic over the eSUN preset, which + // carries Creality's profile too but adds a brand word the spool never claimed. + CHECK(match(with_third_party, "Creality", "", "PLA") == "PLA-GENERIC"); +}